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