2012-04-25 6 views
3

スーパー列名に応じて異なる行ID値を取得したいとします。 その目的のために、私はこのコード Hector Cassandraの列ファミリから、set rowIDのスーパー列のすべての値を取得する方法

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 DBの信念は、 "あなたが正規化していないなら、正しいことをしている"ということです。

+1

ユージンは、スーパーカラムをサブスライスするのは良い習慣ではありません。それで、カスカンドラのコミュニティでさえ、このテクニックを嫌っているのです。Super Column、そうです。だから私たちの時間を無駄にしないで新しい技術を探して、最終的にすべての問題を解決する複合カラム。 – abhi

関連する問題