12:44:00ツイート印刷コメントを書くクラウドが全盛を迎えた今、従来型のリレーショナルデータベース管理システム(RDBMS)と並んで「NoSQL」の存在が重要性を増している。Cassndra」を解説する。NoSQLの種類そもそも「NoSQL」というのは「RDBMSではないデータベースシステム」という程度の緩い概念を表す用語なので、一言でNoSQLと言ってもその仕組みやデータ構造には様々な種類がある。代表的なNoSQLの種類を挙げてみよう。Store型)キーと値をペアにして保持するシンプルなデータ構造を持つ。キーと、格納したいデータを紐付け、キーを指定することでそれに対応したデータを格納/取得することができる。複数のストレージにデータを分散させて格納するKVSを特に「分散KVS」と呼び、データのレプリケーション(複製)や一貫性、冗長性を確保するための機能などを備えている。列指向型(テーブル指向型)列方向のデータのまとまりを効率的に扱えるように設計されたデータベース。列データをファイルシステム上の連続した位置に格納することによって、大量の行に対する少数の列の集約処理や、同一の値をまとめるデータ圧縮などを効率的に行うことができる。大量のデータを対象とした分析やデータマイニングなどに特に適していると言われている。列指向データベースでは、キーやカラムなどのセットをデータを特定するための情報(キー)として利用するケースが多いため、広い意味ではKVSの一種とされることもある。ドキュメント指向型XMLやJSONなどのように半構造化されたドキュメントデータの格納に特化したデータベース。ドキュメント自体に関するメタデータも含め、全てドキュメント内に保存される点が特徴となっている。グラフ指向型ノード、エッジ、プロパティから構成されるグラフ構造でデータを格納するデータベース。データ同士の複雑な関連性を表現することができる。頻繁に更新される大量の非構造化データを効率良く扱えるというメリットがある。Cassandraは、オープンソースで開発されている分散データベース管理システムである。BigTableの列指向のデータモデルを取り入れて設計されており、上記の分類では列指向型に分類できる。Cassandraのデータモデルは、「キースペース」「カラムファミリー」「キー」「スーパーカラム」「カラム」の5つの要素から構成される。[キースペース]+[カラムファミリー]+[キー]+[カラム]または[キースペース]+[カラムファミリー]+[キー]+[スーパーカラム]+[カラム]が、データを特定するためのキーとして扱われる。CassandraのデータモデルCassandraでは複数のノードで分散してデータを保持する。このノードの集まりのことを「クラスタ」と呼ぶ。Cassandraの場合、すべてのノードが同一の機能を持ち、1つのデータは複製されて同じクラスタ内の複数のノードに格納される。そのため、障害が発生した場合にデータが完全に失われるリスクを低く抑えられる。一方で、データの変更がクラスタ全体に同期されるまでの間、一時的にデータの一貫性が損なわれるという問題がある。クライアントは、クラスタのどのノードに対してもデータの書き込みや読み込みをリクエストすることができる。書き込みリクエストを受け取ったノードでは、トークンを計算してデータやその複製を保持するノードを決定する。読み込みリクエストについては、複数のノードに格納されたデータを照合することで一貫性を確保する。クライアントはリクエスト時に保証する一貫性のレベルを指定することができる。速度を優先する場合には一貫性が省略される。前述のように、NoSQLとは言ってもその特徴は様々であり、用途に応じて選択すべきデータベースシステムも変わってくる。Cassandraは大規模なシステムによる大量のデータ処理に優れる一方で、データ構造のシンプルさという点ではKVSタイプのデータベースにはかなわない。以下にオープンソースで提供されている主要なNoSQLの特徴をまとめた。データベースシステムを選択する際の参考にしていただきたい。Cassandraと同様にBigTableに触発されて開発された列指向型のデータベース。System)上で実行されるため、巨大なテーブルの扱いに長けている。通信にHTTP/RESTを使用し、結果をJSONで返すため、JavaScriptなどからでも利用しやすい。BSONという独自の形式でドキュメントを表現する。複雑な階層構造を表現することが可能で、RDBMSと似た感覚でクエリやインデックスを扱うことができる。シンプルなデータ構造で高速なレスポンスを実現する。memcached互換のプロトコルが実装されているため、memcachedの代替として利用できる。すべてのデータをメモリ上に保存するため処理が極めて高速。非同期でディスクに書き出すことで永続化にも対応する。ACIDトランザクションに完全準拠している。多くの言語に対応し、エンタープライズ分野での採用実績が豊富。permission.×このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。