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 データベースとは対照的に、Cassandra のような NoSQL データベースの信条は、「非正規化を行っている場合、正しく行っている」ということです。

于 2012-05-29T17:58:39.033 に答える