YourDesire
@YourDesire
Я вообще по образованию бухгалтер...

БД Интернет-Магазина на MongoDB. Автор данной статьи противоречит себе или я чего-то не понимаю?

Здравствуйте.
Изучаю 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.
  • Вопрос задан
  • 1358 просмотров
Решения вопроса 1
mazhekin
@mazhekin
Frontend, Backend Web Developer
Базы данных, языки программирования, фреймворки не надо изучать по статьям. Статьи - это только подсказки, предположения, предложения по улучшению, попытки обсудить проблему. Там обрывочные знания. Для нормального обучения пройдите курс по монге, например, на pluralsight.com. Тогда вы получите полную строгую и систематизированную систему у себя в голове, что можно делать, а чего нельзя. Вы будете видеть и осведомлены о всех возможностях изучаемого предмета. И потом уже смотрите статьи в интернете, причем после курсов и немного практики по ним, вы начнете понимать даже, что в интернете попадается много статей, с откровенной туфтой, сбивающей с толку, от людей не изучавших нормально предмет, которые от недостатка знаний и нормального обучения выдумывают в статьях псевдотеории, инновации, велосипеды, костыли и конструкции построенные на обрывочных знаниях. Зачастую авторы пишут статьи, чтобы самим разобраться в вопросе и получить подсказки из комментариев. Сам так делаю иногда.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы