关于区间
了解如何在使用 Oracle NoSQL Database Drivers 创建和使用 Oracle NoSQL Database Cloud Service 表时指定区间。
Oracle NoSQL Database Cloud Service 表在区间中创建并限定到该区间。以特定用户身份进行验证后,除非另有指定,否则您的表将在租户的根区间中管理。将表组织到不同的区间将有助于提高组织和安全性。
如果您已使用实例主体进行验证(从 OCI 计算实例访问服务),则必须使用区间 ID (OCID) 指定区间,因为在这种情况下没有默认设置。请参阅 Oracle Cloud Infrastructure 文档中的从实例调用服务。
可通过多种方法在应用代码中指定区间:
-
在
NoSQLHandleConfig中使用默认区间,以便将其应用于使用该句柄的所有操作。有关示例,请参阅获取 NoSQL 句柄。 -
除表名外,还可以在每个请求中使用区间名称或 ID (OCID)。这将覆盖任何默认区间。
例如:
GetRequest getReq = new GetRequest().setTableName("mytable") .setCompartment("mycompartment"); -
在表名上使用区间名称作为前缀。这将覆盖任何默认区间以及使用 API 指定的区间。
例如:
GetRequest getReq = new GetRequest().setTableName("mycompartment:mytable");
使用指定的区间时,名称可以是顶层区间的简单名称,也可以是嵌套区间的路径。在后一种情况下,路径是“。”(点)分隔的路径。
注:指定嵌套区间的路径时,请勿在路径中包括从租户推断出的顶层区间名称。
可通过多种方法在应用代码中指定区间:
-
存在允许为
borneo.NoSQLHandleConfig.set_compartment()中的请求指定默认区间的方法。这将覆盖用户的默认区间。 -
此外,还可以在每个
Request实例中指定区间。
set_compartment 方法采用 ID (OCID)、区间名称或路径。如果使用区间名称,则可能是顶层区间的名称。
注:如果使用区间路径引用嵌套区间,则该路径是一个点分隔路径,它不包括该路径的顶层区间,例如 compartmentA.compartmentB。
可以在请求、查询或 DDL 语句中使用区间名称作为表名的前缀,而不是在请求中设置区间。此使用情况将覆盖区间的任何其他设置。例如:
...
request = PutRequest().set_table_name('mycompartment:mytable')
...
create_statement = 'create table mycompartment:mytable(...)'
...
request = GetRequest().set_table_name('compartmentA.compartmentB')
可通过多种方法在应用代码中指定区间:
-
您可以设置所需的区间名称或 ID。
-
设置为空字符串以使用默认区间,即租户的根区间。
-
如果使用嵌套区间,请将相对于根区间的完整区间路径指定为 compartmentID。例如,如果使用 rootCompartment.compartmentA.compartmentB,则 compartmentID 应设置为
compartmentA.compartmentB。 -
您还可以使用区间 OCID 作为字符串值。
compartmentID:="<optional-compartment-name-or-ID>"
iam.NewRawSignatureProvider(tenancy, user, region, fingerprint, compartmentID,
privateKey, &privateKeyPassphrase)
通过设置传递给 NoSQLClient 构造器的配置的区间属性,可以为 NoSQLClient 实例执行的所有操作指定默认区间:
import { NoSQLClient,Region } from 'oracle-nosqldb';
const client = new NoSQLClient({
region: Region.US_ASHBURN_1,
compartment: 'mycompartment'
});
字符串值可以是区间 ID、区间名称或路径。如果是简单名称,则必须指定顶层区间。如果是嵌套区间的路径,则必须排除顶层区间,因为它是从租户推断出来的。也可以在选项对象的每个请求中指定区间。此值将覆盖初始配置值。
如果您未指定区间,则租户的根区间将用作默认值。这仅适用于您对特定用户的身份进行授权。如果使用实例主用户或资源主用户进行验证,则必须指定区间 ID,因为在这些情况下没有默认值。
如果未提供区间,则租户 OCID 将用作默认值。请注意,这仅适用于您对用户身份进行授权的情况。使用实例主用户或资源主用户时,必须指定区间 ID。
有关设置实例主体的过程,请参见 Calling Services from an Instance 。有关设置资源主体的过程,请参见 Accessing Other Oracle Cloud Infrastructure Resources from Running Functions 。
表的默认区间是用户租户的根区间。可以通过设置 NoSQLConfig 的区间属性为所有操作指定默认区间。例如:
var client = new NoSQLClient(
new NoSQLConfig
{
Region=Region.US_ASHBURN_1,
Compartment="<compartment_ocid_or_name>"
});
字符串值可以是区间 OCID、区间名称或路径。如果是简单名称,则必须指定顶层区间。如果是嵌套区间的路径,则必须排除顶层区间,因为它是从租户推断出来的。
此外,所有操作选项类都具有 Compartment 属性,例如 TableDDLOptions.Compartment、GetOptions.Compartment、PutOptions.Compartment 等。因此,您还可以为任何操作单独指定比较。此值(如果已设置)将覆盖 NoSQLConfig 中的区间值(如果有)。
如果未提供区间,则租户 OCID 将用作默认值。请注意,这仅适用于您对用户身份进行授权的情况。使用实例主用户或资源主用户时,必须指定区间 ID。