MongoDB Schema Design - Many small documents or fewer large documents?

前端 未结 3 1834
时光说笑
时光说笑 2020-12-04 06:36

Background
I\'m prototyping a conversion from our RDBMS database to MongoDB. While denormalizing, it seems as if I have two choices, one which leads to

3条回答
  •  旧时难觅i
    2020-12-04 07:02

    According to MongoDB's own documentation, it sounds like it's designed for many small documents.

    From Performance Best Practices for MongoDB:

    The maximum size for documents in MongoDB is 16 MB. In practice most documents are a few kilobytes or less. Consider documents more like rows in a table than the tables themselves. Rather than maintaining lists of records in a single document, instead make each record a document.

    From 6 Rules of Thumb for MongoDB Schema Design: Part 1:

    Modeling One-to-Few

    An example of “one-to-few” might be the addresses for a person. This is a good use case for embedding – you’d put the addresses in an array inside of your Person object.

    One-to-Many

    An example of “one-to-many” might be parts for a product in a replacement parts ordering system. Each product may have up to several hundred replacement parts, but never more than a couple thousand or so. This is a good use case for referencing – you’d put the ObjectIDs of the parts in an array in product document.

    One-to-Squillions

    An example of “one-to-squillions” might be an event logging system that collects log messages for different machines. Any given host could generate enough messages to overflow the 16 MB document size, even if all you stored in the array was the ObjectID. This is the classic use case for “parent-referencing” – you’d have a document for the host, and then store the ObjectID of the host in the documents for the log messages.

提交回复
热议问题