ネームスペース管理
ネームスペースは表のグループを定義するもので、その中ですべての表名を一意に識別する必要があります。ネームスペースを使用すると、表権限の管理をグループ操作として実行できます。
ネームスペース解決
ネームスペースに認可権限を付与すると、ネームスペースとネームスペース内の表の両方にアクセスできるユーザーを決定できます。
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プロンプトの外部で実行する場合は、文末のセミコロンを削除します。