2012年2月15日水曜日

Cassandraデータモデル

CassandraはいわゆるKVS(Key-Value Store)の一つだ。KVSはNoSQLとも言われ、SQLすなわちRDBとは異なる独自のデータモデルを持つ。Cassandraを使うには特有のデータモデルを理解する必要がある。
Cassandraのデータモデルは実用上十分な表現力がある。しかし、モデリングを理解していないと十分に使いこなすことができない。ここでは、CassandraのデータモデルをRDBと比較しながら説明する。
RDBのデータモデルは、データベース(Excelでいえばブック)、テーブル(Excelでいえばシート)、行、フィールド(Excelでいえばセル)のように細分化される。
Cassandraのデータモデルは、Keyspace、ColumnFamily、SuperColumn, Columnのように細分化される。
両者は概念的に対応していて、Keyspace=データベース、ColumnFamily=テーブル、行=SuperColumnと考えてよい。Columnを省いたのには理由がある。
ここで、ORM(Object-Relational Mapping)についても触れておく。ORMを使うことで面倒なSQLを記述する必要がなくなる。最近のほとんどのフレームワークにはORMが含まれる。
ORMを使う場合、ある制約を受け入れなければならないことがある。代表的な制約は、行の構造がIDとオブジェクトに限定されることだ。IDはデータベースの主キーだが、1つのフィールドで表現される。オブジェクトは名前と値の複数の対応で一般的に表現できる。すなわち、Column=オブジェクトである。
つまり、SuperColumnはKeyをIDとしてColumnと対応付けたものである。これはORMにおける行と等しい。このようにCassandraのデータモデルはORMを想定したRDBのデータモデルと等しい。

0 件のコメント: