ユースケース2: 複数リージョン表の拡張

組織は、2つのオンプレミスKVStoreをフランクフルトとロンドンにそれぞれ1つずつデプロイします。要件に従って、両方のリージョンにいくつかのMR表を作成します。Users表は、この組織が作成および保守する多くのMR表の1つです。組織拡大のため、ダブリンに別のNoSQL Databaseを追加することに決めました。新しいリージョンとしてダブリンを作成した後、既存のMR表を新しいリージョンに拡張します。次のいくつかのトピックでは、前のユースケースですでに作成したUsers表にダブリン・リージョンを追加する方法について学習します。

前にUsers MR表を作成していない場合は、ユースケース1: 複数リージョン環境の設定で説明した手順を実行してください。

前提条件

Users表を新しいリージョンに拡張する前に、次のタスクを実行して新しいリージョンを設定しておく必要があります。
  1. フランクフルト(FRA)とロンドン(LND)の2つのリージョンで構成される複数リージョンNoSQL Databaseを設定します。ユースケース1: 複数リージョン環境の設定を参照してください。
  2. dubstoreというストア名を持つローカルのKVStoreを新しいリージョンにデプロイします。構成の概要を参照してください。
  3. kvプロンプトから次のDDLコマンドを実行して、新しいリージョンのローカル・リージョン名をDUBに設定します。ローカル・リージョン名の設定を参照してください。
    kv-> execute 'SET LOCAL REGION DUB'
  4. 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"
     ]
     }
     ]
    }
  5. 既存のリージョンのフランクフルト(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"
          ]
        }
      ]
    }
  6. 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およびFRAUsers MR表にまだリンクされていないため、データは返されません。

既存のリージョンへの新しいリージョンの追加

新しいリージョン(DUB)でUsers表を作成するだけでなく、既存のリージョンのLNDおよびFRAUsers MR表に新しいリージョン(DUB)を追加する必要もあります。
既存のリージョンのUsers表に新しいリージョンを追加するには、次の手順を実行します。
  1. ローカル・リージョンからkvプロンプトに接続し、ローカルのKVStoreに接続します。
  2. 次のコマンドを実行して、新しいリージョン(DUB)をリモート・リージョンとして追加します。
    kv-> execute ‘CREATE REGION <new remote region>’
  3. オプションで、次のコマンドを実行して、リモート・リージョンが正常に作成されていることを確認できます。
    kv-> execute ‘show regions’
  4. 次を実行して、新しいリージョンをUsers MR表に追加します。
    kv-> execute 'alter table Users add regions DUB'
  5. オプションで、次のコマンドを実行して、MR表の作成を確認できます。
    kv-> show table -name 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表へのアクセス方法の詳細は、複数リージョン表へのアクセスおよび操作を参照してください。