1.分散システム(distributed systems)

 多数のコンピューターをネットワークで接続し、
   複数のコンピューターが連携して一つの作業を分担する

   個々のコンピューターは独立しているが、
     外部からは全体が一つの高性能なシステムに見える

2.CAP定理

 分散システムは「C」「A」「P」の3つの保証のうち、
   同時に2つの保証を満たすことはできるが、
   同時に3つの保証すべてを満たすことはできない

3.3つの保証

 C:一貫性(Consistency)
   全てのノードで同時に同じデータが見える

 A:可用性(Availability)
   単一障害など一部のノードで障害が起きても処理の継続性が失われない

 P:分断耐性(Partition-tolerance)
   任意の通信障害などによるメッセージ損失に対し、継続して動作を行う

4.DB管理システム

 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:TokyoTyrant/Cabinet、Dynamo、Voldemort
   カラム指向:Cassandra
   ドキュメント指向:SimpleDB、CouchDB、Riak

5.補足

 ACID特性・BASE特性
   RDBMSはACID特性という概念に基づいて設計されている