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