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:可用性
データはいつでも利用可能で一貫している
 単一データベースサーバ
 データを分散しつつも整合性を保持する
リレーショナル型:
 OracleMySQLPostgreSQLSQLServer
カラム指向:
 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