ユースケース2: 複数リージョン表の拡張
組織は、2つのオンプレミスKVStoreをフランクフルトとロンドンにそれぞれ1つずつデプロイします。要件に従って、両方のリージョンにいくつかのMR表を作成します。Users
表は、この組織が作成および保守する多くのMR表の1つです。組織拡大のため、ダブリンに別のNoSQL Databaseを追加することに決めました。新しいリージョンとしてダブリンを作成した後、既存のMR表を新しいリージョンに拡張します。次のいくつかのトピックでは、前のユースケースですでに作成したUsers
表にダブリン・リージョンを追加する方法について学習します。
前にUsers
MR表を作成していない場合は、ユースケース1: 複数リージョン環境の設定で説明した手順を実行してください。
前提条件
Users
表を新しいリージョンに拡張する前に、次のタスクを実行して新しいリージョンを設定しておく必要があります。
- フランクフルト(
FRA
)とロンドン(LND
)の2つのリージョンで構成される複数リージョンNoSQL Databaseを設定します。ユースケース1: 複数リージョン環境の設定を参照してください。 dubstore
というストア名を持つローカルのKVStoreを新しいリージョンにデプロイします。構成の概要を参照してください。kv
プロンプトから次のDDLコマンドを実行して、新しいリージョンのローカル・リージョン名をDUB
に設定します。ローカル・リージョン名の設定を参照してください。kv-> execute 'SET LOCAL REGION DUB'
DUB
リージョンでXRegionサービスを構成して起動します。XRegionサービスの構成およびXRegionサービスの起動を参照してください。DUB
リージョンのサンプルjson.config
ファイル:{ "path": "/home/oracle/xrshome", "agentGroupSize": 1, "agentId": 0, "region": "DUB", "store": "dubstore", "helpers": [ "host7:5000", "host8:5000", "host9:5000" ], "regions": [ { "name": "FRA", "store": "earnback", "helpers": [ "host1:5000", "host2:5000", "host5:5000" ] }, { "name": "LND", "store": "mrtstore", "helpers": [ "host3:5000", "host4:5000", "host6:5000" ] } ] }
- 既存のリージョンのフランクフルト(
FRA
)およびロンドン(LND
)のjson.config
ファイルを更新して、DUB
(ダブリン)をリモート・リージョンとして追加します。注意:
json.config
ファイルから新しいリージョン(DUB
)を選択するには、既存のリージョンのエージェントを再起動する必要があります。LND
リージョンのサンプルjson.config
ファイル:{ "path": "/home/oracle/xrshome", "agentGroupSize": 1, "agentId": 0, "region": "LND", "store": "mrtstore", "helpers": [ "host3:5000", "host4:5000", "host6:5000" ], "regions": [ { "name": "FRA", "store": "earnback", "helpers": [ "host1:5000", "host2:5000", "host5:5000" ] }, { "name": "DUB", "store": "dubstore", "helpers": [ "host7:5000", "host8:5000", "host9:5000" ] } ] }
FRA
リージョンのサンプルjson.config
ファイル:{ "path": "/home/oracle/xrshome", "agentGroupSize": 1, "agentId": 0, "region": "FRA", "store": "earnback", "helpers": [ "host1:5000", "host2:5000", "host5:5000" ], "regions": [ { "name": "LND", "store": "mrtstore", "helpers": [ "host3:5000", "host4:5000", "host6:5000" ] }, { "name": "DUB", "store": "dubstore", "helpers": [ "host7:5000", "host8:5000", "host9:5000" ] } ] }
kv
プロンプトから次のDDLコマンドを実行して、新しいリージョンに対してLND
(ロンドン)およびFRA
(フランクフルト)の2つをリモート・リージョンとして作成します。リモート・リージョンの作成を参照してください。kv-> execute 'CREATE REGIONS LND, FRA'
新しいリージョンでのMR表の作成
Users
MR表を新しいリージョンに拡張する最初のステップとして、次のDDLコマンドを実行して、新しいリージョンにUsers
表を作成する必要があります。複数リージョン表の作成を参照してください。kv-> execute 'create table Users (id integer, name string, team string, primary key(id)) in regions DUB, LND, FRA;
注意:
上のDDLコマンドを実行すると、3つのリージョンで構成されるMR表としてUsers
表がDUB
リージョンに作成されます。ただし、この表を問い合せても、新しいリージョン(DUB)が既存のリージョンのLND
およびFRA
のUsers
MR表にまだリンクされていないため、データは返されません。
既存のリージョンへの新しいリージョンの追加
DUB
)でUsers
表を作成するだけでなく、既存のリージョンのLND
およびFRA
のUsers
MR表に新しいリージョン(DUB
)を追加する必要もあります。
Users
表に新しいリージョンを追加するには、次の手順を実行します。
LND
リージョンからリモート・リージョンとしてDUBを作成します。
kv-> EXECUTE 'CREATE REGION DUB'
Statement completed successfully
DUB
リージョンがロンドンにリモート・リージョンとして追加されていることを確認します。
kv-> execute 'show regions'
regions
LND (local, active)
FRA (remote, active)
DUB (remote, active)
LND
リージョンからUsers
MR表にDUB
リージョンを追加します。
kv-> execute 'alter table Users add regions DUB'
Statement completed successfully
DUB
リージョンがロンドンのUsers
表に追加されていることを確認します。
kv-> show table -name Users
{
"json_version" : 1,
"type" : "table",
"name" : "Users",
"shardKey" : [ "id" ],
"primaryKey" : [ "id" ],
"fields" : [ {
"name" : "id",
"type" : "INTEGER",
"nullable" : false,
"default" : null
}, {
"name" : "name",
"type" : "STRING",
"nullable" : true,
"default" : null
}, {
"name" : "team",
"type" : "STRING",
"nullable" : true,
"default" : null
} ],
"regions" : {
"2" : "FRA",
"3" : "DUB",
"1" : "LND"
}
}
FRA
)リージョンからDUB
をリモート・リージョンとして追加します。次に、フランクフルト(FRA
)リージョンのUsers
MR表を変更して、新しいリージョン(DUB
)を追加します。
新しいリージョンおよび既存のリージョンのMR表へのアクセス
前の各項で説明したタスクを実行すると、新しいリージョンからUsers
表に対して読取り/書込み操作を中断なしに実行できるようになります。ただし、初期化がバックグラウンドで完了するまで、表は既存のリージョンから完全なデータを返すことができません。特に、既存のリージョンのUsers
表に大量のデータが含まれている場合は、新しい表にリモート・リージョンのデータが表示されるまでにしばらく時間がかかることがあります。
同様に、既存のリージョンからのUsers
表に対する読取り/書込み操作も引き続き中断なしに実行できます。新しいリージョンの追加は、既存のリージョンのUsers
表にアクセスする顧客に対して透過的です。ただし、既存のリージョンのUsers
表については、新しいリージョンからの書込みを表示するために初期化が必要になる場合もあります。新しいリージョンの表が空か、小さい場合、既存のリージョンはその表とすぐに同期されます。MR表へのアクセス方法の詳細は、複数リージョン表へのアクセスおよび操作を参照してください。