Introducing Dragonfly Cloud! Learn More

Question: What is MongoDB vertical partitioning?

Answer

MongoDB, a NoSQL database, is best known for its horizontal scaling capabilities, often referred to as sharding. However, when discussing MongoDB and the concept of 'vertical partitioning,' it's important to clarify what is traditionally meant by this term in the context of databases and how it might apply or not apply to MongoDB.

Vertical partitioning in traditional relational database management systems (RDBMS) involves splitting a table into smaller tables where each new table contains a subset of the columns from the original table. Each of these new tables holds part of the data based on the columnar division, ideally organized in a way that related data that is frequently accessed together remains in the same table, thereby improving performance and manageability.

MongoDB, however, does not follow the same structural conventions as relational databases. Instead of tables, MongoDB uses collections, which store documents. These documents are JSON-like field-value pairs. MongoDB's schema-less nature means that even within the same collection, documents can have different fields.

The equivalent concept of vertical partitioning in MongoDB would involve splitting a document into smaller documents, potentially across different collections, each holding part of the original document's data. However, this isn't a built-in feature or a commonly recommended practice in MongoDB. Instead, MongoDB encourages effective schema design and indexing to optimize query performance. For instance, embedding related data in a single document can reduce the need for joins and improve read performance, whereas referencing is used to avoid duplication and manage large arrays or deeply nested objects.

If you find yourself needing to manually 'partition' documents vertically in MongoDB due to large document sizes or performance issues, it may be worth reconsidering your schema design or utilizing MongoDB's built-in sharding feature for horizontal partitioning, which distributes collections across multiple nodes based on a specified shard key. This approach is more in line with MongoDB's strengths and intended use cases.

In summary, while vertical partitioning is a concept from relational databases that doesn't directly translate to MongoDB, understanding your application's data access patterns and effectively designing your schema can address the underlying needs that vertical partitioning aims to solve in traditional databases.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book

Start building today 

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.