Contents
NoSQLとは
一般に Not only SQL と解釈されています。
No とあるが否定では無く SQL だけでは無いといった解釈が一般的で実際はリレーショナル機能が無いDBといったところです。(諸説いろいろあるみたですが)
つまりRDB以外のデータベースといった認識です。
NoSQLを選ぶ理由
RDBではネックとなっていた部分を解決
RDBの問題点
- 大量データの同時処理(特に追加、更新系)
- マスターのスケールアウト(できなくはないがリスク高)
- 柔軟性(設計を後で変えるのは大変)
RDMSでもやろうと思えば出来ないことはありませんが、
設計が複雑になり不便で使いにくい構造となってしまい
運用が大変かつ障害リスクも高くなってしまう傾向にあります。
NoSQLの特徴
強み
- スケーラビリティ(分散しやすい)
- スキーマレス(カラムを自由に定義できる)
- 耐障害性(無停止で、復旧、スケールアウト)
- 大量データ登録、参照
弱み
- 整合性(トランザクション制御、データ一貫性)
- 更新、削除
- 結合(テーブルの結合)
NoSQLの種類
CAP定理について
ノード間のデータ複製は同時に次の3つの保証をすることができないことを表しています。
- Consistency:一貫性
- Availability:可用性
- Partition Tolerance:分断体制
CAPから2つを選ぶのでは無く度合いの問題
- 一貫性+可用性
- 可用性+分断耐性
- 一貫性+分断耐性
データモデルの種類
- キー・バリュー型
- カラム志向型
- グラフ型
- ドキュメント型
アーキテクチャの種類
- マスタ型
- P2P型
- イネーブラ型
Cassandraについて
今回は、列に着目した処理を高頻度で行う為、カラム志向型のCassandraをピックアップといった感じで選択しました。
Cassandraの種類は
- 可用性+分断耐性
- データモデル:カラム志向型
- アーキテクチャ:P2P型
となります。
略歴
- 開発元はFacebook
- 2008年にオープンソース化
- 2009年Apacheソフトウェア財団に寄贈
- 2010年トップレベルプロジェクトに引き上げ
バージョン
- 0系・・・無し
- 1.0、1.1系・・・無し
- 1.2系・・・1.2.19(2014年9月18日にリリース)
- 2.0系・・・2.0.11(2014年9月24日にリリース)
- 2.1系・・・2.1.1(2014年10月24日にリリース)
Cassandraの特徴
- 単一障害点が無い
- ノード追加で無停止スケールアウト
- 列志向型モデル(多次元化が可能)
- 整合性レベルの調整が可能DataStaxOpsCenter(クラスタの状態が直感的にわかる)
使用目的
- データストアとして
- RDBの代わりとしてでは無く共存
- 機能の要件からRDBでは難しい場合に選択
まとめ
- 単純に使う分には簡単な操作で可能
- バージョンで機能が全然違うので要確認
- アドミニストレーターは構造やバージョンの違い運用での注意点など把握しておく必要がある
- チューニング大事
- 機能の要件が適しているか確認
- RDBの代わりとしてでは無く共存
- 機能の要件からRDBでは難しい場合に選択
参考資料
cassandra公式:http://cassandra.apache.org/
datastax:Apache Cassandraの機能およびアーキテクチャの概要