【问题标题】:Get multiple column ranges from one row in Cassandra via Hector通过 Hector 从 Cassandra 的一行中获取多个列范围
【发布时间】:2012-09-29 13:59:25
【问题描述】:

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

cassandra 行示例:

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

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

【问题讨论】:

    标签: cassandra hector


    【解决方案1】:

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

    Hector 是否有像 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 调用一样快,所以不需要一个调用。

    院长

    【讨论】:

    • 我的问题的正确答案来自 Chris Gerken,但您的回答包含了如何解决问题的好建议。谢谢。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 2011-11-15
      • 1970-01-01
      • 2013-08-02
      • 2012-06-21
      • 2014-02-15
      • 2013-10-28
      • 2012-12-31
      • 1970-01-01
      相关资源
      最近更新 更多