Unit 08 - Scaling Data Model in MongoDB
Optimum Efficiency
- query result time
- memory usage
- cpu usage
- storage
Unbounded Growth
- unbounded documents are documents that grow indefinitely
{
"title": "Basics of MongoDB",
"url": "https://www.mongodbbasics.com",
"text": "Let’s learn the basics of MongoDB!",
"comments": [
{
"name": "John Smith",
"created_on": ISODate("2022-07-21T11:00:00Z"),
"comment": "I learned a lot!"
},
{
"name": "Jane Doe",
"created_on": ISODate("2022-07-22T11:00:00Z"),
"comment": "Looks great!"
}
]
}
As the number of comments grows, the document size will increase, which can impact read and write performance.
For this case, use referencing to store comments in a separate collection.
{
"blog_entry_id": 1,
"name": "John Smith",
"created_on": ISODate("2022-07-21T11:00:00Z"),
"comment": "I learned a lot!"
}
Avoid
- the maximum document size limit of 16MB
- poor query performance
- poor write performance
- high memory usage
Using Altas Tools for Schema Analysis
Schema design patterns are guidelines for modeling data in MongoDB
常見的模式反模式
- 巨型數組 (Massive arrays): 使用過大的數組可能導致性能下降和操作複雜性增加。
- 大量集合 (Massive number of collections): 過多的集合可能會使數據管理變得困難,並影響查詢性能。
- 臃腫文檔 (Bloated documents): 文檔過大會導致存取速度變慢,並增加存儲需求。
- 不必要的索引 (Unnecessary indexes): 多餘的索引會佔用額外空間並影響寫入性能。
- 沒有索引的查詢 (Queries without indexes): 缺乏索引的查詢會使得資料檢索變得緩慢。
- 一起訪問的資料,但存儲在不同集合 (Data that’s accessed together, but stored in different collections):
常常需要一起存取的數據卻分散在不同集合中,會增加查詢的複雜度。