Implementing Data Modeling Patterns

1. Using Attribute Pattern

AspectDetail
UseMany similar fields differing per row
ModelArray of {key, value} pairs
BenefitIndex one path instead of many columns
MongoDB exampleattrs: [{k:"color",v:"red"},{k:"size","M"}]

2. Using Extended Reference Pattern

AspectDetail
UseEmbed frequently-accessed fields from referenced entity
Trade-offRead perf vs sync complexity
Exampleorder.customer_name + customer_id

3. Using Subset Pattern

AspectDetail
UseDocument grows unbounded (large arrays)
SolutionKeep recent N inline; rest in separate collection
BenefitLimit doc size, faster reads of common slice
Examplemovie.recent_reviews (10) + reviews collection

4. Using Computed Pattern

AspectDetail
UseRead-heavy derived value (e.g., averages, totals)
SolutionPre-compute & store; refresh on write or periodically
Trade-offRead perf vs write cost / staleness

5. Using Bucket Pattern

AspectDetail
UseHigh-frequency time-series writes
SolutionGroup N points per parent doc (bucket)
BenefitFewer documents, better compression
ExampleIoT readings — 1 doc per hour with array of samples

6. Using Outlier Pattern

AspectDetail
UseFew documents dwarf the rest
SolutionFlag outlier, move overflow data to separate doc
ExampleMost books have < 100 reviews; bestsellers have 100k

7. Using Schema Versioning Pattern

AspectDetail
UseSchema-less DB with evolving structure
SolutionEmbed schema_version field
MigrationLazy: upgrade on read; or batch background

8. Using Polymorphic Pattern

AspectDetail
UseSimilar entities with varying fields in one collection
Solutiontype field discriminator + type-specific fields
Examplevehicles: cars + trucks + motorcycles with shared base

9. Using Approximation Pattern

AspectDetail
UseExact count not needed (page views, likes)
SolutionIncrement counter only every Nth event
BenefitReduces write load N×
AlternativesHyperLogLog for cardinality, Bloom filter for membership

10. Using Tree Pattern

ModelUse
Parent referenceSimplest; recursive lookup
Child references (array)Fast children query
Array of ancestorsFast ancestor query
Materialized pathString-based path traversal
Nested setRead-heavy, complex trees