Я работаю над некоторыми POC.
У меня есть семейство столбцов, в котором хранится событие сервера. Избегая увеличения размера строки, мы разбиваем каждую строку на N других строк, используя композитный тип в ключе строки:
CREATE COLUMN FAMILY logs with comparator='ReversedType(TimeUUIDType)' and key_validation_class='CompositeType(UTF8Type,IntegerType)' and default_validation_class=UTF8Type;
поэтому для каждого имени сервера у нас есть N строк, и мы записываем данные в каждую строку, используя алгоритм Very Simple Round Robin.
У меня нет проблем с записью данных в любую строку:
Mutator<Composite> mutator = HFactory.createMutator(keySpace, CompositeSerializer.get());
HColumn<UUID,String> col =
HFactory.createColumn( TimeUUIDUtils.getUniqueTimeUUIDinMillis(), log);
Composite rowName = new Composite();
rowName.addComponent(serverName, StringSerializer.get());
rowName.addComponent(this.roundRobinDestributor.getRow(), IntegerSerializer.get());
mutator.insert(rowName, columnFamilyName, col);
}
Пока все хорошо, но теперь у меня два вопроса:
1) Из-за того, что если я хочу получить все журналы для некоторого serverName, я буду сканировать ключи строк, должен ли я использовать ByteOrderedPartitioner
?
2) Может ли кто-нибудь помочь мне или указать мне на какую-то помощь, как создать запрос Гектора, который выведет все строки для server1 ({server1:0}, {server1:1} {server1:2) и т. д...)? Я видел много примеров использования CompositeType в качестве компаратора, но ни одного примера для проверки ключа.
Любая помощь или комментарий высоко ценятся.