我想根据超级列名检索不同的行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 ','
但它不起作用。
答案 0 :(得分:1)
鉴于您正在尝试根据列名选择行键,我冒昧地猜测您的数据模型是倒退的。您通常应该从外部移动 - 选择行键,然后选择超级列名称,然后选择列名称。否则,您将陷入迭代代码中的行,试图匹配列名,而不是使用Cassandra引擎来选择您需要的内容。这种方法永远不会扩展。
所以我建议重做你的数据模型 - 或者你需要这样做,考虑添加另一个ColumnFamily作为第一个的索引。与老式的SQL数据库相反,像Cassandra这样的NoSQL dbs中的信条是“如果你正在进行反规范化 - 你做得对”。