Saturday, June 13, 2015

MongoDB Schema Design Rules

MongoDB Schema Design Rules

  1. Always prejoin (embedding) the entities other than trying to join them while querying, which is a common way in RDBMS. In Mongo only way to join at run time is via application logic, which is costly operation and clumsy way in Mongo. 
  2. This strategy also serves the purpose of constraints which are available in RDBMS. The Mantra is pre-join (embedding) at schema level
  3. Even though MongoDB does not have transactions but we can still have atomic operations and can have consistent view of the data using pre-joining (embedding) data.
  4. In case of one to many relationship and when many is very huge then linking of collections in recommended. Also same is recommended for 
    many to many relationship.
  5. Influencers for when to embed and when to link
    •  Frequency of access
      • To reduce the working set size of your application.
    •  Size of items
      • If combined size of the documents is larger than 16MB
      • Atomicity of the data
              Pre-join sample: A Product Catalog record

              {
                sku: "00e8da9b",
                type: "Audio Album",
                title: "A Love Supreme",
                description: "by John Coltrane",
                asin: "B0000A118M",
              
                shipping: {
                  weight: 6,
                  dimensions: {
                    width: 10,
                    height: 10,
                    depth: 1
                  },
                },
              
                pricing: {
                  list: 1200,
                  retail: 1100,
                  savings: 100,
                  pct_savings: 8
                },
              
                details: {
                  title: "A Love Supreme [Original Recording Reissued]",
                  artist: "John Coltrane",
                  genre: [ "Jazz", "General" ],
                      ...
                  tracks: [
                    "A Love Supreme Part I: Acknowledgement",
                    "A Love Supreme Part II - Resolution",
                    "A Love Supreme, Part III: Pursuance",
                    "A Love Supreme, Part IV-Psalm"
                  ],
                },
              }

              No comments:

              Post a Comment