Slony-I のレプリカのセットを設定するには、使用される以下の主要な抽象概念を理解することが必要です。
クラスタ
ノード
レプリケーションセット
オリジン、プロバイダ、およびサブスクライバ
slon デーモン
slonik 構成プロセッサ
同時にいくらかのロシア語単語の意味を知っておく価値があります。
slon はロシア語で"象"の意味です。
slony は slon の複数形です。したがって象の群れを意味します。
slonik はロシア語で"小象"の意味です。
Slony-I でこれらの用語を使用するのは Slony-I で使われているいくつかのアルゴリズムに影響を与えた rserv プロトタイプの責任者である Vadim Mikheev に敬意を表するものです。
Slony-I 用語のクラスタは名前が付けられた PostgreSQL データベースインスタンスのセットで、レプリケーションはこれらのデータベース間で行われます。
クラスタ名は指示文を通じてそれぞれの、そして全ての Slonikスクリプトで指定されます。
cluster name = 'something';
クラスタ名が something だとすると、Slony-I はクラスタ内のそれぞれのデータベースインスタンスに、名前空間/スキーマ _something を作成します。
Slony-I ノードはレプリケーションに参加する名前の付けられた PostgreSQL データベースです。
ノードは指示文を使ってそれぞれの Slonik スクリプトのほぼ先頭で定義されます。
NODE 1 ADMIN CONNINFO = 'dbname=testdb host=server1 user=slony';
ADMIN CONNINFO 情報は最終的に PQconnectdb() libpq 関数に渡されるデータベース接続情報を示します。
従って、Slony-I クラスタは以下から構成されます。
クラスタ名
それぞれがクラスタ名に基づく名前空間を所有する Slony-I ノードのセット
レプリケーションセットは Slony-I クラスタ内のノード間で複製されるテーブルとシーケンスのセットとして定義されます。
複数のセットを持つことが可能で、レプリケーションの"フロー"はそれらのセット間で一意である必要はありません。
それぞれのレプリケーションセットはいくつかのオリジンノードを持っていて、複製されるテーブル内のデータの変更が許可されているユーザアプリケーションの唯一の場所です。これは"マスタープロバイダ"とも呼ばれ、データがそこから供給される主要の場所です。
レプリケーションセットをサブスクライブするクラスタ内の他のノードで、データを受け取る必要があることを意味します。
オリジンノードは"サブスクライバ"であっては決してなりません。(クラスタが再構成され、オリジンが他のノードに急遽移動された場合を除外。)とは言っても、Slony-I はカスケードされたサブスクリプションの概念をサポートしています。つまり、何らかのセットをサブスクライブするノードはクラスタ内の他のノードに対してそのレプリケーションセットについて"プロバイダ"として振る舞えます。
クラスタ内のそれぞれのノードには、そのノードに対するレプリケーション活動を管理する slon プロセスがあります
slon はレプリケーション事象を処理する C で実装されたプログラムです。
構成事象
slonik スクリプトが走ると標準で発生し、クラスタの構成に更新を掛けます。
SYNC 事象
複製されたテーブルの更新を SYNC でグループ化する。
slonik コマンドプロセッサは、Slony-I クラスタの構成を更新する事象の発行に使用される"短い文章"のスクリプトを処理します。