#1 (Region A) Cluster #2 (Region B) 更新 参照 参照 • リージョンレベルの可用性 • 低レイテンシー Zone A Zone B Zone C Zone A Zone B Zone C xClusterとは • リージョン障害や自然災害に対応したい • ゼロRPOよりも書き込み・読み取り性能を重視 ユースケース • 異なるリージョンに独立した2つのクラスタをデプロイ • 2つのクラスタ間で双方向非同期レプリケーションを行う • レイテンシーを抑えつつ、リージョンレベル可用性を実現
US 2 India 3 France 4 US 5 France … id Region 1 US 4 US id Region 2 India id Region 3 France 5 France Step 1: tablespace作成 CREATE TABLESPACE us_west_2_tablespace WITH ( replica_placement='{"num_replicas": 3, "placement_blocks": [ {"cloud":"aws","region":"us-west-2","zone":"us-west-2a","min_num_replicas":1}, {"cloud":"aws","region":"us-west-2","zone":"us-west-2b","min_num_replicas":1}, {"cloud":"aws","region":"us-west-2","zone":"us-west-2c","min_num_replicas":1}]}'); Step 2: 親テーブル作成 CREATE TABLE users ( id INTEGER NOT NULL, ... region VARCHAR, ) PARTITION BY LIST (region); Step 3: パーティションテーブル作成 CREATE TABLE users_us PARTITION OF users ( id, ..., region, PRIMARY KEY (id HASH)) FOR VALUES IN ('US') TABLESPACE us_west_2_tablespace;