Как Apache Cassandra выполняет агрегатные операции? - PullRequest
10 голосов
/ 16 июня 2010

Я довольно плохо знаком с Apache Cassandra и nosql в целом.

В SQL я могу выполнять агрегатные операции, такие как:

SELECT 
  country, sum(age) / count(*) AS averageAge 
FROM people 
GROUP BY country;

Это хорошо, потому что он рассчитывается внутри БД, а не для того, чтобы перемещать каждую строку в таблице 'people' на уровень клиента для выполнения вычисления.

Возможно ли это в Apache Cassandra? Как?

Ответы [ 3 ]

9 голосов
/ 17 июня 2010

Cassandra - это прежде всего механизм, который поддерживает быструю запись и поиск. В SQL нет поддержки таких вычислений, как агрегаты, поскольку он не предназначен для этого. Я бы посоветовал прочитать популярные сценарии использования Cassandra, чтобы лучше понять :) Я добавил в закладки некоторые статьи на моей вкусной странице. Вот ссылка:

http://delicious.com/vibhutesagar/cassandra

2 голосов
/ 16 июня 2010

Использование SliceRange можно рассматривать как версию LIMIT и ORDER BY Кассандры.

GROUP BY, COUNT и SUM не поддерживаются "из коробки".

Посмотрите на страницу API из вики, это хорошее начало.

0 голосов
/ 04 февраля 2013

Текущая версия Cassandra не поддерживает SUM(). Поддерживается только count(*).

...