web-dev-qa-db-ja.com

スレーブノードを選択するためのSlonyレプリケーションの指導

Dbクラスターには最大256ノードのシステムがあります。それらの1つから他のすべてにデータを複製する必要があります。ただし、複製するすべての行には、複製する必要のあるノードのリストがありますが、他のノードでは、同じ行が親テーブルキーの1つなしで孤立します。それらを除外するため、またはそれらが不必要に複製されるのを防ぐために、複製するノードを選択するようにSlonyに教える方法を見つけようとしていますが、そのような機能はすぐには利用できません。誰かがそれを試しましたか(その機能のソースコードをカスタマイズするなど)?

_id,_text,_nodes
----------------
1   'one' {1,101} 
2   'two' {2,102}
256 '...' {0,256}

次に、行id = 1がノード1や101などに複製されます。

同様の議論 重要なレコードのみを特定のデータベースに複製する ただし、まだ正しい方向を示していません。

2
Gonki

これを直接行う方法がわかりません。私が理解しているように、Slonyはレプリケーションの宛先を行レベルではなくテーブルレベルに設定します。

この特定の問題を解決する方法は、レプリケーションの宛先グループに基づいてビューをマテリアライズし、トリガーを使用してそれらを維持することです。その後、Slonyはこれらのテーブルをスレーブに複製できるはずです。メインテーブルにデータを入力するスレーブにトリガーを設定できるかどうかはわかりませんが、そうでない場合は、回避する方法があります。これには、初期テーブルをレプリケーションから切り離す必要があり、もちろん複雑さが増します。

1
Chris Travers

プッシュプルキューイングスキーマを使用したPGQでこれを実現できました。最大の課題は、コンシューマーを正しくプログラミングすることでしたが、今ではうまく機能しています。また、Slonよりも高速です。

0
Gonki