Таблица отсортированных строк (SSTable) или дерево B + для индекса базы данных?

Используя две базы данных, чтобы проиллюстрировать этот пример:CouchDB а такжеCassandra.

CouchDB

CouchDB использует дерево B + для индексов документов (используяумная модификация работать в их среде только для добавления) - более конкретно, при изменении документов (вставка / обновление / удаление) они добавляются к файлу работающей базы данных, а также к полному пути Leaf -> Node из дерева B + всех задействованных узлов по обновленной редакции сразу после документа.

Эти пересчитанные по частям ревизии индекса встраиваются прямо рядом с модификациями, так что полный индекс представляет собой объединение самых последних модификаций индекса, добавленных в конец файла, вместе с дополнительными частями в файле данных, которые все еще актуальны и не имеют значения. не был изменен еще.

Поискав вB + деревоэто O (logn).

Cassandra

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

Мы можем рассматривать коллекцию всех этих таблиц как «индекс» (из того, что я понимаю).

Кассандра обязанасжать / объединить эти таблицы отсортированных строк время от времени, создавая более полное представление файла индекса.

поискотсортированный массив это O (logn).

Вопрос

Предполагая схожий уровень сложности между поддержанием частичных кусков дерева B + в CouchDB и частичных индексов отсортированных строк в Cassandra и учитывая, что оба обеспечивают время поиска O (logn), которое, по вашему мнению, лучше представило бы индекс базы данных, и почему ?

Мне особенно любопытно, если есть детали реализации одного над другим, что делает егов частности привлекательны, или если они оба вымываются, и вы просто выбираете ту структуру данных, с которой предпочитаете работать / имеет больше смысла для разработчика.

Спасибо за мысли.

Ответы на вопрос(4)

Ваш ответ на вопрос