TimeUUIDTypeコンパレーターを備えたcassandra dbと列ファミリーがあります。私はHectorを使用し、RandomPartitionerを使用してキースペースを持っています。
TimeUUID で並べ替えられたページング可能な結果を取得するスライス クエリを作成したいと思います。
SliceQuery<String, UUID, UserLike> query = HFactory.createSliceQuery(getKeyspace(), StringSerializer.get(), TimeUUIDSerializer.get(), UserLikesSerializer.get());
query = query.setKey(username);
query.setColumnFamily(SOME_CF);
このコードでクエリを構成すると:
query.setRange(new UUID(UUIDGen.createTime(Long.MAX_VALUE),UUIDGen.getClockSeqAndNode()), null, true, maxResults);
私は間違った順序でデータを取得します (おそらく RandomPartitioner を使用しているためです - 正しいですか?) 次のコードでクエリを構成すると:
query.setRange(new UUID(UUIDGen.createTime(Long.MAX_VALUE),UUIDGen.getClockSeqAndNode()), new UUID(UUIDGen.createTime(0),UUIDGen.getClockSeqAndNode()), true, maxResults);
エラーが発生します:
InvalidRequestException(why:range finish must come after start in the order of traversal)
at me.prettyprint.hector.api.exceptions.HInvalidRequestException
何か案は ?