2016-01-10 21 views
2

Привет я следующую таблицу в Кассандре: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 выборок в зависимости от размера списка с ключевыми словами. Другими словами, мне нужно перебирать ключевые слова в приложении и в каждой итерации отправлять выбор в БД.

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

Мой вопрос

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

ответ

2

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

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

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

+0

Спасибо. Списки ключевых слов и движков определяются пользователем. Каждый вариант использования имеет свой собственный список. Для этих входов приложение будет производить для каждого движка матрицу N x M .. из N строк - ключевые слова и M столбцов - домены. В каждой ячейке будет позиция домена для определенного ключевого слова. Поскольку список доменов - столбцов - также определяется пользователем, я не могу представить способ создания такой матрицы в одном выборе. – Michal