[pgsql-jp: 28138] Re: レプリケーション

Mashiki mashiki @ yanah.com
2002年 12月 1日 (日) 01:16:51 JST


 Mashikiです。

>> 現在公開中のバージョンではシーケンス・データのクラスタDB間での整合性はとっ
>> ていません.
>
>SERIAL 型 ( SEQUENCE )の整合性が取れないのは痛いですね。
>
>主キーを SERIAL 型にして自動取得して、その値を他の表の外部
>キーや、主キーの一部として使用するという使い方は多いと思います。
>
>また、外部に伝票類として出力されるデーターにも、受注番号や
>○○番号など SEQUENCE の値が使われるので、DB の外のデーター
>と レプリケーションされた DB の中の値が一致しないと、
>用途によっては致命的ですね。


僕が設計するシステムは全滅ですね。
無理やりやろうと思えば、例えばA,B,Cなる3つのサーバーで

A:
CREATE SEQUENCE seqKey START 1 MAXVALUE 10000000;

B:
CREATE SEQUENCE seqKey START 10000001 MAXVALUE 20000000;

C:
CREATE SEQUENCE seqKey START 20000001 MAXVALUE 30000000;

のようにSequenceを作っておくとか。この場合、シーケンスが
出す結果の「順序」という意味はなくなりますが、ユニーク性は
大丈夫でしょう。実際のサーバーのロケーションが関東、大阪、
福岡とかだったら、これはこれでわかり易いかも。


下は開き直る場合、

A:
CREATE SEQUENCE seqKey START 1 INCREMNT 3;

B:
CREATE SEQUENCE seqKey START 2 INCREMNT 3;

C:
CREATE SEQUENCE seqKey START 3 INCREMNT 3;



>> 次のバージョンはクラスタDB間でシーケンス・データの整合性を取れるように少
>> し工夫を加えています.テスト環境では,クラスタDBを後から追加してもシーケ
>> ンスのデータは整合性が取れていました.
>-- snip --
>
>次バージョンに期待します。

どのように実現しているのか興味しんしんです。キャッシュを2段階にして、
各サーバーでその枠を使い切ったら、マスターDBよりもらう感じかなあ。



pgsql-jp メーリングリストの案内