ネームスペースの作成

ネームスペースは表のグループを定義するもので、その中ですべての表名を一意に識別する必要があります。ネームスペースを使用すると、表権限の管理をグループ操作として実行できます。ネームスペースに認可権限を付与すると、ネームスペースとネームスペース内の表の両方にアクセスできるユーザーを決定できます。ネームスペースを使用すると、データベース・ストアに同じ名前の表を存在させることができます。このような表にアクセスするには、完全修飾の表名を使用します。完全修飾の表名では、表名の前にネームスペースがあり、その後にコロン(:)があります(ns1:table1など)。

すべての表は、ネームスペースの一部です。sysdefaultというデフォルトのOracle NoSQL Databaseネームスペースがあります。すべての表は、他のネームスペースを作成し、そこに新しいテーブルを作成するまで、デフォルトのsysdefaultネームスペースに割り当てられます。既存の表のネームスペースは変更できません。sysdefaultネームスペースの表は、完全修飾名を必要とせず、表名のみで操作できます。

CREATE NAMESPACE文を使用して、新しいネームスペースを追加できます。
CREATE NAMESPACE [IF NOT EXISTS] namespace_name

ノート:

sysで始まるネームスペース名は予約されています。接頭辞sysは、どのネームスペースにも使用できません。
次の文は、ns1という名前のネームスペースを定義します。
CREATE NAMESPACE IF NOT EXISTS ns1

APIの使用によるネームスペースの作成:

SystemRequestクラスを使用してネームスペースを作成できます。SystemRequestクラスは、表に依存しない管理操作を実行するために使用します。これらの操作は非同期であり、完了を確認する必要があります。

こちらにあるサンプルの中からフル・コードNamespaces.javaをダウンロードします。
private static void createNS(NoSQLHandle handle) throws Exception {
   String createNSDDL = "CREATE NAMESPACE IF NOT EXISTS ns1";
   SystemRequest sysreq = new SystemRequest();
   sysreq.setStatement(createNSDDL.toCharArray());
   SystemResult sysres = handle.systemRequest​(sysreq);
   sysres.waitForCompletion​(handle, 60000,1000);
   System.out.println("Namespace " + nsName + " is created");
}

SystemRequestクラスを使用してネームスペースを作成できます。SystemRequestクラスは、表に依存しない管理操作を実行するために使用します。

こちらにあるサンプルの中からフル・コードNamespaces.pyをダウンロードします。
def create_ns(handle):
   statement = '''CREATE NAMESPACE IF NOT EXISTS ns1'''
   sysreq = SystemRequest().set_statement(statement)
   sys_result = handle.system_request(sysreq)
   sys_result.wait_for_completion(handle, 40000, 3000)
   print('Created namespace: ns1')

SystemRequestクラスを使用してネームスペースを作成できます。SystemRequestクラスは、表に依存しない管理操作を実行するために使用します。これらは長時間実行される可能性がある操作であり、操作の完了を確認する必要があります。

こちらにあるサンプルの中からフル・コードNamespaces.goをダウンロードします。
func createNS(client *nosqldb.Client, err error)(){
    stmt := fmt.Sprintf("CREATE NAMESPACE IF NOT EXISTS ns1")
    sysReq := &nosqldb.SystemRequest{
		Statement: stmt,
    }
    sysRes, err := client.DoSystemRequest(sysReq)
    _, err = sysRes.WaitForCompletion(client, 60*time.Second, time.Second)
    if err != nil {
        fmt.Printf("Error finishing CREATE NAMESPACE request: %v\n", err)
        return
    }
    fmt.Println("Created Namespace ns1 ")
    return
}

adminDDLメソッドを使用してネームスペースを作成できます。adminDDLメソッドは、表に依存しない管理操作を実行するために使用します。

こちらからJavaScriptフル・コードNamespaces.jsを、こちらからTypeScriptフル・コードNamespaces.tsをダウンロードします。
async function createNS(handle) {
   const createNS = `CREATE NAMESPACE IF NOT EXISTS ns1`;
   let res = await handle.adminDDL(createNS);
   console.log('Namespace created: ns1' );
}

ExecuteAdminSyncメソッドは、表に依存しない管理操作を実行するために使用します。

こちらにあるサンプルの中からフル・コードNamespaces.csをダウンロードします。
private static async Task createNS(NoSQLClient client){
   var sql =
        $@"CREATE NAMESPACE IF NOT EXISTS ns1";
   var adminResult = await client.ExecuteAdminAsync(sql);
   // Wait for the operation completion
   await adminResult.WaitForCompletionAsync();
   Console.WriteLine("  Created namespace ns1");
}