Основные отличия заключаются в модели данных и возможностях запросов.
Хранилища "ключ-значение"
Первый тип очень прост и, вероятно, не требует дополнительных пояснений.
Модель данных: больше, чем хранилища "ключ-значение"
Хотя есть некоторые споры о правильном названии баз данных, таких как Cassandra, я бы назвал их хранилищами семейства столбцов . Хотя пары ключ-значение являются неотъемлемой частью Cassandra, она не ограничивается только этим. Он позволяет вкладывать пары ключ-значение, так что ключ может относиться к нескольким парам вложенный ключ-значение.
Однако вы не можете вкладывать пары ключ-значение бесконечно. Вы ограничены тремя уровнями (семейства столбцов) или четырьмя уровнями вложенности (семейства надстолбцов). В случае, если термин «семейство столбцов» не вызывает затруднений, см. Статью « WTF - это SuperColumn» , это хорошее объяснение модели данных Cassandra.
Базы данных документов , такие как CouchDB и MongoDB, хранят целые документы в форме объектов JSON . Вы можете рассматривать эти объекты как вложенные пары ключ-значение. В отличие от Cassandra, вы можете вкладывать пары ключ-значение столько, сколько захотите. JSON также поддерживает массивы и понимает различные типы данных, такие как строки, числа и логические значения.
Запрос
Я считаю, что к хранилищам семейства столбцов можно обращаться только по ключу или путем написания функций сокращения карты. Вы не можете запрашивать значения, как в базе данных SQL. Если вашему приложению требуются более сложные запросы, ваше приложение должно будет создать и поддерживать индексы для доступа к нужным данным.
Базы данных документов также поддерживают запросы по ключу и функции сокращения карты, но также позволяют выполнять базовые запросы по значению, например «Дайте мне всех пользователей с более чем 10 сообщениями». Таким образом, базы данных документов становятся более гибкими.