关于区间

了解如何使用 Oracle NoSQL Database Drivers 创建和使用 Oracle NoSQL Database Cloud Service 表时如何指定区间。

Oracle NoSQL Database Cloud Service 表在区间中创建,并限定到该区间。以特定用户身份验证后,除非另有指定,否则您的表在租户的根区间中进行管理。将表组织到不同的区间有助于提高组织和安全性。

如果您已使用实例主体进行验证(从 OCI 计算实例访问服务),则必须使用其 ID (OCID) 指定区间,因为在这种情况下没有默认值。请参阅 Oracle Cloud Infrastructure 文档中的从实例调用服务

在应用程序代码中指定区间的方法有多种:
  1. 使用 NoSQLHandleConfig 中的默认区间,使其适用于使用句柄的所有操作。有关示例,请参见 Obtaining a NoSQL Handle
  2. 除了表名外,还应在每个请求中使用区间名称或 ID (OCID)。这将覆盖任何默认区间。
    例如:
    GetRequest getReq = new GetRequest().setTableName("mytable")
                                        .setCompartment("mycompartment");
  3. 使用区间名称作为表名称的前缀。这将覆盖任何默认区间以及使用 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 。有关设置资源主体的过程,请参阅从运行函数访问其他 Oracle Cloud Infrastructure 资源

表的默认区间是用户租户的根区间。可以通过设置区间属性 NoSQLConfig 来指定所有操作的默认区间。例如:
var client = new NoSQLClient(
    new NoSQLConfig
    {
        Region=Region.US_ASHBURN_1,
        Compartment="<compartment_ocid_or_name>"
    });
字符串值可以是区间 OCID,也可以是区间名称或路径。如果是简单名称,则必须指定顶级区间。如果是嵌套区间的路径,则必须排除顶级区间(因为它是从租户推断出来的)。

此外,所有操作选项类都具有 Compartment 属性,例如 TableDDLOptions.CompartmentGetOptions.CompartmentPutOptions.Compartment 等。因此,您还可以为任何操作单独指定比较。此值(如果设置)将覆盖 NoSQLConfig 中的区间值(如果有)。

如果未提供区间,则租户 OCID 将用作默认值。请注意,这仅适用于使用用户身份进行授权的情况。使用实例主体或资源主体时,必须指定区间 ID。

相关主题