表およびリージョンの管理

最初にサンプル表を作成します。その後、表を変更するための様々な方法を学習します。項の最後で、その表を削除します。また、既存のリージョンの表示および特定のリージョンの削除についても学習します。

KVSTOREまたはKVLiteを起動し、SQLシェルを開きます。
java -jar lib/kvstore.jar kvlite -secure-config disable
java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstore

表の変更

alter tableコマンドを使用すると、次の操作を実行できます。
  • 表スキーマへのスキーマ・フィールドの追加
  • 表スキーマからのスキーマ・フィールドの削除
  • リージョンの追加
  • リージョンの削除
  • 表の存続時間値の変更

ノート:

1つのコマンドで指定できる操作のタイプは1つだけです。たとえば、スキーマ・フィールドの削除とTTL値の設定を一緒に行うことはできません。
サンプル表を作成します。
CREATE TABLE demo_acct(
acct_id INTEGER,
acct_data JSON, 
PRIMARY KEY(acct_id)
)
例1: 表スキーマへのスキーマ・フィールドの追加。
ALTER TABLE demo_acct(ADD acct_balance INTEGER)

説明: フィールドを追加しても、表内の既存の行には影響しません。フィールドを追加すると、そのデフォルト値またはNULLが、このフィールドを含まない既存の行で、このフィールドの値として使用されます。追加するフィールドは、最上位フィールド(つまり、表の列)にすることも、階層表スキーマ内で深くネストすることもできます。その結果、フィールドはパスを介して指定されます。

例2: 表スキーマからのスキーマ・フィールドの削除。
ALTER TABLE demo_acct(DROP acct_balance)
説明: 主キー以外の任意のフィールドをスキーマから削除できます。主キー・フィールドを削除しようとすると、次に示すエラーが表示されます。
ALTER TABLE demo_acct(DROP acct_id)
出力(エラーの表示):
Error handling command ALTER TABLE demo_acct(DROP acct_id):
Error: at (1, 27) Cannot remove a primary key field: acct_id

例3: リージョンの追加

add regions句を使用すると、マルチリージョンのOracle NoSQL Database環境で既存の複数リージョン表(MR表)を新しいリージョンとリンクできます。この句を使用して、MR表を新しいリージョンに展開します。

次のDDLコマンドを使用して、新しいリージョンを既存のMR表に関連付けます。
ALTER TABLE <table_name> ADD REGIONS <region_name>

説明: ここで、table_nameはMR表で、region_nameは既存のリージョンです。

例4: リージョンの削除

リージョンの削除句を使用すると、マルチリージョンのOracle NoSQL Database環境で参加リージョンから既存のMR表を切断できます。この句を使用すると、MR表を縮小してリージョンを減らすことができます。

マルチリージョンのNoSQL Database設定で特定のリージョンからMR表を削除するには、参加している他のすべてのリージョンから次のステップを実行する必要があります。
ALTER TABLE <table_name> DROP REGIONS <comma_separated_list_of_regions>

ここで、table_nameはMR表、comma_separated_list_of_regionsは削除されるリージョンのリストです。

例5: 表の存続時間値の変更

存続時間(TTL)のメカニズムを使用すると、表の行に時間枠を設定して、それを経過すると、行が自動的に期限切れになって使用できなくなるようにできまます。デフォルトでは、作成するすべての表のTTL値は、有効期限がないことを示すゼロとなります。

ALTER TABLEコマンドを使用すると、任意の表のこの値を変更できます。TTLを数値で指定し、その後にHOURSまたはDAYSを指定できます。
ALTER TABLE demo_acct USING TTL 5 days

ノート:

表のTTL値を変更しても、表の既存の行のTTL値は変更されません。かわりに、表の変更後に作成された行に配置されるデフォルトのTTL値のみが変更されます。表内のすべてのレコードのTTLを変更するには、表の各レコードを反復処理してそのTTL値を更新する必要があります。

表の削除

drop table文は、指定された表および関連するすべての索引をデータベースから削除します。デフォルトでは、指定された表が存在しない場合、この文は失敗します。オプションのIF EXISTS句が指定され、表が存在しない場合、エラーは表示されません。
DROP TABLE demo_acct

ノート:

MR表を削除するには、まずその子表をすべて削除します。そうしないと、DROP文はエラーになります。

リージョンの管理

show regions文は、複数リージョンのOracle NoSQL Databaseに存在するリージョンのリストを提供します。出力をJSON形式にする場合は、AS JSONを指定する必要があります。

例1: 次の文は、既存のすべてのリージョンをリストします。
SHOW REGIONS
次の文は、既存のすべてのリージョンをJSON形式でリストします。
SHOW AS JSON REGIONS
マルチリージョンOracle NoSQL Database環境で、drop region文は、指定されたリモート・リージョンをローカル・リージョンから削除します。マルチリージョン設定のローカル・リージョンおよびリモート・リージョンの詳細は、複数リージョン環境の設定に関する項を参照してください。

ノート:

このリージョンは、コマンドが実行されるローカル・リージョンと異なっている必要があります。
次のdrop region文は、my_region1という名前のリモート・リージョンを削除します。
DROP REGION my_region1