Bigtableについて調べたメモ
Bigtable について調査していたときに書いたメモです。 CAP 定理 整合性(Consistency)・可用性(Availability)・分断耐性(Partition Tolerance) の 3 つのうち、同時に 2 つしか満たせないことを明らかにした定理。証明も発表されているらしい。 整合性(Consistency) いかなる読み出しに対しても最新の値を返す 整合性を保つ単位を原子オブジェクトと呼ぶ。 分散データベースは原子オブジェクトの範囲内で整合性をもたせる 可用性(Availability) いかなる時刻に到達したクエリでも実行可能 ある更新クエリが実行されている間、他のクエリを待たせた場合は、可用性が失われている 分断耐性(Partition Tolerance) ノード間の通信が遮断されていてもデータベースとして動作可能 RDB は CA 型のデータベース。分散データベースの場合、分断耐性が必須となるため、CP 型か AP 型の 2 択となる。 read 重視 (いかなる時でも最新の値を取得したい) なら CP 型、write 重視 (絶対にカートに入れる操作を成功させたい)なら AP 型? CP 型の DB CP 型の DB では一つの原子オブジェクトに対して一つのマスターノードを割り当てる。これによって整合性を担保できるが、そのマスターノードがダウンすると、マスターノードが管理していた原子オブジェクトは更新不可 (=可用性が失われる) となる 具体例 BigTable HBase MongoDB AP 型の DB AP 型の DB では全てのノードがあらゆる原子オブジェクトのクエリを受け付ける。そのため、いかなる時でもクエリが実行できる。一方で分断時に 2 つのノードで同一の原子オブジェクトの更新が行われた場合は、データの不整合が生じる。そのため後で不整合を修復する必要がある...