MongoDB Data Modeling
Han Yi
Know your business
Determine your position
2.Data Model
Logical Model
Physical Model
1.Domain Model
?
Master your kits
vs
Core concept: Data as a Document
Why Document ?
-
Humongous support
- DoubleClick, 2007
- 400000 ads/s
- Flexible types for data model
- Key-Value
- List
- Rich document
- Embedded array and document
- ...
Pros vs Cons of document model
-
Pros
- Flexible data model design
- High performance read
- Cons
- Design heavily depends on scenario
- Single document should be no larger than 16mb, no deeper than 100 layers
Data model patterns for a document
-
Normalized
- referenced in different document
- Non-normalized
- nested in single document
- Tree structure
- hybrid pattern
MongoDB prefer
- Non-normalized
Real case
- Fan Out Read
- Fan Out Write
3 Factors of data modeling
- Performance
- Query pattern
- Life cycle of data and growth rate of documents (Application domain)
Sample 1: Date modeling
- BSON Date type is 64 bits signed number
- BSON Date type is UTC time
- Time zone is suggested using additional fields:
var now = new Date();
db.data.save( { date: now,
offset: now.getTimezoneOffset() } );
Sample 2: Monetary data modeling
- Numeric Model
- Decimal format (3.4+)
- IEEE 754-2008: Decimal 128
- Type long (64 bits) + Power factor (older than 3.4)
- Non-numeric Model
- Full value: String
- Approximate value: double
Sample 3: Content query modeling
- $regex
- $text
- Keywords array: multikey index
http://mongoing.com/
MongoDB Data Modeling
By hanyi8000
MongoDB Data Modeling
- 2,064