Я хотел бы оценить документ db, вероятно, dong монго в веб-магазине ASP.Net MVC.
Немного рассуждений в начале:
Существует около 2 миллионов продуктов.
Модель продукта была бы довольно плохой для rdbms, поскольку было бы много различных видов продуктов с уникальными атрибутами.
Например, были бы книги с именами isbn, авторами, заголовками, страницами и т. Д., А также DVD-диски со временем воспроизведения, режиссерами, артистами и т. Д. И еще немало типов.
В итоге у меня будет около 9 различных продуктов с общим числом столбцов (считая общие столбцы, такие как заголовок только один раз) примерно от 70 до 100, тогда как каждый отдельный продукт имеет максимум 15 столбцов.
В СУРБД обычно используются три способа:
Модель EAV, которая имела бы довольно плохие характеристики производительности и делала бы ее либо непрактичной, либо работала бы еще хуже, если бы я хотела отобразить автора книги в списке различных продуктов (например, стартовой страницы, рекомендуемых продуктов и т. Д.) .
Не обращайте внимания на количество столбцов и поместите все это в таблицу продуктов: хотя я имею дело с базами данных несколько большего размера (по строкам), у меня нет опыта работы с таблицами с более чем 20 столбцами, поскольку предполагается производительность, но я думаю, 100 столбцов будут иметь некоторые последствия.
Создайте таблицу для каждого типа продукта: мне лично не нравится этот подход, поскольку он усложняет все остальное.
C # Водитель / Классы:
Я бы хотел использовать драйвер NoRM, и до сих пор, я думаю, я попытаюсь создать dto продукта, который содержит все свойства (сгруппированные в классы детализации, такие как детали книги, за исключением тех свойств, которые должны отображаться в представлениях списка так далее.).
В приложении я буду использовать BookBehavior / DvdBehaviour, которые являются обертками вокруг продукта, но раскрывают только замечательные свойства.
Мои вопросы сейчас:
Допустимы ли мои проблемы с производительностью при использовании подхода с несколькими столбцами?
Я что-то упустил из виду, и есть намного лучший способ сделать это в СУБД?
Достаточно ли стабильно MongoDb в Windows?
Имеет ли смысл мой подход с различными обертками поведения?