Итак, я очень старался выяснить, действительно ли NoSQL приносит такую значимость вне автоматического разметки и обработки данных UNSTRUCTURED.
Предполагая, что я могу поместить мои данные STRUCTURED на одной машине или иметь эффективную функцию автоматического создания шрифтов для SQL, какие преимущества предлагают любые варианты NoSQL? Я определил следующее:
-
Основанный на документах (MongoDB, Couchbase и т.д.). Вне его возможностей "автоматического разметки" я с трудом понимаю, в чем преимущество. Связанные объекты очень похожи на соединения SQL, в то время как объекты Embedded значительно раздувают размер документа и вызывают проблему, связанную с репликацией (комментарий может принадлежать как столбцу, так и пользователю, поэтому данные будут избыточными). Кроме того, потеря ACID и транзакций является большим недостатком.
-
Основанный на значении ключа (Redis, Memcached и т.д.). Служит для использования в другом случае, идеально подходит для кеширования, но не для сложных запросов.
-
Columnar (Cassandra, HBase и т.д.). Похоже, что большим преимуществом здесь является то, как данные хранятся на диске и в основном полезны для скоплений, а не для общего использования.
-
График (Neo4j, OrientDB и т.д.). Самое интригующее, использование обоих ребер и узлов делает интересное предложение ценности, но в основном полезно для очень сложных реляционных данных, чем общее использование.
Я вижу преимущества блоков Key-value, Columnar и Graph DB для конкретных случаев использования (кэширование, сопоставление взаимосвязей социальных сетей, агрегации), но не вижу никакой причины использовать что-то вроде MongoDB для данных STRUCTURED вне его "авто-осколки".
Если SQL имеет аналогичную способность "авто-осколки", будет ли SQL бесполезным для структурированных данных? Мне кажется, это было бы, но я бы хотел, чтобы мнение сообщества...
ПРИМЕЧАНИЕ. Это касается типичного приложения CRUD, такого как социальная сеть, сайт электронной коммерции, CMS и т.д.