Разница между документами и базами данных на основе ключей? - PullRequest
94 голосов
/ 24 августа 2010

Я знаю, что есть три разных популярных типа не-SQL-баз данных.

  • Ключ / Значение: Redis, Токийский кабинет, Memcached
  • ColumnFamily: Кассандра, HBase
  • Документ: MongoDB, CouchDB

Я читал длинные блоги об этом, не понимая так много.

Я знаю реляционные базы данных и знакомлюсь с базами данных на основе документов, такими как MongoDB / CouchDB.

Может кто-нибудь сказать мне, в чем главные различия между ними и двумя первыми в списке?

Ответы [ 2 ]

70 голосов
/ 24 августа 2010

Основными отличиями являются модель данных и возможности запросов.

Ключ-хранилище

Первый тип очень прост и, вероятно, не нуждается в дополнительном объяснении.

Модель данных: больше, чем хранилища ключей-значений

Хотя есть некоторые споры о правильном имени для баз данных, таких как Cassandra, я бы хотел назвать их магазины семейства столбцов . Хотя пары ключ-значение являются неотъемлемой частью Кассандры, она не ограничивается этим. Он позволяет вам вкладывать пары ключ-значение, чтобы ключ мог ссылаться на несколько пар под ключ-значение.

Вы не можете вложить пары ключ-значение бесконечно. Вы ограничены тремя уровнями (семейства столбцов) или четырьмя уровнями вложенности (семейства столбцов). Если термин «семейство столбцов» не звонит в колокольчик, см. Статью WTF - SuperColumn , это хорошее объяснение модели данных Cassandra.

Базы документов , такие как CouchDB и MongoDB, хранят целые документы в виде объектов JSON . Вы можете думать об этих объектах как о вложенных парах ключ-значение. В отличие от Cassandra, вы можете вкладывать пары ключ-значение столько раз, сколько хотите. JSON также поддерживает массивы и понимает различные типы данных, такие как строки, числа и логические значения.

1025 * Запросы * Я полагаю, что хранилища семейства столбцов могут быть запрошены только по ключу или написанию функций уменьшения карты. Вы не можете запрашивать значения, как в базе данных SQL. Если вашему приложению требуются более сложные запросы, оно должно создавать и поддерживать индексы для доступа к нужным данным. Базы данных документов также поддерживают запросы по ключевым функциям и функциям сокращения карт, но также позволяют вам выполнять базовые запросы по значению, такие как «Дайте мне всем пользователям более 10 сообщений». В этом случае базы данных документов более гибкие.

13 голосов
/ 08 сентября 2014

Айенде дал хорошее объяснение различий между Key-Value и базой данных документов:

База данных документов по своей сути является хранилищем ключей / значений содно главное исключение.Вместо того, чтобы просто хранить в нем какой-либо большой двоичный объект, в базе данных документа требуется, чтобы данные сохранялись в формате , который может понять база данных (например, JSON, XML и т. Д.).В большинстве doc dbs это означает, что теперь мы можем разрешать запросы к данным документа.

...