Difference between Document-based and Key/Value-based databases?

I know there are three different, popular types of non-sql databases.

  • Key/Value: Redis, Tokyo Cabinet, Memcached
  • ColumnFamily: Cassandra, HBase
  • Document: MongoDB, CouchDB

I have read long blogs about it without understanding so much.

I know relational databases and get the hang around document-based databases like MongoDB/CouchDB.

Could someone tell me what the major differences are between these and the 2 former on the list?

94
задан Joshua Partogi 6 November 2010 в 21:03
поделиться

1 ответ

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

Хранилища "ключ-значение"

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

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

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

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

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

Запросы

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

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

70
ответ дан 24 November 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: