1.特徴
RDBMSは、ACID特性という概念に基づいて設計されている
トランザクション処理において必要とされる4つの特性
Atomicity(原子性)
トランザクションに含まれるタスクが全て実行されるか、
あるいは全く実行されないことを保証する性質
Consistency(一貫性)
トランザクション開始と終了時に
予め与えられた整合性を満たすことを保証する性質
日本語では「一貫性」あるいは「整合性」とも呼ばれる
Isolation(独立性)
トランザクション中に行われる
操作の過程が他の操作から隠蔽される性質
分離性、独立性または隔離性ともいう
Durability(永続性)
トランザクション操作の完了通知をユーザが受けた時点で、
その操作は永続的となり、結果が失われない性質
2.BASE特性
NoSQLはBASE特性という概念に基づいて設計されている
基本的には常に利用可能で、常に整合性を保っている必要はなく、
一時的に一貫性のない状態を許容して、
結果的には整合性が取れている状態に至る、という特性
ACIDとは対照的に、可用性や性能を重視した特性を持つ分散システムの特性
Basically Available(BA)・・・基本的にいつでも利用できる
Soft-State(S)・・・・・・・常に整合性を保っている必要はない
Eventual Consistency(E)・・結果的には整合性が保証される
2.CAP 定理
分散コンピュータシステムのマシン間の情報複製に関する定理
ノード間のデータ複製において、
同時に次の3つの保証を提供することはできない
C:一貫性(Consistency)
全てのノードで同時に同じデータが見える
A:可用性(Availability)
単一障害(一部のノード)が起きても処理の継続性が失われない
P:分断耐性(Partition-tolerance)
任意の通信障害等によるメッセージ損失に対し、継続して動作を行う
CAP定理により、分散システムは3つの保証のうち、
同時に2つの保証を満たすことはできるが、
同時に3つの保証すべてを満たすことはできない
CAP定理により
DBMSは「CA型」「CP型」「AP型」のいずれかのタイプに分類できる
CA型 C:一貫性とA:可用性 | データはいつでも利用可能で一貫している 単一データベースサーバ データを分散しつつも整合性を保持する | リレーショナル型: Oracle、MySQL、PostgreSQL、SQLServer カラム指向: Vertica |
CP型 C:一貫性とP:分断耐性 | 整合性保持のため、複製中は全てのノードでデータ更新されるまでロックをかけて不整合を阻止する ロックがかかっている最中はAvailableではない | Key-Value: Redis、memcached、Scalaris カラム指向: BigTable、HBase ドキュメント指向: MongoDB |
AP型 A:可用性とP:分断耐性 | データは分散され、いつでもデータにアクセスできる データ複製中は不整合な状態になり得る Cはある程度妥協する Eventual consistency | Key-Value: Dynamo、Voldemort、TokyoTyrant/Cabinet、 カラム指向: Cassandra ドキュメント指向: SimpleDB、CouchDB、Riak |
3.NoSQL Systemsの比較・分類
データモデルを色分けして分類
Relational (comparison)
Key-Value
Column-Oriented/Tabular
Document-Oriented