 |
|
前のページ 1 2 3 4 次のページ
|
 |
データベースのレプリケーションを考えるために
|
データベースのレプリケーションを考えるために、「ライトセット(write set)」という考え方を導入します。
データを書き換えるようなSQL文(INSERT、UPDATE、DELETEなどの文)の動作を表すために、これらの文が具体的にどのテーブルのどのタプルをどのような値にするかを、(W1,W2,…,Wn)といった操作の集まりで表すことにします。これをライトセットといいます。複数のSQL文を束ねてライトセットとすることも可能です。
SQL文だけでは何がどうなるのかよくわかりませんが、ライトセットを考えるとレプリケーションのやり方をどう考えればいいかがわかります。
同じ順序でライトセットを実行することができれば、2つのデータベースは同じになり、レプリケーションができます。データベースのレプリケーションを作るには、SQL文を同じ順序でデータベースに送るだけでは不十分で、データベースの内部で同じライトセットが同じ順序で実行されるようにしなければならないのです。
本連載で解説したデータベースのクラスタリングに比べても、大変に実装が難しい技術です。実際には、ライトセットの中で変更するタプルがすべて違う場合は、どちらを先に実行しても順序は変わりませんが、同じタプルを変更する場合には、その順序をどこでも同じにしなければならないのです。
|
非同期マスタースレーブの動作
|
図3の場合には、マスターのデータベースで実行されたライトセットを「トリガ」を使って取り出すことができます。トリガとは、SQLの機能の1つで、データベースのデータが変更された場合、その前後などに特定の処理が実行されるようにする機能で、多くのデータベースで提供されています。
トリガでは、どのテーブルのどのタプルがどのように変更されるのかを調べることができますので、これを順に取り出してスレーブに送り、スレーブのデータベースで、同じ変更を同じ順序で実行することができます。図3ですでに説明した通りです。
|
同期マルチマスターの動作
|
同期マルチマスターの場合は、様相が違います。複数のマスターサーバには違うSQL文がどんどん入ってきます。これらの中には、同じタプルを更新するようなものもあるはずです。図5の例からもわかるように、単純にSQLを実行するだけではすべてのサーバのデータベースを同じにしておくことはできないのです。
もう少し工夫して、図6のように考えます。
図6:分散ロックを使って2つのデータベースが同じ内容になるようにする
サーバAでは、このSQLを処理する前に、サーバBでも同じ変更ができることが保証できるように、サーバAのデータをロックすると同時にサーバBでも同じデータをロックします。サーバBでも、サーバBとサーバAのデータをロックします。こうすることで、データの更新順序を保証することが可能です。
このように、他のサーバのデータをロックすることを、「分散ロック」ということがあります。分散ロックは、確実に処理を行うことが可能になりますが、比較的遅いネットワークを介して制御を行うため、性能を上げることが難しいのです。
最近の高速ネットワークは、毎秒10Gbもの速度がでますが、これはピークの性能であって、実際にデータを送りはじめるまでにはもっともっと時間がかかるのです。せっかくマルチマスター構成にして、何台ものサーバで同時にSQLを処理しようとしても、その利点をうまくいかすことができないのです。
|
Slony-II
|
現在PostgreSQLのコミュニティ内で検討されているSLONY-IIという方式を解説します。Slony-IIは、非同期のマスタスレーブのSlony-Iを発展させ、本格的な同期マルチマスターレプリケーションを実現することを目標にしたオープンソースプロジェクトです。
今年2月トロントで会議を持ち、基本的な方式を検討しました。プロジェクトリーダーは、PostgreSQLの開発コアメンバーでもあるJan Wieck氏で、同じくPostgreSQLの開発コアメンバーであるTom Lane氏、PostgreSQL上のデータベースレプリケーションを長年研究してきたBettina Kemme氏をはじめ、富士通オーストラリアのGavin Sherry氏、またNTTデータからもメンバーが参加しています。
Slony-IIでは、2つの技術を使います。「グループコミュニケーション」と「ライトセット」です。
|
前のページ 1 2 3 4 次のページ
|

|
|

|
著者プロフィール
NTTデータ先端技術株式会社 鈴木 幸市
Unixにおける日本語ハンドリング、Oracleの移植、オブジェクトリレーショナルデータベースのエンジンの開発などに携わる。現在、NTTデータ先端技術にてLinux、PostgreSQLなどのオープンソースソフトウェアに関する技術を統括している。著書に「RDBMS解剖学」(翔泳社)、訳書に「オブジェクト指向データベース入門」(共立出版)など。
|
|
|
|