ユースケース1: 複数リージョン環境の設定
組織は、2つのオンプレミスKVStoreをフランクフルトとロンドンにそれぞれ1つずつデプロイします。要件に従って、両方のリージョンにいくつかのMR表を作成します。Users
表は、この組織が作成および保守する多くのMR表の1つです。次のいくつかのトピックでは、フランクフルトとロンドンのリージョンを設定する方法、およびこれらの2つのリージョンでUsers
というMR表を作成して操作する方法について説明します。
KVStoreのデプロイ
ローカル・リージョン名の設定
複数リージョンNoSQL Databaseのローカル・リージョンに名前を設定する方法について学習します。
フランクフルト(FRA)リージョンからローカル・リージョン名を設定します。
[oracle@host1]$ java -jar $KVHOME/lib/kvstore.jar runadmin \
-helper-hosts host1:5000,host2:5000,host5:5000
kv-> connect store -name earnback
Connected to earnback at host1:5000.
kv-> execute 'SET LOCAL REGION FRA'
Statement completed successfully
kv-> execute 'show regions'
regions
FRA (local, active)
ロンドン(LND)リージョンからローカル・リージョン名を設定します。
[oracle@host3]$ java -jar $KVHOME/lib/kvstore.jar runadmin \
-helper-hosts host3:5000,host4:5000,host6:5000
kv-> connect store -name earnback
Connected to earnback at host3:5000.
kv-> execute 'SET LOCAL REGION LND'
Statement completed successfully
kv-> execute 'show regions'
regions
LND (local, active)
XRegionサービスの構成
複数リージョンOracle NoSQL DatabaseでXRegionサービスを構成する方法について学習します
フランクフルト(FRA)リージョンのjson.config
ファイルの内容です。
{
"path": "/home/oracle/xrshome",
"agentGroupSize": 1,
"agentId": 0,
"region": "FRA",
"store": "earnback",
"security" : "/home/oracle/security/test.security",
"helpers": [
"host1:5000",
"host2:5000",
"host5:5000"
],
"regions": [
{
"name": "LND",
"store": "mrtstore",
"security" : "/home/oracle/remoteSecureStore/security/test.security",
"helpers": [
"host3:5000",
"host4:5000",
"host6:5000"
]
}
]
}
ロンドン(LND)リージョンのjson.config
ファイルの内容です。
{
"path": "/home/oracle/xrshome",
"agentGroupSize": 1,
"agentId": 0,
"region": "LND",
"store": "mrtstore",
"security" : "/home/oracle/security/test.security",
"helpers": [
"host3:5000",
"host4:5000",
"host6:5000"
],
"regions": [
{
"name": "DEN",
"store": "earnback",
"security" : "/home/oracle/remoteSecureStore/security/test.security",
"helpers": [
"host1:5000",
"host2:5000",
"host5:5000"
]
}
]
}
XRegionサービスの起動
XRSTART
コマンドにJSON構成ファイルの完全パスを指定して、各リージョンでXRegionサービスを起動する必要があります。このサービスは長時間実行されるプロセスであるため、コマンドの最後に&
を付加することで、バックグラウンド・プロセスとして起動することをお薦めします。
注意:
XRegionサービスを起動する前に、ローカルのKVStoreを起動する必要があります。ローカル・リージョンのKVStoreが起動していないか、アクセスできない場合、XRegionサービスは起動しません。フランクフルト(FRA)リージョンでXRegionサービスを起動します。
nohup java -Xms256m -Xmx2048m -jar $KVHOME/lib/kvstore.jar xrstart \
-config /home/oracle/xrshome/json.config > /home/oracle/xrshome/nohup.out &
[1] 24356
[oracle@host1 xrshome]$ nohup: ignoring input and redirecting stderr to stdout
[oracle@host1 xrshome]$ cat nohup.out
Cross-region agent (region=FRA, store=earnback, helpers=[host1:5000, host2:5000, host5:5000]) starts up from config file=/home/oracle/xrshome/json.config at 2019-11-07 08:57:34 UTC
ロンドン(LND)リージョンでXRegionサービスを起動します。
[oracle@host3 xrshome]$ nohup java -Xms256m -Xmx2048m -jar $KVHOME/lib/kvstore.jar xrstart \
-config /home/oracle/xrshome/json.config > /home/oracle/xrshome/nohup.out &
[1] 17587
[oracle@host3 xrshome]$ nohup: ignoring input and redirecting stderr to stdout
[oracle@host3 xrshome]$ cat nohup.out
Cross-region agent (region=LND, store=mrtstore, helpers=[host3:5000, host4:5000, host6:5000]) starts up from config file=/home/oracle/xrshome/json.config at 2019-11-07 08:58:57 UTC
リモート・リージョンの作成
複数リージョンNoSQL Databaseの各リージョンからリモート・リージョンを作成する方法を学習します。
注意:
次に示すコマンドはすべて、kv
プロンプトまたはsql
シェル・プロンプトから実行できます。sql
シェルからこれらのコマンドを実行する場合は、execute
キーワードを破棄します。
フランクフルト(FRA)リージョンからLNDという名前のリモート・リージョンを作成します。
[oracle@host1 xrshome]$ java -jar $KVHOME/lib/kvstore.jar runadmin \
-helper-hosts host1:5000,host2:5000,host5:5000
kv-> connect store -name earnback
Connected to earnback at host1:5000.
kv-> execute 'CREATE REGION LND'
Statement completed successfully
kv-> execute 'show regions'
regions
FRA (local, active)
LND (remote, active)
ロンドン(LND)リージョンからFRAという名前のリモート・リージョンを作成します。
[oracle@host3 ~]$ java -jar $KVHOME/lib/kvstore.jar runadmin \
-helper-hosts host3:5000,host4:5000,host6:5000
kv-> connect store -name mrtstore
Connected to mrtstore at host3:5000.
kv-> execute 'CREATE REGION FRA'
Statement completed successfully
kv-> execute 'show regions'
regions
LND (local, active)
FRA (remote, active)
複数リージョン表の作成
Users
表を作成します。
注意:
次に示すコマンドはすべて、kv
プロンプトまたはsql
シェル・プロンプトから実行できます。sql
シェルからこれらのコマンドを実行する場合は、各コマンドの前のexecute
キーワードを破棄します。
kv
プロンプトを使用して、フランクフルト(FRA)リージョンからUsers
というMR表を作成します。
kv-> execute 'CREATE TABLE Users (id INTEGER, name STRING, team STRING, PRIMARY KEY (id)) IN REGIONS FRA, LND'
Statement completed successfully
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" : "LND",
"1" : "FRA"
}
}
注意:
regions属性の下のID 1のリージョンはローカル・リージョンを指します。sql
シェル・プロンプトを使用して、ロンドン(LND)リージョンからUsers
というMR表を作成します。
sql-> CREATE TABLE Users (
id INTEGER,
name STRING,
team STRING,
PRIMARY KEY (id))
IN REGIONS LND, FRA;
Statement completed successfully
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"
"1" : "LND"
}
}
複数リージョン表へのアクセスおよび操作
Users
表に新しい行を挿入します。kv-> execute 'INSERT INTO Users VALUES(1,"Amy","HR")'
{"NumRowsInserted":1}
1 row returned
kv-> execute 'INSERT INTO Users VALUES(2,"Jack","HR")'
{"NumRowsInserted":1}
1 row returned
Users
表の行を読み取ります。kv-> execute 'SELECT * FROM Users'
{"id":2,"name":"Jack","team":"HR"}
{"id":1,"name":"Amy","team":"HR"}
2 rows returned
Users
表のid
=2の行を更新します。kv-> execute 'UPDATE Users SET team="IT" WHERE id=2'
{"NumRowsUpdated":1}
1 row returned
Users
表の更新行を読み取ります。kv-> execute 'SELECT * FROM Users'
{"id":2,"name":"Jack","team":"IT"}
{"id":1,"name":"Amy","team":"HR"}
2 rows returned
Users
表のid
=1の行を削除します。kv-> execute 'DELETE FROM Users WHERE id=1'
{"NumRowsDeleted":1}
1 row returned
Users
表の行を読み取ります。kv-> execute 'SELECT * FROM Users'
{"id":2,"name":"Jack","team":"IT"}
1 row returned
XRegionサービスの停止
フランクフルト(FRA)リージョンでXRegionサービスを停止します。
-bash-4.1$ java -Xmx1024m -Xms256m -jar $KVHOME/lib/kvstore.jar xrstop \
-config /home/oracle/xrshome/json.config
同様に、他のすべてのリージョンのXRegionサービスも停止する必要があります。