ネームスペース管理

ネームスペースは表のグループを定義するもので、その中ですべての表名を一意に識別する必要があります。ネームスペースを使用すると、表権限の管理をグループ操作として実行できます。

ネームスペース解決

ネームスペースに認可権限を付与すると、ネームスペースとネームスペース内の表の両方にアクセスできるユーザーを決定できます。

SQL文に含まれるtable_nameの表を解決するには、次のルールが適用されます。
    • table_nameにネームスペース名が含まれている場合、修飾表名によって表が一意に識別されるため、解決は必要ありません。
    • ネームスペース名を明示的に指定しなかった場合、使用されるネームスペースは、TableAPIのexecuteSync()execute()またはprepare()メソッドへの入力として指定される、ExecuteOptionsインスタンスに含まれるネームスペースです。
    • ExecuteOptionsでネームスペースが指定されていない場合、デフォルトのsysdefaultネームスペースが使用されます。

ExecuteOptionsで異なるネームスペースを使用すると、個別の同様の表で同じ問合せを実行できます。

ネームスペースの管理

SHOW NAMESPACES

SHOW NAMESPACES文は、システムのネームスペースのリストを提供します。出力をJSON形式にする場合は、AS JSONを指定できます。

例1: 次の文は、システムに存在するネームスペースをリストします。
SHOW NAMESPACES
出力:
namespaces
  sysdefault
例2: 次の文は、システムに存在するネームスペースをJSON形式でリストします。
SHOW AS JSON NAMESPACES
出力:
{"namespaces" : ["sysdefault"]}

DROP NAMESPACE

DROP NAMESPACE文を使用して、ネームスペースを削除できます。

IF EXISTSはオプションの句です。この句を指定し、同じ名前のネームスペースが存在しない場合、エラーは生成されません。この句を指定せず、同じ名前のネームスペースが存在しない場合は、ネームスペースが存在しないことを示すエラーが生成されます。

CASCADEは、表とその索引をこのネームスペース内で削除するかどうかを指定できるオプションの句です。この句を指定し、ネームスペースに表が含まれている場合は、このネームスペース内のすべての表とともにネームスペースが削除されます。この句を指定せず、ネームスペースに表が含まれている場合は、ネームスペースが空でないことを示すエラーが生成されます。

次の文は、ns1という名前のネームスペースを削除します。
DROP NAMESPACE IF EXISTS ns1 CASCADE

ネームスペース・スコープ指定権限

1つ以上のネームスペースをストアに追加したり、ストア内に表を作成したり、ユーザーにネームスペースや表にアクセスする権限を付与できます。次の権限をユーザーに付与できます。

システム・スコープ指定権限:
  • CREATE_ANY_NAMESPACE
  • DROP_ANY_NAMESPACE
ネームスペース・スコープ指定権限:
  • CREATE_TABLE_IN_NAMESPACE
  • DROP_TABLE_IN_NAMESPACE
  • EVOLVE_TABLE_IN_NAMESPACE
  • CREATE_INDEX_IN_NAMESPACE
  • DROP_INDEX_IN_NAMESPACE
次の例では、ネームスペースを作成し、そのネームスペースに表を作成して、その表にデータを追加した後ネームスペースを削除しています。また、ネームスペースに対する様々な権限をロール/ユーザーに割り当て、その後取り消す処理も示されています。
CREATE NAMESPACE IF NOT EXISTS ns; 
GRANT MODIFY_IN_NAMESPACE ON NAMESPACE ns TO usersRole; 
CREATE TABLE ns:t (id INTEGER, name STRING, primary key (id));
INSERT INTO ns:t VALUES (1, 'Smith'); 
SELECT * FROM ns:t; 
REVOKE CREATE_TABLE_IN_NAMESPACE ON NAMESPACE ns FROM usersRole; 
DROP NAMESPACE ns CASCADE;

ノート:

前述のコマンドをすべてsqlスクリプトとして保存し、1つのコマンドで実行できます。前述のコマンドのいずれかをSQLプロンプトの外部で実行する場合は、文末のセミコロンを削除します。