구획 정보

Oracle NoSQL Database 드라이버를 사용하여 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로 권한을 부여하는 경우에만 적용됩니다. 인증에 인스턴스 주체 또는 리소스 주체를 사용하는 경우 이러한 경우 기본값이 없으므로 구획 ID를 지정해야 합니다.

구획이 제공되지 않을 경우 테넌시 OCID가 기본값으로 사용됩니다. 사용자의 ID로 권한을 부여하는 경우에만 적용됩니다. 인스턴스 주체 또는 리소스 주체를 사용하는 경우 구획 ID를 지정해야 합니다.

인스턴스 주체를 설정하는 절차는 인스턴스에서 서비스 호출을 참조하십시오. 리소스 주체를 설정하는 절차는 실행 중인 함수에서 기타 Oracle Cloud Infrastructure 리소스 액세스를 참조하십시오.

테이블의 기본 구획은 사용자 테넌시의 루트 구획입니다. 모든 작업에 대한 기본 구획은 NoSQLConfig의 구획 속성을 설정하여 지정할 수 있습니다. 예:
var client = new NoSQLClient(
    new NoSQLConfig
    {
        Region=Region.US_ASHBURN_1,
        Compartment="<compartment_ocid_or_name>"
    });
문자열 값은 구획 OCID 또는 구획 이름 또는 경로일 수 있습니다. 단순 이름인 경우 최상위 구획을 지정해야 합니다. 중첩된 구획에 대한 경로인 경우 최상위 구획은 테넌시에서 추론되므로 제외해야 합니다.

또한 모든 작업 옵션 클래스에는 TableDDLOptions.Compartment, GetOptions.Compartment, PutOptions.Compartment 등과 같은 Compartment 속성이 있습니다. 따라서 작업에 대해 별도로 비교를 지정할 수도 있습니다. 이 값은 설정된 경우 NoSQLConfig의 구획 값(있는 경우)을 무효화합니다.

구획이 제공되지 않을 경우 테넌시 OCID가 기본값으로 사용됩니다. 사용자의 ID로 권한을 부여하는 경우에만 적용됩니다. 인스턴스 주체 또는 리소스 주체를 사용하는 경우 구획 ID를 지정해야 합니다.

관련 항목