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


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

  • Ключ / Значение: Redis, Tokyo Cabinet, Memcached
  • ColumnFamily: Cassandra, HBase
  • Документ: MongoDB, CouchDB

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

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

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

2 88

2 ответа:

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

key-value stores

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

модель данных: более чем ключ-значение хранит

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

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

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

запрос

Я считаю, что столбцы-семейные магазины могут быть запрошены только ключом, или написав функции map-reduce. Вы не можете запросить значения, как в базе данных SQL. Если приложение нуждается в более сложных запросах, ему придется создавать и поддерживать индексы для доступа к требуемым данным.

базы данных документов поддерживают запросы по ключам и функции сокращения карт, а также позволяют выполнять базовые запросы по значению, такие как "Дайте мне всех пользователей с более чем 10 сообщениями". Базы данных документов являются более гибкими в этом отношении.

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

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