2010-03-22 3 views
2

При использовании в Perl Net::Cassandra::Easy следующий код будет извлекать столбцы col[1-3] из рядов row[1-3]:Как получить все столбцы для всех совпадающих строк с помощью Perl Net :: Cassandra :: Easy?

$result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', byname => ['col1', 'col2', 'col3'); 

Соответствующий SQL будет:

SELECT col1, col2, col3 FROM rows WHERE id IN ('row1', 'row2', 'row3'); 

Предположим, вместо того, что я хочу, чтобы извлечь все столбцы. В терминах SQL, который был бы:

SELECT * FROM rows WHERE id IN ('row1', 'row2', 'row3'); 

Чтобы получить все столбцы настоящее время я использую:

$result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', byoffset => { "count" => 1_000_000 }); 

Это работает до тех пор, как число столбцов не превышает одного миллиона. Хотя это работает, я бы предположил, что есть более чистый способ сделать это. Есть ли более чистый способ указать Кассандре, что я хочу получить все столбцы для соответствующих строк?

+0

Не знаком с Cassandra, но вы не могли бы выполнить запрос раньше, чтобы получить структуру таблицы, чтобы вы знали, сколько столбцов доступно? – zigdon

+0

Удивительно, если разработчик, который сделал это, имел бывшую названную Cassandra, что ему не понравилось слишком много ... – Zoidberg

+0

zigdon: Nope :-) «Структура таблицы» в Кассандре динамична в том смысле, что одна строка может сказать пять столбцов, тогда как в следующей строке указано сорок столбцов. – knorv

ответ

3

Как насчет

$result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', standard => 1); 

standard => 1 вынудит Net :: Cassandra :: Легко использовать ломтик предикат, который соответствует всем столбцам в семье.

+0

Отлично! Именно то, что я искал! Благодаря! – knorv

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