3

我想根据超级列名检索不同的行 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 ','

但它不起作用。

4

1 回答 1

1

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

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

于 2012-05-29T17:58:39.033 回答