Cassandra CQL: выбор партии

Привет у меня есть следующая таблица в Кассандре:

* ---------------------------------------------------------------------------
* Note:
* 'curr_pos' is always fixed, so we can put it into cluster key and order
* In each crawler iteration 'prev_pos', 'domain_*' are updated
* -------------------------------------------------------------------------
* Patterns:
* <domain_name3rd>.<domain_name2nd>.<domain_name1st>
* --------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS lp_registry.keyword_position (
engine text,
keyword text,
updated timestamp,
domain_name1st text,
domain_name2nd text,
domain_name3rd text,
prev_pos int,
curr_pos int,
PRIMARY KEY ((engine, keyword), curr_pos)
);

В приложении верхнего уровня у меня есть списки с сотнями ключевых слов.

Что мне нужно?

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

Обновить: Результатом, предоставляемым приложением, будет матрица NxM для каждого механизма с N определяемыми пользователем ключевыми словами и M определяемыми пользователем доменами. В каждой ячейке будет позиция домена для конкретного ключевого слова.

Что меня смущает?

Мне нужно опубликовать N выбор в зависимости от размера списка с ключевыми словами. Другими словами, мне нужно перебирать ключевые слова в приложении и в каждой итерации отправлять select в DB.

Я ожидаю, что N не будет больше 100, но все же я думаю, что это слишком много запросов.

Мой вопрос

Могу ли я упаковать эти выборки в одну партию? Как?

2

Решение

Это на самом деле не проблема пакетного запроса, а проблема дизайна вашей таблицы.

Если запрос, который вы описываете, является «базовым» запросом вашего приложения, то вы должны разработать таблицу таким образом, чтобы это был один запрос, то есть. engine а также keyword должны быть ключи кластеризации, а не ключи разделов.

Чтобы дать более конкретный совет: как получить список двигателей и ключевых слов, есть ли некоторые, которые логически группируют их? Это может быть ключом раздела вашей таблицы.

2

Другие решения

Других решений пока нет …