【问题标题】:Cassandra API equivalent of "SELECT ... FROM ... WHERE id IN ('...', '...', '...');"Cassandra API 等效于“SELECT ... FROM ... WHERE id IN ('...', '...', '...');”
【发布时间】:2011-01-27 14:26:26
【问题描述】:

假设如下数据集:

id       age  city      phone
==       ===  ====      =====
alfred   30   london    3281283
jeff     43   sydney    2342734
joe      29   tokyo     1283881
kelly    54   new york  2394929
molly    20   london    1823881
rob      39   sydney    4928381

要得到如下结果集..

id       age  phone
==       ===  =====
alfred   30   3281283
joe      29   1283881
molly    20   1823881

.. 使用 SQL 会发出 ..

SELECT id, age, phone FROM dataset WHERE id IN ('alfred', 'joe', 'molly');

在一个命令中产生相同结果集的相应 Cassandra API 调用是什么?

【问题讨论】:

  • 对 jbellis 的补充回答:客户端 Thrift API 在 API 部分下的 Cassandra wiki 页面上得到了很好的解释:wiki.apache.org/cassandra/API

标签: nosql cassandra


【解决方案1】:

您将使用 alfred、joe 和 molly 的键以及 id、age、phone 的 SlicePredicate column_names 执行 multiget_slice

【讨论】:

    【解决方案2】:

    Cassandra 等价物可以如下建模:

    Users = { //this is a ColumnFamily
      "alfred": { //this is the key to this Row inside the CF
         "age":"30",
         "city":"london",
         "phone":"3281283"
      }, // end row
      // more rows...
    }
    

    其中“alfred”是您的(行)键,该行包含三列;年龄、城市和电话。 (省略了三列的时间戳字段(为简单起见))

    【讨论】:

      【解决方案3】:

      CQL(Cassandra 的类似 SQL 的查询语言)现在支持:

      SELECT ... WHERE keyalias IN ('key1', 'key2', 'key3', ...);
      

      http://cassandra.apache.org/doc/cql/CQL.html#Filteringrows

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        • 1970-01-01
        • 2011-04-06
        • 1970-01-01
        • 2012-01-13
        • 1970-01-01
        相关资源
        最近更新 更多