Кассандра: get_range_slices суперколонки TimeUUID? - PullRequest
0 голосов
/ 07 января 2012

У меня есть схема Row Keys 1-n. В каждой строке есть переменное количество суперколонок с TimeUUID «имя». Я надеюсь, что смогу запросить эти данные за определенный промежуток времени.

Два вопроса возникли:

в KeyRange -> значения, которые я вставил для 'start_key' и 'end_key', неправильно понимаются (из-за отсутствия лучшего термина) Thrift. Экспериментируя с разными группами ценностей, я не вижу того, чего ожидаю, и часто получаю что-то совершенно неожиданное.

Пример: мои ключи строк работают с 1-1000 с большим количеством случайных пробелов. Я помещаю start_key = 50 и end_key = 20 .. и получаю обратно строки с ключами в диапазоне от 99 до 414.

Пример: у меня есть известная строка с ключом = 13. Помещение этого значения в start_key и end_key не дает мне результатов.

Вторая проблема: даже когда я получаю результаты, часть «столбцов» «ключа» всегда пуста. Я проверил через cassandra-cli и знаю, что данные есть.

Я использую Perl следующим образом:

my $slice_range = new Cassandra::SliceRange();
$slice_range->{ start } = create_UUID( UUID::Tiny::UUID_TIME, "2010-12-24 00:00:00" );
$slice_range->{ finish } = create_UUID( UUID::Tiny::UUID_TIME, "2011-12-25 00:00:00" );

my $slice_predicate = new Cassandra::SlicePredicate();
$slice_predicate->{ slice_range } = $slice_range;

my $key_range = new Cassandra::KeyRange();
$key_range->{ start_key } = 13;
$key_range->{ end_key } = 13;

my $result = $client->get_range_slices( $column_parent, $slice_predicate, $key_range, $consistency_level );  

print Dumper( $result );

Очевидно, что я неправильно понимаю некоторые основные принципы.

РЕДАКТИРОВАТЬ: Оказывается, что библиотека Perl, которую я использую, не документирована должным образом. Создание UUID не работает как рекламируется. Я открыл это, установил это, и теперь все идет немного больше, чем я ожидал. Я могу нарезать свои суперколонки по диапазону даты / времени. Все еще работаю над тем, чтобы заставить работать ключевую часть диапазона.

1 Ответ

1 голос
/ 10 января 2012

http://wiki.apache.org/cassandra/FAQ#range_rp объясняет, почему вы не видите того, что ожидаете от ключевых диапазонов.

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

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