Здравствуйте.
Изучаю MongoDB, строя с его использованием интернет-магазин.
На просторах интернета нашел интересную статью в блоге MongoDB на подходящую тему:
https://dzone.com/articles/product-catalog-part-1-...
Согласно статье, автор разделил товар и его варианты, так, что товар хранится в коллекции, скажем, `products`, а его варианты - в `variants`.
Обосновал он (автор) это так:
One option is to store an item and all its variants together in a single document. This approach has the advantage of being able to retrieve an item and all variants in a single query. However, it is not the best approach in all cases. It is an important best practice to avoid unbounded document growth. If the number of variants and their associated data is small, it may make sense to store them in the item document.
Another option is to create a separate variant data model that can be referenced relative to the primary item:
В частности, меня зацепила вот эта фраза:
It is an important best practice to avoid unbounded document growth.
Здесь автор имеет ввиду, если я его правильно понял, что нужно предотвратить неконтролируемый рост документа.
Собственно, на этом этапе вопросов нет. Они возникают далее.
Далее, автор предлагает создать коллекцию `summaries`, в которой будет храниться вся необходимая (например, для поиска) информация о товаре, в том числе и его варианты:
These documents contain all of the information we need to do fast lookups of items in our catalog based on various search facets.
{
“_id”: “30671”,
“title”: “Evening Platform Pumps”,
“department”: “Shoes”,
“Category”: “Women/Shoes/Pumps”,
“price”: 149.95,
“attrs”: [“brand”: “Calvin Klein”, …],
“sattrs”: [“style”: ”Designer”, …],
“vars”: [
{
“sku”: “93284847362823”,
“attrs”: [{“size”: 6.0}, {“color”: “red”}, …],
“sattrs”: [{“width”: 8.0}, {“heelHeight”: 5.0}, …],
}, … //Many more SKUs
]
}
Собственно, именно `summaries` вызывает у меня больше всего вопросов. Почему в первом случае, автор разделил товар и его варианты, обосновывая это тем, что он хочет предотвратить неконтролируемый рост документа, а во втором случае, в `summaries` он поступает наоборот?
Может я не правильно понял статью, может я еще чего-то не понимаю, я это допускаю, ведь я только начал изучать MongoDB.