通过 Hector,从 Cassandra 中的一行获取多个列范围



假设我在 Cassandra 中有一行,其中有多列,其中整数作为键和一些值。在Hector中使用SliceQuery使我能够获取此列的一个范围。是否有可能通过一个查询获取多个范围?

卡桑德拉行示例:

columns 3, 7, 12, 34, 45, 46, 59, 98, 99
----------------------------------------
values  a, f,  e,  v,  a,  r,  r,  o,  k

如何使用 Hector在一个查询中获取键从 20 到 30 50 到 90 的所有列?

为了在PlayOrm开源项目上解决这个问题,我们这样做...

赫克托是否像 astyanax 那样有异步调用,以便您可以执行此操作

for(Query q : queryList) {
// this next call is non-blocking..sends requests and returns immediately not waiting for response
   Future f = q.executeAsycn(); 
   futures.add(f);
}
//Now, both column slices are happening in parallel at the SAME time
for(Future f : futures) {
   Result r = f.get(); //this will block for the first result
}

通过这种方式,它就像 api 有一个单一的 api 调用一样快,所以不需要一次调用。

院长

我不这么认为。 若要将其保留在一个查询中,必须使用包含所有感兴趣切片的单个切片,然后在客户端逐列确定列是否属于您感兴趣的范围之一。

您应该注意,如果数据太多,无法在单个调用中处理该大切片中的所有列,则可以使用分页来减少客户端上数据的占用空间,但您也可以只对每个原始切片进行单独调用。

最新更新