如何从Hector Cassandra中的columnfamily中检索set rowID中的超级列的所有值

时间:2012-04-25 05:23:26

标签: cassandra super hector

我想根据超级列名检索不同的行id值。 为此,我使用了这段代码

    SuperColumnQuery<String, String, String, String> superColumnQuery =
            HFactory.createSuperColumnQuery(keyspaceOperator, se, se,se,se);
    superColumnQuery.setColumnFamily(COLUMN_FAMILY).setKey(rowID).setSuperName(superColumnName);
    QueryResult<HSuperColumn<String, String, String>> result = superColumnQuery.execute();
    //rowID contains a list of rows separated by ','

但它不起作用。

1 个答案:

答案 0 :(得分:1)

鉴于您正在尝试根据列名选择行键,我冒昧地猜测您的数据模型是倒退的。您通常应该从外部移动 - 选择行键,然后选择超级列名称,然后选择列名称。否则,您将陷入迭代代码中的行,试图匹配列名,而不是使用Cassandra引擎来选择您需要的内容。这种方法永远不会扩展。

所以我建议重做你的数据模型 - 或者你需要这样做,考虑添加另一个ColumnFamily作为第一个的索引。与老式的SQL数据库相反,像Cassandra这样的NoSQL dbs中的信条是“如果你正在进行反规范化 - 你做得对”。