В чем разница между вторичным индексом и инвертированным индексом в Cassandra?

Когда я прочитал об этих двух, я подумал, что они оба объясняют один и тот же подход, я погуглил, но ничего не нашел. Разница в реализации? Cassandra сама выполняет вторичный индекс, но инвертированный индекс должен быть реализован самостоятельно?

Кстати, что быстрее в поиске?


person fereshteh    schedule 08.10.2013    source источник


Ответы (1)


Основное отличие состоит в том, что вторичные индексы в Cassandra не распределяются так же, как инвертированный вручную индекс. Благодаря встроенным вторичным индексам каждый узел индексирует данные, которые он хранит локально (используя LocalPartitioner). При ручной индексации индексы распределяются независимо от узлов, в которых хранятся значения.

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

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

Еще одно преимущество использования встроенной индексации Cassandra заключается в том, что индексы обновляются лениво, поэтому вам не нужно выполнять чтение при каждом обновлении. (См. CASSANDRA-2897.) Это может значительно повысить скорость индексированных таблиц. с высокой скоростью записи.

person Richard    schedule 08.10.2013
comment
Вдохновленный этим вопросом, я написал более подробный ответ в своем блоге: www.wentnet.com/blog/?p=77 - person Richard; 22.10.2013
comment
ирония сбоя соединения с базой данных - person devshorts; 05.08.2015