7. Slony-I レプリケーションセットの定義

データベースサーバのクラスタの形式を示すノードの定義で、お互いにどのデータを複製するかを決めます。複製されるデータのグループを"セット"と定義します。

レプリケーションセットは以下から成ります。

7.1. 主キー

Slony-I はレプリケートされるそれぞれのテーブル上に主キーもしくはそれの候補を持つことが必要です。PK の値はソースシステムの中で変更されるそれぞれの他プルに対する主識別子として使用されます。Slony-I が主キーを取り扱えるようにするには3つの方法があります。

"真の"主キーを取り上げるか、もしくは単なる"主キー候補"を取り上げるかはそれほど重要ではありません。とは言っても、Slony-I に PK 列を挿入させるのではなく、主キーまたは主キー候補を持っていることをお勧めします。適当な主キーを持たないと言うことは、アプリケーションの観点から一意の値を保持する機構をテーブルが保有していないことです。と言うわけで Slony-I にアプリケーションに対し新規の故障モードを導入させることもあります。このことはデータベースに混同したデータを入力しなければならなくなることを示唆しています。

7.2. セットにテーブルをグループ化

テーブルが外部キー制約により関連付けられている場合、それらのテーブルを単一のセットにグループ化することは致命的です。このように関連付けられたテーブルは一緒にレプリケートされません。1つのノードから他に"マスタープロバイダ"を切替えようとした時、トラブルに見舞われ、依存するテーブルの内容が見当たらないので"マスター"がまともに更新されないことを発見するでしょう。

全てのテーブルを1つのレプリケーションセットにまとめたくない理由はいくつか存在します。

7.3.

SYNC が処理されるたびに、セット内の全てのシーケンスに対する値が記録されます。もしも数多くのシーケンスがあると、sl_seqlog がやや大きめに成長する原因になります。

このことはテーブルとシーケンスの重要な相違を指摘しています。多くか何らかの活動が見出されないテーブルを追加するとしたら、レプリケーションによって行われる仕事に何らの資源も読み込みません。レプリケートされたシーケンスに対して値はサブスクライバに定期的に伝播されなければなりません。効果を考慮してください。