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特性という概念に基づいて設計されている