1

HBase と Cassandra は、行と列の両方の概念を使用して、幅の広い列ストアとして構築されています。

行は、RDBMS の主キーの概念に似たキーと、いくつかの列で構成される値で構成されます。

表現は次のようになります。

*******|    Key     |                   Value
-------+------------+-------------+------------------------------------------
Colunms|            |     name    |                 value
-------+------------+-------------+------------------------------------------
       |     a      |   title     | "Building a python graphdb in one night"
       |     b      |   body      | "You maybe already know that I am..."
       |     c      | publishedat |              "2015-08-23"
       |     d      |   name      |                database

       |     e      |   start     |                   1
       |     f      |    end      |                   2

            ...          ...                         ...

       |    u       |   title     |     "key/value store key composition"

            ...          ...                         ...

       |    x       |   title     |    "building a graphdb with HappyBase"

            ...          ...                         ...

アプリケーション層で、構成された主キーを構築して、同じ場所にある行をすばやく反復処理できるようにすることは正しいですか。

これは次のように表現できます。

*******|           Key            |                 Value
-------+------------+-------------+------------------------------------------
Colunms| identifier |  name       |                 value
-------+------------+-------------+------------------------------------------
       |     1      |   title     | "Building a python graphdb in one night"
       |     1      |   body      | "You maybe already know that I am..."
       |     1      | publishedat |              "2015-08-23"
       |     2      |   name      |                database

       |     3      |   start     |                   1
       |     3      |    end      |                   2

            ...          ...                         ...

       |     4      |   title     |     "key/value store key composition"

            ...          ...                         ...

       |     42     |   title     |    "building a graphdb with HappyBase"

            ...          ...                         ...

name列は から に移動され、列名が 1 つValueKeyなりました。Valuevalue

4

2 に答える 2

1

複合キーは、Cassandra スキーマを設計するときに常に使用されます。

C* では、キーはパーティション キーとクラスタリング列の 2 つの部分に分割されます。

パーティション キーは、クラスター内のノードにデータをハッシュするために使用されます。パーティションは、クラスタリング列に基づいて単一の行または複数の行を保持できるデータのバケットです。パーティション内のデータはノードに対してローカルであり、クラスタリング キーによってソートされた順序で保持されます。これにより、パーティション内のデータへのアクセスが高速かつ効率的になり、クラスタリング キーでの範囲クエリがサポートされます。

C* では、複合キーの一部ではないデータ フィールドも使用でき、セカンダリ インデックスを作成しない限り、通常はクエリで使用されません。

「ワイドカラム」という用語は、C* では少し古くなっています。現在の CQL の見方では、データは従来の用語ではテーブル内の行として考えられており、パーティションに効率的にアクセスできるようにグループ化されています。

あなたの質問に答えるために、はい、C * では、RDBMS のデータ列と考えられていた可能性のある列を、C * の複合キーの一部に移動するのが一般的です。

パーティション キーとクラスタリング列の詳細、およびそれらが実行できるクエリの種類に与える影響については、CQL WHERE 句の詳細を参照してください。

于 2015-09-11T18:34:49.043 に答える