Что означает «Ориентированный на документ» и «Значение ключа», когда речь идет о MongoDB против Cassandra? - PullRequest
106 голосов
/ 15 июня 2010

Что с опцией NoSQL, основанной на документе, покупает вас в магазине KV и наоборот?

Ответы [ 3 ]

126 голосов
/ 19 июня 2010

A хранилище ключей-значений предоставляет простейшую модель данных и в точности соответствует названию: это система хранения, в которой хранятся значения, проиндексированные ключом. Вы ограничены запросом по ключу и значения непрозрачны , магазин не знает ничего о них. Это позволяет выполнять очень быстрые операции чтения и записи (простой доступ к диску), и я рассматриваю эту модель как своего рода энергонезависимый кэш (т. Е. Хорошо подходящий, если вам нужен быстрый доступ по ключу к долгоживущим данным).

A документно-ориентированная база данных расширяет предыдущую модель, а значения сохраняются в формате структурированный (документ, отсюда и название), который может понять база данных. Например, документом может быть запись в блоге и , комментарии и теги, хранящиеся в денормализованном виде. Поскольку данные прозрачны , хранилище может выполнять больше работы (например, индексировать поля документа), и вы не ограничены запросом по ключу. Как я уже говорил, такие базы данных позволяют извлекать данные всей страницы одним запросом и хорошо подходят для контент-ориентированных приложений (именно поэтому им нравятся большие сайты, такие как Facebook или Amazon).

Другие виды баз данных NoSQL включают хранилища, ориентированные на столбцы , базы данных графов и даже базы данных объектов . Но это выходит за рамки вопроса.

Смотри также

16 голосов
/ 19 июня 2010

Ну, я изучал NoSQL в прошлом месяце или около того. Я думаю, что в целом можно сказать что-то вроде

  • KV магазины не знают о стоимости содержимое фактически хранится для ключа
  • Документ на основе позволяет определить вторичный индексы в содержании значения, как БД знает структуру документа (например, теги сообщения в блоге).
  • Каждое решение NoSQL имеет свои особенности, которые следует учитывать, такие как
    • Специальные типы данных в хранилище KV (например, наборы с левым / правым всплывающим / нажимным, как в redis)
    • кластер с простым масштабированием вверх / вниз, как говорит Рияк (я еще не пробовал ... пока)
    • подключаемое хранилище данных как в Voldemort
    • встроенная веб-конфигурация и поддержка веб-приложений, как в CouchDB / couchapp
1 голос
/ 05 мая 2016

Документно-ориентированная база данных, или хранилище документов, предназначена для хранения, извлечения и управления ориентированной на документы информацией, которая представляет собой полуструктурированные данные. Хранилище ключей-значений является наследником базы данных, ориентированной на документы. Разница заключается в способе обработки данных; в хранилище значений ключей данные считаются непрозрачными для базы данных, тогда как ориентированная на документы система опирается на внутреннюю структуру документа для извлечения метаданных, которые ядро ​​базы данных использует для дальнейшей оптимизации.

Если речь идет о разнице между MOngoDb и Cassandra. MongoDB действует как реляционная база данных. Его модель данных состоит из базы данных на верхнем уровне, затем коллекций, которые похожи на таблицы в MySQL (например), а затем документов, которые содержатся в коллекции, как строки в MySQL. Каждый документ имеет поле и значение, где оно аналогично столбцам и значениям в MySQL. Поля могут быть простым ключом / значением, например {'name': 'David Mytton'}, но они также могут содержать другие документы, например, {'name': {'first': David, 'last': 'Mytton'}}. В Кассандре документы известны как «столбцы», которые на самом деле представляют собой только один ключ и значение. например {'key': 'name', 'value': 'David Mytton'}. Существует также поле метки времени, предназначенное для внутренней репликации и согласованности. Значение может быть одним значением, но также может содержать другой «столбец». Эти столбцы затем существуют в семействах столбцов, которые упорядочивают данные на основе определенного значения в столбцах, на которое ссылается ключ.

Но, На верхнем уровне находится пространство ключей, похожее на базу данных MongoDB.

...