Добрый день.Я хочу разработать схему данных для хранения продуктов с различными атрибутами в mongodb, но я не знаю, как это сделать правильно, сохраняя при этом гибкость и скорость.Например, каждый продукт может иметь марку и требовать ссылки на него, а также сортировки и отображения возможных значений.Кроме того, можно, например, переименовать марку.
Я могу хранить данные следующим образом:
Схема 2
[
{
name: "t-shirt",
brand: "SampleBrand"
},
{
name: "t-shirt",
brand: "SampleBrand2"
}
]
Тогда, если мне понадобится получить всю марку, придется пройти всю коллекцию документов.Кроме того, если я хочу переименовать «SampleBrand» в «SampleBrand84», мне нужно будет просмотреть всю коллекцию.Я думаю, что это очень много времени.
Другой вариант - использовать ссылки на таблицу с брендами.
Схема 2
Бренды [
{_id: 1, имя: "SampleBrand"},
{_id: 2, имя: "SampleBrand2"}]
Продукты [
{
имя: "футболка",
марка: 1
},
{
имя: "футболка",
бренд: 2
}]
Тогда я могу изменить название бренда в одном месте, чтобы изменить его везде.Но теперь при каждом запросе к продукту мне нужно выполнить поиск в $, чтобы получить название бренда, а увеличение количества атрибутов продукта значительно увеличит нагрузку на mongo.
Я также могу использовать схему2 таблицы, чтобы получить копию в виде схемы 1 и получить плюсы обоих вариантов, но тогда непонятно, как правильно их синхронизировать друг с другом.
Посоветуйте, как правильно это сделать?
Также интересует возможность использования нескольких языков и аналога модели EAV (из реляционных баз данных), то есть, когда может быть неорганизованное количество атрибутов с разными именами и определенный список свойств (еслиНужно напишу пример)
Пожалуйста, поделитесь своим опытом проектирования данных в mongodb.Я буду очень признателен вам, если вы аргументируете свой ответ.