2015-09-29 2 views
1

я не смог расшифровать о том, как приступить к прецеденту ....Есть ли способ фильтрации столбца счетчика в кассандре?

Я хочу, чтобы количество некоторых элементов, и запрашивать данные таким образом, что

counter_value < threshold value 

Сейчас в Кассандре, индексы не могут быть сделаны на счетчиках, это то, что является проблемой, есть ли временное моделирование, которое можно сделать для достижения чего-то подобного?

благодарит

ответ

2

Вы частично ответили на свой вопрос, сказав, что вы хотите запросить. Итак, скажем, сначала моделируйте данные так, как вы их запросите позже.

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

  1. не может быть частью индекса
  2. не может быть частью раздела ключа

Счетчики являются наиболее эффективным способом сделать быстро пишет в Кассандре для встречного использования дела. Но, к сожалению, они не могут быть частью предложения, из-за выше двух ограничений.

Так что, если вы хотите, чтобы решить эту проблему с помощью Кассандры, измените тип на длинный в Кассандре, сделать его кластеризации ключом или сделать индекс над этой колонкой. В любом случае это замедлит ваши записи и увеличит латентность каждой операции обновления значения счетчика, так как вы будете использовать anti parttern of read-before-write.

Я бы порекомендовал использовать индекс .

Последнее, но не менее важное: я рассмотрел бы использование базы данных SQL для этой проблемы.

+0

Я не могу использовать mysql, у меня огромный набор данных, и много писем, которые не будут работать с базой данных sql для меня, и читать перед записью - это то, что я действительно не хочу делать, мне придется использовать более высокую согласованность уровень, который убьет производительность, есть ли другой способ, которым я могу подойти к этому? –

+0

вы хотите делать эти запросы в режиме реального времени? –

+0

Хотел бы я, я не могу найти обходной путь. –

2

В зависимости от того, что вы пытаетесь вернуть в результате, вы можете сделать что-то с помощью определенной пользователем функции агрегата. Вы можете поместить произвольный код в определяемую пользователем функцию для фильтрации на основе значения счетчика.

См. Некоторые примеры here и here.

Другие подходы состоят в том, чтобы фильтровать возвращенные строки на стороне клиента или загружать данные в Spark и фильтровать строки в Spark.

+0

Я тоже думал, что найти хороший способ собрать данные счетчика - это путь к этому. – Aaron

+0

@ Аарон да, это прекрасно, единственная проблема прямо сейчас - мне нужно ждать стабильной версии 2.2, чтобы использовать ее, агрегаты недоступны в 2.1.9. –

Смежные вопросы