Схема отлично подходит по двум причинам:
- Мозг, оптимизирующий интуитивность хранения документов
- Разрешает Разреженная матрица и Значение атрибута объекта проблемы с хранением.
Я использовал как SQL, так и No-SQL для производственных приложений в Ruby on Rails. Я не эксперт по базам данных, и я должен признаться, что прибегал к помощи ACID и подобных терминов, поскольку они мне не знакомы.
«Ах, ха! Другой последователь тренда, который ничего не знает, прыгает на последней победе», - скажете вы. Но, на самом деле, я очень доволен своим решением использовать MongoDB в нашем последнем 2-летнем приложении, и вот почему ...
Обратной стороной оптимизирующей мозг интуитивности был мой опыт работы с системой электронной коммерции Magento. Я не хочу разбивать его, потому что в то время он мне очень помог, но он сильно ударил по процессору, пытаясь вычислить атрибуты для каждого продукта. Основной причиной было хранилище данных продукта Entity-Attribute-Value. Решением был кеш или будь проклят.
Основным преимуществом для меня является оптимизация в единственном действительно важном месте - ваш собственный мозг . Многие технологии подвергаются критике за их эффективность в области памяти, процессоров, аппаратного обеспечения и, тем не менее, наличие БД, которая является чрезвычайно интуитивно понятной, приносит свои преимущества. Мы быстро добавили функции в наш код, потому что база данных просто очень похожа на реальный мир, который мы моделируем. Когда я просил клиентов электронной коммерции представить мне свой список продуктов, они, естественно, склонны использовать Excel (например, хранилище таблиц). Первые столбцы просты:
- Наименование товара
- Цена
- Тип продукта (
Тогда это становится сложнее и покрывается заметками, цветовым кодированием и ссылками на другие таблицы (да. Отношения)
- Цвет (только некоторые продукты)
- Размер (X Большой, Большой, Маленький) - только для продуктов 8'9'10, клюшки для гольфа используют другой масштаб
- Цвет 2. Ошейники для кошек имеют два варианта цвета.
- 1039 * Wattage *
- Тип крепления (мужской, женский)
Так что это заканчивается ужасным беспорядком таблиц Excel, которые не имеют никакого смысла для меня и не имеют большого смысла для людей, которые работают с продуктами изо дня в день. Мы бросаем руки в воздух и решаем просмотреть каталог, а потом он попадает в меня! Не было бы замечательно, если бы вы могли хранить данные в том виде, в каком они представлены в каталоге! Просто коллекции записей по каждому продукту, которые просто перечисляют атрибут этого продукта. Затем вы можете выбрать общие атрибуты для индексации для последующего поиска. Конечно, это магазин документов.
Таким образом, хранилища документов хороши, когда у вас есть проблема с разреженной матрицей или объекты, которые изменяют свои атрибуты с течением времени. Прожив в мире без SQL 2 года, я не могу представить себе приложение реального мира, у которого нет этих функций, потому что сам мир похож на хранилище документов.