5. Slony-I の概念

Slony-I のレプリカのセットを設定するには、使用される以下の主要な抽象概念を理解することが必要です。

同時にいくらかのロシア語単語の意味を知っておく価値があります。

Slony-I でこれらの用語を使用するのは Slony-I で使われているいくつかのアルゴリズムに影響を与えた rserv プロトタイプの責任者である Vadim Mikheev に敬意を表するものです。

5.1. クラスタ

Slony-I 用語のクラスタは名前が付けられた PostgreSQL データベースインスタンスのセットで、レプリケーションはこれらのデータベース間で行われます。

クラスタ名は指示文を通じてそれぞれの、そして全ての Slonikスクリプトで指定されます。

cluster name = 'something';

クラスタ名が something だとすると、Slony-I はクラスタ内のそれぞれのデータベースインスタンスに、名前空間/スキーマ _something を作成します。

5.2. ノード

Slony-I ノードはレプリケーションに参加する名前の付けられた PostgreSQL データベースです。

ノードは指示文を使ってそれぞれの Slonik スクリプトのほぼ先頭で定義されます。

 NODE 1 ADMIN CONNINFO = 'dbname=testdb host=server1 user=slony';

ADMIN CONNINFO 情報は最終的に PQconnectdb() libpq 関数に渡されるデータベース接続情報を示します。

従って、Slony-I クラスタは以下から構成されます。

5.3. レプリケーションセット

レプリケーションセットは Slony-I クラスタ内のノード間で複製されるテーブルとシーケンスのセットとして定義されます。

複数のセットを持つことが可能で、レプリケーションの"フロー"はそれらのセット間で一意である必要はありません。

5.4. オリジン、プロバイダ、およびサブスクライバ

それぞれのレプリケーションセットはいくつかのオリジンノードを持っていて、複製されるテーブル内のデータの変更が許可されているユーザアプリケーションの唯一の場所です。これは"マスタープロバイダ"とも呼ばれ、データがそこから供給される主要の場所です。

レプリケーションセットをサブスクライブするクラスタ内の他のノードで、データを受け取る必要があることを意味します。

オリジンノードは"サブスクライバ"であっては決してなりません。(クラスタが再構成され、オリジンが他のノードに急遽移動された場合を除外。)とは言っても、Slony-I はカスケードされたサブスクリプションの概念をサポートしています。つまり、何らかのセットをサブスクライブするノードはクラスタ内の他のノードに対してそのレプリケーションセットについて"プロバイダ"として振る舞えます。

5.5. slon デーモン

クラスタ内のそれぞれのノードには、そのノードに対するレプリケーション活動を管理する slon プロセスがあります

slon はレプリケーション事象を処理する C で実装されたプログラムです。

5.6. slonik 構成プロセッサ

slonik コマンドプロセッサは、Slony-I クラスタの構成を更新する事象の発行に使用される"短い文章"のスクリプトを処理します。