プライマリ/バックアップ型と複数プライマリ型
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/13 06:04 UTC 版)
「レプリケーション」の記事における「プライマリ/バックアップ型と複数プライマリ型」の解説
古典的なレプリケーションの多くはプライマリ/バックアップ・モデルに基づいており、1つのデバイスやプロセスが他のデバイス群やプロセス群を制御する。例えば、プライマリがバックアッププロセスに更新ログを渡しながら何らかの計算をしている。そして、プライマリプロセスが何らかの障害で停止すると、バックアップが交代して計算を引き継ぐ。この方式では障害発生時にログの一部が失われ、バックアップがプライマリの最近の状態と全く同一とはならない可能性がある。そのため、トランザクション結果の一部が失われる危険性があるにも関わらず、データベースでのレプリケーションでは一般的な方法であった。 プライマリ/バックアップ型の欠点は、2つのプロセスが動作しているのに、その一方しか実際には操作を行っていない点である。それによってフォールトトレラント性は得られるが、同じ処理能力にほぼ倍のコストを費やしていることになる。このため1985年ごろから、新たなレプリケーション方法が模索されはじめた。その成果として、複製群が協調動作し、各プロセスが相互にバックアップの役目を果たしつつ、負荷を共有する方式が生まれた。 データベースの研究で有名なジム・グレイは、複数プライマリ型レプリケーションによるトランザクションモデルを研究し、最終的にその方式に懐疑的な論文を発表した。簡単に説明すると、グレイはデータベースが n 個のサブデータベースに自然に分割できない限り、並行性制御の競合が生じて性能を低下させ、その性能低下は n の関数で表されるだろうと主張した。彼は典型的な手法による性能低下が O(n3) になると予測した。従って、自然に分割できるような場合のみ、データベースの分割をすべきであるとの主張である。 現実は、それほどひどいことにはならなかった。例えば、1985年から1987年にかけて、仮想同期モデルが登場して標準として広く受け入れられるようになった(各社が採用し、CORBAのフォールトトレラント標準の基盤にもなった。また、IBM WebSphere やマイクロソフトのエンタープライズ・クラスタリング技術でもレプリケーションに採用された)。仮想同期は複数プライマリ型の実装も可能で、プロセスグループが協調して処理を並列化する。この方式はメモリ上のデータにしか適用できないが、グループの規模に比例して性能が向上する。 最近の製品でも同様の手法がサポートされている。例えばSpread Toolkitは仮想同期モデルをサポートし、複数プライマリ型レプリケーションの実装に使っている。C-Ensemble や Quicksilver でも同様の方式が可能である。WANdisco は動的レプリケーションが可能であり、ネットワーク上の全ノードが正確な複製になっていて、全ノードが同時に動作可能である(WAN向けに最適化されている)。
※この「プライマリ/バックアップ型と複数プライマリ型」の解説は、「レプリケーション」の解説の一部です。
「プライマリ/バックアップ型と複数プライマリ型」を含む「レプリケーション」の記事については、「レプリケーション」の概要を参照ください。
- プライマリ/バックアップ型と複数プライマリ型のページへのリンク