Почему Кассандра не поддерживает агрегацию внутренне? - PullRequest
0 голосов
/ 09 октября 2018

Учитывая это предложение во многих книгах и статьях:

В столбчатой ​​архитектуре запросы, которые стремятся агрегировать значения определенных столбцов, оптимизируются, поскольку все агрегируемые значения существуют на одном дискеблоки.И Cassandra - это база данных семейства столбцов NoSQL.

NoSL

Если это предложение верно, почему Cassandra не поддерживает функции агрегирования внутри?Или я неправильно понял это предложение или концепцию?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

почему Cassandra не поддерживает внутренние функции агрегирования

Cassandra поддерживает функции агрегации по запросу (как пользовательские в java, python, javascript и некоторых готовых), которые при использовании на одномраздел работает в определенных пределах.Помня о том, что эти запросы действительно рассчитаны на ответы в течение нескольких миллисекунд, тем не менее то, что вычисляет среднее значение из миллиона значений, не будет работать должным образом при частых запросах.

Агрегации нельзя легко поддерживать в актуальном состоянии, так какудаляет (особенно сложно в распределенной среде, так как удаление может даже не наблюдаться на всех узлах - помните, что Cassandra - это AP, а не CP), и данные ttl'd истекают, поэтому весь набор для агрегирования должен быть пересчитан и отправлен с уровня согласованностиколичество реплик координатору для расчета.Таким образом, хотя данные раздела хранятся последовательно на диске для некоторого числа sstables и могут быть объединены довольно эффективно, они все равно могут быть дорогостоящими для координатора, и если их выполнить в диапазоне, объем данных, передаваемых и вычисляемых, может закончиться сбоем(тайм-аут) легко.

0 голосов
/ 09 октября 2018

Cassandra - это механизм хранения строк.Если вы хотите получить все записи, которые соответствуют определенному значению столбца, вам необходимо выполнить полное сканирование таблицы.

См. Этот другой вопрос .

...