web-dev-qa-db-ja.com

Cassandra列指向または列指向のデータベースです

列データベースは、列のグループを一緒に格納する必要があります。しかし、Cassandraはデータを行ごとに格納します。SSテーブルは、対応するパーティションキーにマップされたデータの複数の行を保持します。したがって、Cassandraは行ごとです。 MySQLのようなデータストアですが、「幅の広い行」などの他の利点があり、すべての列がすべての行に存在する必要はなく、もちろんメモリ内にあります。間違っている場合は修正してください。

14

Apache Cassandra GitHubのプロジェクト に移動し、[エグゼクティブサマリー]まで下にスクロールすると、次のような答えが得られます。

Cassandraはパーティション化された行ストアです。行は、必要な主キーを持つテーブルに編成されます。

パーティショニングとは、Cassandraが、アプリケーションを透過的に複数のマシンにデータを分散できることを意味します。Cassandraは、マシンがクラスターに追加およびクラスターから削除されると、自動的に再パーティショニングされます。

行ストアとは、リレーショナルデータベースと同様に、Cassandraがデータを行と列で整理することを意味します。

「だから私はCassandraは行ごとのデータストアだ」と感じます

そしてそれは正しいでしょう。

18
Aaron
  • 列指向または列指向のデータベースでは、データは列ごとにディスクに保存されます。

    例:テーブルBonuses table

     ID         Last    First   Bonus
     1          Doe     John    8000
     2          Smith   Jane    4000
     3          Beck    Sam     1000
    
  • 行指向データベース管理システムでは、データは次のように格納されます。1,Doe,John,8000;2,Smith,Jane,4000;3,Beck,Sam,1000;

  • 列指向データベース管理システムでは、データは次のように格納されます。
    1,2,3;Doe,Smith,Beck;John,Jane,Sam;8000,4000,1000;

  • Cassandraは基本的にcolumn-familyストアです

  • Cassandraは、上記のデータを"Bounses" : { row1 : { "ID":1, "Last":"Doe", "First":"John", "Bonus":8000}, row2 : { "ID":2, "Last":"Smith", "Jane":"John", "Bonus":4000} ... }として保存します。
  • Vertica、VectorWise、MonetDBは、私が聞いたことがある列指向データベースです。

  • 詳細については、 this をお読みください。

お役に立てれば。

13
tharindu_DG

cassandraは、内部マップがキーでソートされているマップのマップとして考えるのが良い方法です。パーティションには多くの列があり、それらは常に一緒に格納されます。それらはクラスタリングによってソートされます。キー-最初に最初のキー、次に次、次に次...など。パーティションはレプリカ間で複製されます。複製戦略に基づいて異なるノードに異なる行が格納され、アクティブであるため、必ずしも「行」として格納されるとは限りません。つまり、ProductIdがパーティションキーである場合、ProductId1のパーティションはProductId2の隣に格納されない可能性があります。ただし、Product Id1の列は常に一緒に格納されます。

定義に関しては、ほとんどのNoSQLストアは何らかの方法で線をぼかしています。それらは通常、複数のカテゴリにまたがっています。これが列型データベースとして適格かどうかを判断するのはあなたに任せます:)

1
ashic