Oracle NoSQL Database Migrator 참조

Oracle NoSQL Database Migrator에 사용할 수 있는 소스, 싱크, 변환 구성 템플릿 매개변수에 대해 알아봅니다.

이 문서에는 다음 항목이 있습니다.

매개변수

NoSQL Database Migrator에는 마이그레이션 작업을 수행하기 위한 모든 매개변수를 정의하는 구성 파일이 필요합니다. 일부 매개변수는 여러 소스 및 싱크에서 공통으로 사용됩니다. 이 항목에서는 이러한 공통 매개변수 목록을 제공합니다. 개별 소스 또는 싱크에 고유한 기타 매개변수 목록은 해당 구성 템플리트 섹션을 참조하십시오.

공통 구성 매개변수

다음은 일반적인 구성 매개변수입니다. 예는 개별 구성 템플리트 절을 참조하십시오.

버킷

  • 목적: 소스/싱크 객체를 포함하는 OCI Object Storage 버킷의 이름을 지정합니다.

    필요한 버킷이 OCI Object Storage 인스턴스에 존재하고 읽기/쓰기 권한이 있는지 확인하십시오.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y

chunkSize

  • 목적: 싱크에 저장할 테이블 데이터의 최대 chunk 크기를 지정합니다. 이 값은 MB 단위입니다. 마이그레이션 중 테이블은 chunkSize 조각으로 분할되고 각 조각은 싱크에 별도의 파일로 기록됩니다. 마이그레이션 중인 소스 데이터가 chunkSize 값을 초과하면 새 파일이 생성됩니다.

    지정하지 않을 경우 기본값은 32MB입니다. 적합한 값은 1에서 1024 사이의 정수입니다.

  • 데이터 유형: 정수
  • 필수(Y/N): N

인증서

  • 목적: OCI 인증서를 포함하는 파일의 절대 경로를 지정합니다. NoSQL Database Migrator는 이 파일을 사용해 OCI 서비스(예: Oracle NoSQL Database Cloud Service, OCI Object Storage 등)에 연결합니다.

    기본값은 $HOME/.oci/config입니다.

    인증서 파일의 예는 Example Configuration을 참조하십시오.

    주:

    인증 매개변수 credentials, useInstancePrincipaluseDelegationToken는 함께 사용할 수 없습니다. 구성 템플리트에서 이러한 매개변수 중 하나만 지정하십시오.
  • 데이터 유형: 문자열
  • 필수(Y/N): N

credentialsProfile

  • 목적: OCI 서비스에 연결하는 데 사용할 구성 프로파일의 이름(예: Oracle NoSQL Database Cloud Service, OCI Object Storage 등)을 지정합니다. 사용자 계정 자격 증명을 프로파일이라고 합니다.

    이 값을 지정하지 않으면 NoSQL Database MigratorDEFAULT 프로파일을 사용합니다.

    주:

    이 매개변수는 credentials 매개변수가 지정된 경우에만 유효합니다.
  • 데이터 유형: 문자열
  • 필수(Y/N): N

endpoint

  • 목적: 다음 중 하나를 지정합니다.
    • OCI Object Storage 서비스의 서비스 끝점 URL 또는 영역 ID입니다.

      OCI Object Storage 서비스 엔드포인트 목록은 Object Storage Endpoints를 참조하십시오.

    • Oracle NoSQL Database Cloud Service의 서비스 엔드포인트 URL 또는 지역 ID입니다.

      전체 URL 또는 지역 ID만 지정할 수 있습니다. Oracle NoSQL Database Cloud Service에서 지원되는 데이터 지역 목록은 Oracle NoSQL Database Cloud Service 문서의 데이터 지역 및 연관된 서비스 URL을 참조하십시오.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y

format

  • 목적: 소스/싱크 형식을 지정합니다.
  • 데이터 유형: 문자열
  • 필수(Y/N): Y

namespace

  • 목적: OCI Object Storage 서비스의 이름 공간을 지정합니다. 이 매개변수는 선택적 매개변수입니다. 이 매개변수를 지정하지 않으면 테넌시의 기본 네임스페이스가 사용됩니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): N

접두어

  • 목적: 이 접두어는 OCI Object Storage 버킷에 데이터를 저장하기 위한 논리적 컨테이너 또는 디렉토리 역할을 합니다.

    • 소스 구성 템플리트: prefix 매개변수가 지정된 경우 prefix 매개변수에 이름이 지정된 디렉토리의 모든 객체가 이전됩니다. 그렇지 않으면 버킷에 있는 모든 객체가 이전됩니다.
    • 싱크 구성 템플리트: prefix 매개변수가 지정된 경우 지정된 접두어가 있는 디렉토리가 버킷에 생성되고 객체가 이 디렉토리로 이전됩니다. 그렇지 않으면 소스의 테이블 이름이 접두어로 사용됩니다. 동일한 이름의 객체가 버킷에 존재하는 경우 겹쳐씁니다.

    접두어에 대한 자세한 내용은 접두어 및 계층을 사용한 객체 이름 지정을 참조하십시오.

  • 데이터 유형: 문자열
  • 필수(Y/N): N

requestTimeoutMs

  • 목적: 각 읽기/쓰기 작업을 저장소에서 완료할 때까지 대기할 시간을 지정합니다. 밀리초 단위로 제공됩니다. 기본값은 5000입니다. 값은 모든 양의 정수가 될 수 있습니다.

  • 데이터 유형: 정수
  • 필수(Y/N): N

security

  • 목적: 저장소가 보안 저장소인 경우 저장소 인증서가 포함된 보안 로그인 파일의 절대 경로를 지정합니다. 보안 로그인 파일에 대한 자세한 내용은 관리자 설명서원격 액세스로 보안 구성을 참조하십시오.

    Password file 기반 인증 또는 전자 지갑 기반 인증을 사용할 수 있습니다. 하지만 전자 지갑 기반 인증은 Oracle NoSQL Database의 EE(Enterprise Edition)에서만 지원됩니다. 전자 지갑 기반 인증에 대한 자세한 내용은 소스 및 싱크 보안을 참조하십시오.

    CE(Community Edition) 에디션은 암호 파일 기반 인증만 지원합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y, 보안 저장소용

type

  • 목적: 출처/싱크 유형을 식별합니다.
  • 데이터 유형: 문자열
  • 필수(Y/N): Y

useDelegationToken

  • 목적: NoSQL Database Migrator 툴이 위임 토큰 인증을 사용하여 OCI 서비스에 접속할지 여부를 지정합니다. 위임 토큰 인증을 사용하여 Cloud Shell에서 Migrator 유틸리티를 실행해야 합니다. Cloud Shell이 호출되면 사용자에 대한 위임 토큰이 자동으로 생성됩니다.

    기본값은 false입니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N

    주:

    • 위임 토큰을 사용하는 인증은 NoSQL Database Migrator 툴이 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
    • 인증 매개변수 credentials, useInstancePrincipaluseDelegationToken는 함께 사용할 수 없습니다. 구성 템플리트에서 이러한 매개변수 중 하나만 지정하십시오.
    • Cloud Shell은 다음 소스와 싱크 간의 이전만 지원합니다.
      유형 적합한 소스 유효한 싱크

      Oracle NoSQL Database Cloud Service

      (nosqldb_cloud)

      Y Y
      파일(홈 디렉토리에 있는 JSON 파일) Y Y

      OCI 객체 스토리지(JSON 파일)

      (object_storage_oci)

      Y Y

      OCI 객체 스토리지(Parquet 파일)

      (object_storage_oci)

      N Y

useInstancePrincipal

  • 목적: NoSQL Database Migrator 도구가 인스턴스 주체 인증을 사용하여 Oracle NoSQL Database Cloud Service, OCI Object Storage 등의 OCI 서비스에 연결할지 여부를 지정합니다. 인스턴스 주체 인증 방법에 대한 자세한 내용은 소스 및 싱크 보안을 참조하십시오.

    기본값은 false입니다.

    주:

    • Instance Principals를 사용한 인증은 NoSQL Database Migrator 도구가 OCI 컴퓨팅 인스턴스 내에서 실행 중인 경우에만 지원됩니다(예: OCI에서 호스팅되는 VM에서 실행되는 NoSQL Database Migrator 도구).
    • 인증 매개변수 credentials, useInstancePrincipaluseDelegationToken는 함께 사용할 수 없습니다. 구성 템플리트에서 이러한 매개변수 중 하나만 지정하십시오.
  • 데이터 유형: 부울
  • 필수(Y/N): N

소스 구성 템플리트

각 유효한 소스의 소스 구성 파일 형식 및 각 구성 매개변수의 용도에 대해 알아봅니다.

구성 파일 템플리트는 NoSQL 데이터 마이그레이터와 함께 사용되는 용어구성 파일을 참조하십시오.

각 소스의 유효한 싱크 형식에 대한 자세한 내용은 Sink Configuration Templates을 참조하십시오.

항목

다음 항목에서는 지정된 소스에서 적합한 싱크로 데이터를 복사하기 위해 Oracle NoSQL Database Migrator가 참조하는 소스 구성 템플리트에 대해 설명합니다.

JSON 파일 소스

NoSQL Database Migrator의 소스로서 JSON 파일의 구성 파일 형식은 다음과 같습니다.

소스 구성 템플리트에서 파일 경로 또는 디렉토리를 지정하여 JSON 소스 파일을 이전할 수 있습니다.

샘플 JSON 소스 파일은 다음과 같습니다.
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}

소스 구성 템플리트

"source": {
  "type": "file",
  "format": "json",
  "dataPath": "<path/to/JSON/[file|dir]>",
  "schemaInfo": {
    "schemaPath": "<path/to/schema/file>"
  }
},

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "file" 사용

  • 형식

    "format" : "json" 사용

고유 구성 매개변수

dataPath

  • 목적: 이전할 JSON 데이터가 포함된 파일 또는 디렉토리에 대한 절대 경로를 지정합니다.

    이 데이터가 싱크에 정의된 NoSQL 테이블 스키마와 일치하는지 확인해야 합니다. 디렉토리를 지정할 경우 NoSQL Database Migrator는 마이그레이션을 위해 해당 디렉토리에서 확장자가 .json인 모든 파일을 식별합니다. 하위 디렉토리는 지원되지 않습니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    • JSON 파일 지정

      "dataPath" : "/home/user/sample.json"

    • 디렉토리 지정

      "dataPath" : "/home/user"

schemaInfo

  • 목적: 이전하려는 소스 데이터의 스키마를 지정합니다. 이 스키마는 NoSQL 싱크로 전달됩니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

schemaInfo.schemaPath

  • 목적: 이전하려는 NoSQL 테이블에 대한 DDL 문을 포함하는 스키마 정의 파일의 절대 경로를 지정합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    "schemaInfo": {
      "schemaPath": "<path to the schema file>"
    }

OCI 오브젝트 스토리지 버킷의 JSON 파일

NoSQL Database Migrator의 소스로서 OCI Object Storage 버킷의 JSON 파일에 대한 구성 파일 형식은 다음과 같습니다.

소스 구성 템플리트에 버킷 이름을 지정하여 OCI Object Storage 버킷의 JSON 파일을 이전할 수 있습니다.

OCI Object Storage 버킷의 샘플 JSON 소스 파일은 다음과 같습니다.
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}

주:

OCI Object Storage 소스 유형에 적합한 싱크 유형은 nosqldbnosqldb_cloud입니다.

소스 구성 템플리트

"source" : {
  "type" : "object_storage_oci",
  "format" : "json",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "schemaInfo" : {
     "schemaObject" : "<object name>"
  },
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
  "useDelegationToken" : <true|false>
}

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "object_storage_oci" 사용

  • 형식

    "format" : "json" 사용

  • endpoint
    예제:
    • 지역 ID: "endpoint" : "us-ashburn-1"

    • URL 형식: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace

    예: "namespace" : "my-namespace"

  • 버킷

    예: "bucket" : "my-bucket"

  • 접두어
    예제:
    1. "prefix" : "my_table/Data/000000.json"(000000.json만 이전)
    2. "prefix" : "my_table/Data"(my_table/Data 접두어가 있는 모든 객체 이전)
  • 인증서
    예제:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    예제:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    예: "useInstancePrincipal" : true

  • useDelegationToken

    예: "useDelegationToken" : true

    주:

    위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.

고유 구성 매개변수

schemaInfo

  • 목적: 이전하려는 소스 데이터의 스키마를 지정합니다. 이 스키마는 NoSQL 싱크로 전달됩니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

schemaInfo.schemaObject

  • 목적: 이전하려는 데이터에 대한 NoSQL 테이블 스키마 정의가 저장되는 버킷의 객체 이름을 지정합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    "schemaInfo": {
      "schemaObject": "mytable/Schema/schema.ddl"
    },

MongoDB 형식이 지정된 JSON 파일

NoSQL Database Migrator의 소스로서 MongoDB 형식의 JSON 파일에 대한 구성 파일 형식은 다음과 같습니다.

소스 구성 템플리트에 파일 또는 디렉토리를 지정하여 MongoDB 익스포트된 JSON 데이터를 이전할 수 있습니다.

MongoDB는 JSON 파일 형식에 대한 두 가지 유형의 확장인 정식 모드완화 모드를 지원합니다. Canonical 또는 Relaxed 모드에서 mongoexport 도구를 사용하여 생성된 MongoDB 형식 JSON 파일을 제공할 수 있습니다. 두 모드 모두 마이그레이션을 위해 NoSQL Database Migrator에서 지원됩니다.

MongoDB 확장 JSON(v2) 파일에 대한 자세한 내용은 mongoexport_formats을 참조하십시오.

MongoDB 형식 JSON 파일 생성에 대한 자세한 내용은 mongoexport를 참조하십시오.

MongoDB 형식의 샘플 Relaxed mode JSON 파일은 다음과 같습니다.
{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}

소스 구성 템플리트

"source": {
  "type": "file",
  "format": "mongodb_json",
  "dataPath": "</path/to/json/[file|dir]>",
  "schemaInfo": {
    "schemaPath": "</path/to/schema/file>"
  }
}

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "file" 사용

  • 형식

    "format" : "mongodb_json" 사용

고유 구성 매개변수

dataPath

  • 목적: 이전을 위해 MongoDB 익스포트된 JSON 데이터를 포함하는 파일 또는 디렉토리에 대한 절대 경로를 지정합니다.

    mongoexport 도구를 사용하여 생성된 MongoDB 형식 JSON 파일을 제공할 수 있습니다.

    디렉토리를 지정할 경우 NoSQL Database Migrator는 마이그레이션을 위해 해당 디렉토리에서 확장자가 .json인 모든 파일을 식별합니다. 하위 디렉토리는 지원되지 않습니다. 이 데이터가 싱크에 정의된 NoSQL 테이블 스키마와 일치하는지 확인해야 합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    • MongoDB 형식의 JSON 파일 지정

      "dataPath" : "/home/user/sample.json"

    • 디렉토리 지정

      "dataPath" : "/home/user"

schemaInfo

  • 목적: 이전하려는 소스 데이터의 스키마를 지정합니다. 이 스키마는 NoSQL 싱크로 전달됩니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

schemaInfo.schemaPath

  • 목적: 이전하려는 NoSQL 테이블에 대한 DDL 문을 포함하는 스키마 정의 파일의 절대 경로를 지정합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    "schemaInfo" : {
      "schemaPath" : "/home/user/mytable/Schema/schema.ddl"
    }

MongoDB - OCI Object Storage 버킷의 형식이 지정된 JSON 파일

NoSQL Database Migrator의 소스로서 OCI Object Storage 버킷의 MongoDB 포맷 JSON 파일에 대한 구성 파일 형식은 아래와 같습니다.

소스 구성 템플리트에 버킷 이름을 지정하여 OCI Object Storage 버킷에서 MongoDB 익스포트된 JSON 데이터를 이전할 수 있습니다.

mongoexport 유틸리티를 사용하여 MongoDB에서 데이터를 추출하고 OCI Object Storage 버킷에 업로드합니다. 자세한 내용은 mongoexport를 참조하십시오. MongoDB는 JSON 파일 형식에 대한 두 가지 유형의 확장인 정식 모드완화 모드를 지원합니다. 두 형식 모두 OCI Object Storage 버킷에서 지원됩니다.

MongoDB 형식의 샘플 Relaxed mode JSON File은 다음과 같습니다.
{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}

주:

OCI Object Storage 소스 유형에 적합한 싱크 유형은 nosqldbnosqldb_cloud입니다.

소스 구성 템플리트

"source" : {
  "type" : "object_storage_oci",
  "format" : "mongodb_json",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "schemaInfo" : {
     "schemaObject" : "<object name>"
  },
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>
}

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "object_storage_oci" 사용

  • 형식

    "format" : "mongodb_json" 사용

  • endpoint
    예제:
    • 지역 ID: "endpoint" : "us-ashburn-1"

    • URL 형식: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace

    예: "namespace" : "my-namespace"

  • 버킷

    예: "bucket" : "my-bucket"

  • 접두어
    예제:
    1. "prefix" : "mongo_export/Data/table.json"(table.json만 이전)
    2. "prefix" : "mongo_export/Data"(mongo_export/Data 접두어가 있는 모든 객체 이전)

    주:

    값을 제공하지 않으면 버킷에 있는 모든 객체가 이전됩니다.
  • 인증서
    예제:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    예제:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    예: "useInstancePrincipal" : true

고유 구성 매개변수

schemaInfo

  • 목적: 이전하려는 소스 데이터의 스키마를 지정합니다. 이 스키마는 NoSQL 싱크로 전달됩니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

schemaInfo.schemaObject

  • 목적: 이전하려는 데이터에 대한 NoSQL 테이블 스키마 정의가 저장되는 버킷의 객체 이름을 지정합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    "schemaInfo": {
      "schemaObject": "mytable/Schema/schema.ddl"
    }

DynamoDB - AWS에 저장된 JSON 파일 형식 지정 S3

NoSQL Database Migrator의 소스로서 AWS S3의 DynamoDB 형식 JSON 파일에 대한 구성 파일 형식은 다음과 같습니다.

소스 구성 템플리트에 경로를 지정하여 AWS S3 스토리지에서 DynamoDB 익스포트된 JSON 데이터를 포함하는 파일을 이전할 수 있습니다.

샘플 DynamoDB 형식 JSON 파일은 다음과 같습니다.
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"}}}

DynamoDB 테이블 데이터를 Amazon S3로 익스포트에 지정된 대로 DynamoDB 테이블을 AWS S3 스토리지로 익스포트해야 합니다.

AWS S3에 저장된 DynamoDB 형식 JSON의 적합한 싱크 유형은 nosqldbnosqldb_cloud입니다.

소스 구성 템플리트
"source" : {
  "type" : "aws_s3",
  "format" : "dynamodb_json",
  "s3URL" : "<S3 object url>",
  "credentials" : "</path/to/aws/credentials/file>",
  "credentialsProfile" : <"profile name in aws credentials file">
}

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "aws_s3" 사용

  • 형식

    "format" : "dynamodb_json" 사용

    주:

    type 매개변수의 값이 aws_s3인 경우 형식은 dynamodb_json여야 합니다.

고유 구성 매개변수

s3URL

  • 목적: AWS S3에 저장된 익스포트된 DynamoDB 테이블의 URL을 지정합니다. 이 URL은 AWS S3 콘솔에서 얻을 수 있습니다. 적합한 URL 형식은 https://<bucket-name>.<s3_endpoint>/<prefix>입니다. NoSQL Database Migrator는 가져오기 중 접두어에서 json.gz 파일을 찾습니다.

    주:

    DynamoDB 테이블 데이터를 Amazon S3로 익스포트에 지정된 대로 DynamoDB 테이블을 익스포트해야 합니다.
  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예: https://my-bucket.s3.ap-south-1.amazonaws.com/AWSDynamoDB/01649660790057-14f642be

인증서

  • 목적: AWS 자격 증명을 포함하는 파일의 절대 경로를 지정합니다. 지정하지 않을 경우 기본값이 $HOME/.aws/credentials로 설정됩니다. 인증서 파일에 대한 자세한 내용은 구성 및 인증서 파일 설정을 참조하십시오.
  • 데이터 유형: 문자열
  • 필수(Y/N): N
  • 예제:
    "credentials" : "/home/user/.aws/credentials"
    "credentials" : "/home/user/security/credentials

    주:

    NoSQL Database Migrator는 자격 증명 정보를 기록하지 않습니다. 허용되지 않은 액세스로부터 자격 증명 파일을 적절히 보호해야 합니다.

credentialsProfile

  • 목적: AWS S3에 연결하는 데 사용할 AWS 인증서 파일의 프로파일 이름입니다. 사용자 계정 자격 증명을 프로파일이라고 합니다. 이 값을 지정하지 않으면 NoSQL Database Migratordefault 프로파일을 사용합니다. 인증서 파일에 대한 자세한 내용은 구성 및 인증서 파일 설정을 참조하십시오.
  • 데이터 유형: 문자열
  • 필수(Y/N): N
  • 예제:
    "credentialsProfile" : "default"
    "credentialsProfile" : "test"

DynamoDB 형식이 지정된 JSON 파일

NoSQL Database Migrator의 소스로서 DynamoDB 형식의 JSON 파일에 대한 구성 파일 형식은 다음과 같습니다.

소스 구성 템플리트에 경로를 지정하여 파일 시스템에서 DynamoDB 익스포트된 JSON 데이터를 포함하는 파일 또는 디렉토리를 이전할 수 있습니다.

샘플 DynamoDB 형식 JSON 파일은 다음과 같습니다.
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"}}}

내보낸 DynamoDB 테이블 데이터를 AWS S3 스토리지에서 로컬 마운트된 파일 시스템으로 복사해야 합니다.

DynamoDB JSON 파일의 적합한 싱크 유형은 nosqldbnosqldb_cloud입니다.

소스 구성 템플리트
"source" : {
  "type" : "file",
  "format" : "dynamodb_json",
  "dataPath" : "<path/to/[file|dir]/containing/exported/DDB/tabledata>"   
}

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "file" 사용

  • 형식

    "format" : "dynamodb_json" 사용

고유 구성 매개변수

dataPath

  • 목적: 내보낸 DynamoDB 테이블 데이터를 포함하는 파일 또는 디렉토리에 대한 절대 경로를 지정합니다. 내보낸 DynamoDB 테이블 데이터를 AWS S3에서 로컬 마운트된 파일 시스템으로 복사해야 합니다. 이 데이터가 싱크에 정의된 NoSQL 테이블 스키마와 일치하는지 확인해야 합니다. 디렉토리를 지정할 경우 NoSQL Database Migrator는 확장자가 .json.gz인 모든 파일과 data 하위 디렉토리를 식별합니다.
  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예제:
    • 파일 지정
      "dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3/data/zclclwucjy6v5mkefvckxzhfvq.json.gz"
    • 디렉토리 지정
      "dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3"

Oracle NoSQL Database

Oracle NoSQL Database의 구성 파일 형식은 NoSQL Database Migrator의 소스로 표시됩니다.

소스 구성 템플리트에 테이블 이름을 지정하여 Oracle NoSQL Database에서 테이블을 마이그레이션할 수 있습니다.

샘플 Oracle NoSQL Database 테이블은 다음과 같습니다.
{"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"teacher"}],"age":25,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"expenses":null}
{"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"chef"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"expenses":null}
{"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"handyman"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"expenses":null}

소스 구성 템플리트

"source" : {
  "type": "nosqldb",
  "storeName" : "<store name>",
  "helperHosts" : ["hostname1:port1","hostname2:port2,..."],
  "table" : "<fully qualified table name>", 
  "includeTTL": <true|false>,    
  "security" : "</path/to/store/security/file>",
  "requestTimeoutMs" : 5000
}

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "nosqldb" 사용

  • 보안

    예제:

    "security" : "/home/user/client.credentials"

    Password file 기반 인증의 보안 파일 컨텐트 예제:

    oracle.kv.password.noPrompt=true
    oracle.kv.auth.username=admin
    oracle.kv.auth.pwdfile.file=/home/nosql/login.passwd
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=/home/nosql/client.trust
    oracle.kv.ssl.protocols=TLSv1.2
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)

    전자 지갑 기반 인증에 대한 보안 파일 내용 예제:

    oracle.kv.password.noPrompt=true
    oracle.kv.auth.username=admin
    oracle.kv.auth.wallet.dir=/home/nosql/login.wallet
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=/home/nosql/client.trust
    oracle.kv.ssl.protocols=TLSv1.2
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)
  • requestTimeoutMs

    예: "requestTimeoutMs" : 5000

고유 구성 매개변수

storeName

  • 목적: Oracle NoSQL Database 저장소의 이름입니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예: "storeName" : "kvstore"

helperHosts

  • 목적: hostname:port 형식의 호스트 및 레지스트리 포트 쌍 목록입니다. 쉼표를 사용하여 목록의 각 항목을 구분합니다. 하나 이상의 도우미 호스트를 지정해야 합니다.

  • 데이터 유형: 문자열 배열
  • 필수(Y/N): Y
  • 예: "helperHosts" : ["localhost:5000","localhost:6000"]

테이블

  • 목적: 데이터를 이전할 정규화된 테이블 이름입니다.

    형식: [namespace_name:]<table_name>

    테이블이 DEFAULT 네임스페이스에 있으면 namespace_name를 생략할 수 있습니다. 테이블이 저장소에 존재해야 합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    • DEFAULT 네임스페이스 "table" :"mytable" 사용

    • 기본 네임스페이스가 아닌 "table" : "mynamespace:mytable"

    • 하위 테이블 "table" : "mytable.child" 을 지정하려면

includeTTL

  • 목적: Oracle NoSQL Database 테이블을 익스포트할 때 테이블 행에 대한 TTL 메타데이터를 포함할지 여부를 지정합니다. true로 설정하면 행에 대한 TTL 데이터도 소스에서 제공한 데이터에 포함됩니다. TTL은 각 행과 연관된 _metadata JSON 객체에 있습니다. UNIX 시대(1970년 1월 1일) 이후 각 행의 만료 시간이 밀리초 수로 엑스포트됩니다.

    이 매개변수를 지정하지 않을 경우 기본값이 false로 설정됩니다.

    TTL에 대해 만료 값이 양수인 행만 익스포트된 행의 일부로 포함됩니다. 행이 만료되지 않으면(즉, TTL=0) 해당 TTL 메타 데이터는 명시적으로 포함되지 않습니다. 예를 들어, ROW1가 2021-10-19 00:00:00에 만료되고 ROW2가 만료되지 않으면 내보낸 데이터는 다음과 같습니다.
    //ROW1
    {
      "id" : 1,
      "name" : "abc",
      "_metadata" : {
        "expiration" : 1634601600000
      }
    }
    
    //ROW2
    {
      "id" : 2,
      "name" : "xyz"
    }
  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "includeTTL" : true

Oracle NoSQL Database Cloud Service

Oracle NoSQL Database Cloud Service의 구성 파일 형식은 NoSQL Database Migrator의 소스로 표시됩니다.

테이블이 소스 구성 템플리트에 상주하는 구획의 이름 또는 OCID를 지정하여 Oracle NoSQL Database Cloud Service에서 테이블을 이전할 수 있습니다.

샘플 Oracle NoSQL Database Cloud Service 테이블은 다음과 같습니다.
{"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"teacher"}],"age":25,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"expenses":null}
{"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"chef"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"expenses":null}
{"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"handyman"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"expenses":null}

소스 구성 템플리트

"source" : {
  "type" : "nosqldb_cloud",
  "endpoint" : "<Oracle NoSQL Cloud Service endpoint URL or region ID>",
  "table" : "<table name>",
  "compartment" : "<OCI compartment name or id>",
  "credentials" : "<path/to/oci/credential/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
  "useDelegationToken" : <true|false>,
  "readUnitsPercent" : <table readunits percent>,
  "includeTTL": <true|false>,
  "requestTimeoutMs" : <timeout in milli seconds>
}

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "nosqldb_cloud" 사용

  • endpoint
    예제:
    • 지역 ID: "endpoint" : "us-ashburn-1"

    • URL 형식: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • 인증서
    예제:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    예제:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    예: "useInstancePrincipal" : true

  • useDelegationToken

    예: "useDelegationToken" : true

    주:

    위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
  • requestTimeoutMs

    예: "requestTimeoutMs" : 5000

고유 구성 매개변수

테이블

  • 목적: 데이터를 이전할 테이블의 이름입니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    • "table" : "myTable" 테이블을 지정하려면
    • 하위 테이블 "table" : "mytable.child" 을 지정하려면

구획

  • 목적: 테이블이 상주하는 구획의 이름 또는 OCID를 지정합니다.

    값을 제공하지 않으면 기본적으로 root 구획으로 설정됩니다.

    구획 탐색기 창의 OCI 클라우드 콘솔의 거버넌스 아래에서 구획의 OCID를 찾을 수 있습니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): 테넌시의 루트 구획에 테이블이 없거나 useInstancePrincipal 매개변수가 true로 설정된 경우 Y입니다.

    주:

    useInstancePrincipal 매개변수가 true로 설정된 경우 구획에서 이름이 아닌 구획 OCID를 지정해야 합니다.
  • 예:
    • 구획 이름

      "compartment" : "mycompartment"

    • 해당 상위 구획으로 한정된 컴파트먼트 이름입니다.

      "compartment" : "parent.childcompartment"

    • 제공된 값이 없습니다. 기본값은 루트 구획입니다.

      "compartment": ""

    • 컴파운드 OCID

      "compartment" : "ocid1.tenancy.oc1...4ksd"

readUnitsPercent

  • 목적: NoSQL 테이블을 마이그레이션하는 동안 사용할 테이블 읽기 단위의 백분율입니다.

    기본값은 90입니다. 적합한 범위는 1에서 100 사이의 정수입니다. 데이터를 마이그레이션하는 데 필요한 시간은 이 속성에 직접 비례합니다. 이전 작업에 대한 테이블의 읽기 처리량을 늘리는 것이 좋습니다. 마이그레이션 프로세스가 완료된 후 읽기 처리량을 줄일 수 있습니다.

    처리량 변경에 대한 일일 한도를 알아보려면 Oracle NoSQL Database Cloud Service 문서에서 클라우드 한도를 참조하십시오.

    이 속성을 사용하여 데이터 마이그레이션 속도를 향상시키는 방법은 Oracle NoSQL Database Migrator 문제 해결을 참조하십시오.

  • 데이터 유형: 정수
  • 필수(Y/N): N
  • 예: "readUnitsPercent" : 90

includeTTL

  • 목적: Oracle NoSQL Database Cloud Service 테이블을 익스포트할 때 테이블 행에 대한 TTL 메타데이터를 포함할지 여부를 지정합니다. true로 설정하면 행에 대한 TTL 데이터도 소스에서 제공한 데이터에 포함됩니다. TTL은 각 행과 연관된 _metadata JSON 객체에 있습니다. UNIX 시대(1970년 1월 1일) 이후 각 행의 만료 시간이 밀리초 수로 엑스포트됩니다.

    이 매개변수를 지정하지 않을 경우 기본값이 false로 설정됩니다.

    TTL에 대해 만료 값이 양수인 행만 익스포트된 행의 일부로 포함됩니다. 행이 만료되지 않으면(즉, TTL=0) 해당 TTL 메타 데이터는 명시적으로 포함되지 않습니다. 예를 들어, ROW1가 2021-10-19 00:00:00에 만료되고 ROW2가 만료되지 않으면 내보낸 데이터는 다음과 같습니다.
    //ROW1
    {
      "id" : 1,
      "name" : "abc",
      "_metadata" : {
        "expiration" : 1634601600000
      }
    }
    
    //ROW2
    {
      "id" : 2,
      "name" : "xyz"
    }
  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "includeTTL" : true

CSV 파일 소스

CSV 파일의 구성 파일 형식은 NoSQL Database Migrator 소스로 표시됩니다. CSV 파일은 RFC4180 형식을 따라야 합니다.

소스 구성 템플리트에서 파일 이름 또는 디렉토리를 지정하여 CSV 파일 또는 CSV 데이터가 포함된 디렉토리를 마이그레이션할 수 있습니다.

샘플 CSV 파일은 다음과 같습니다.
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"

소스 구성 템플리트

"source" : {
  "type" : "file",
  "format" : "csv",
  "dataPath": "</path/to/a/csv/[file|dir]>",
  "hasHeader" : <true | false>,
  "columns" : ["column1", "column2", ....],
  "csvOptions": {
    "encoding": "<character set encoding>",
    "trim": "<true | false>"
 }
}

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "file" 사용

  • 형식

    "format" : "csv" 사용

고유 구성 매개변수

데이터 경로

  • 목적: 이전할 CSV 데이터가 포함된 파일 또는 디렉토리에 대한 절대 경로를 지정합니다. 디렉토리를 지정할 경우 NoSQL Database Migrator는 확장자가 .csv 또는 .CSV인 모든 파일을 해당 디렉토리에 임포트합니다. 모든 CSV 파일은 단일 테이블로 복사되지만 특정 순서로 복사되지는 않습니다.

    CSV 파일은 RFC4180 표준을 준수해야 합니다. 각 CSV 파일의 데이터가 싱크 테이블에 정의된 NoSQL Database 테이블 스키마와 일치하는지 확인해야 합니다. 하위 디렉토리는 지원되지 않습니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    • CSV 파일 지정

      "dataPath" : "/home/user/sample.csv"

    • 디렉토리 지정

      "dataPath" : "/home/user"

주:

CSV 파일에는 스칼라 값만 포함되어야 합니다. MAP, RECORD, ARRAY 및 JSON과 같은 복합 유형을 포함하는 CSV 파일 임포트는 지원되지 않습니다. NoSQL Database Migrator 도구는 입력 CSV 파일의 데이터가 올바른지 확인하지 않습니다. NoSQL 데이터베이스 마이그레이터 툴은 RFC4180 형식을 준수하는 CSV 데이터 임포트를 지원합니다. RFC4180 표준을 준수하지 않는 데이터가 포함된 CSV 파일이 올바르게 복사되지 않거나 오류가 발생할 수 있습니다. 입력 데이터가 손상된 경우 NoSQL Database Migrator 도구는 CSV 레코드를 구문 분석하지 않습니다. 마이그레이션 중 오류가 발생하면 NoSQL Database Migrator 도구는 디버깅 및 정보 제공을 위해 실패한 입력 레코드에 대한 정보를 기록합니다. 자세한 내용은 Oracle NoSQL Data Migrator 사용Logging Migrator Progress를 참조하십시오.

hasHeader

  • 목적: CSV 파일에 헤더가 있는지 여부를 지정합니다. true로 설정하면 첫번째 행이 무시됩니다. false로 설정된 경우 첫 번째 라인은 CSV 레코드로 간주됩니다. 기본값은 false입니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "hasHeader" : "false"

  • 목적: NoSQL 데이터베이스 테이블 열 이름 목록을 지정합니다. 열 이름의 순서는 CSV 파일 필드와 해당 NoSQL 데이터베이스 테이블 열의 매핑을 나타냅니다. 입력 CSV 파일 열의 순서가 기존 또는 새로 생성된 NoSQL 데이터베이스 테이블 열과 일치하지 않을 경우 이 매개변수를 사용하여 순서를 매핑할 수 있습니다. 또한 ID 열이 있는 테이블로 임포트할 때 columns 매개변수에서 ID 열 이름을 건너뛸 수 있습니다.

    주:

    • NoSQL 데이터베이스 테이블에 CSV 파일에서 사용할 수 없는 추가 열이 있는 경우 누락된 열의 값이 NoSQL 데이터베이스 테이블에 정의된 기본값으로 업데이트됩니다. 기본값이 제공되지 않으면 마이그레이션 중에 Null 값이 삽입됩니다. 기본값에 대한 자세한 내용은 SQL 참조 설명서데이터 유형 정의 섹션을 참조하십시오.
    • CSV 파일에 NoSQL 데이터베이스 테이블에 정의되지 않은 추가 열이 있는 경우 추가 열 정보는 무시됩니다.
    • CSV 레코드의 값이 비어 있으면 NoSQL 데이터베이스 테이블에 있는 해당 열의 기본값으로 설정됩니다. 기본값이 제공되지 않으면 마이그레이션 중에 Null 값이 삽입됩니다.
  • 데이터 유형: 문자열 배열
  • 필수(Y/N): N
  • 예: "columns" : ["table_column_1", "table_column_2"]

csvOptions

  • 목적: CSV 파일의 형식 지정 옵션을 지정합니다. CSV 파일의 문자 집합 인코딩 형식을 제공하고 공백을 자를지 여부를 선택합니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

csvOptions.encoding

  • 목적: CSV 파일을 디코딩할 문자 집합을 지정합니다. 기본값은 UTF-8입니다. 지원되는 문자 세트는 US-ASCII, ISO-8859-1, UTF-8,UTF-16입니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): N
  • 예: "encoding" : "UTF-8"

csvOptions.trim

  • 목적: CSV 필드 값의 선행 및 후행 공백을 자를지 여부를 지정합니다. 기본값은 false입니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "trim" : "true"

CSV 파일(OCI Object Storage Bucket)

NoSQL Database Migrator 소스로 제공되는 OCI Object Storage 버킷의 CSV 파일 형식은 다음과 같습니다. CSV 파일은 RFC4180 형식을 따라야 합니다.

소스 구성 템플리트에서 버킷 이름을 지정하여 OCI Object Storage 버킷의 CSV 파일을 이전할 수 있습니다.

OCI Object Storage 버킷의 샘플 CSV 파일은 다음과 같습니다.
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"

주:

OCI Object Storage 소스 유형에 적합한 싱크 유형은 nosqldbnosqldb_cloud입니다.

소스 구성 템플리트

"source" : {
  "type" : "object_storage_oci",
  "format" : "csv",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
   "hasHeader" : <true | false>,
   "columns" : ["column1", "column2", ....],
   "csvOptions" : {         
     "encoding" : "<character set encoding>",
     "trim" : <true | false>
   }
 }

소스 매개변수

공통 구성 매개변수

  • 유형

    "type" : "object_storage_oci" 사용

  • 형식

    "format" : "csv" 사용

  • endpoint
    예제:
    • 지역 ID: "endpoint" : "us-ashburn-1"

    • URL 형식: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace

    예: "namespace" : "my-namespace"

  • 버킷

    예: "bucket" : "my-bucket"

    주:

    • NoSQL Database Migrator는 확장자가 .csv 또는 .CSV인 모든 파일을 객체 방향으로 가져와서 동일한 순서로 단일 테이블에 복사합니다.
    • CSV 파일에는 스칼라 값만 포함되어야 합니다. MAP, RECORD, ARRAY 및 JSON과 같은 복합 유형을 포함하는 CSV 파일 임포트는 지원되지 않습니다. NoSQL Database Migrator 도구는 입력 CSV 파일의 데이터가 올바른지 확인하지 않습니다. NoSQL 데이터베이스 마이그레이터 툴은 RFC4180 형식을 준수하는 CSV 데이터 임포트를 지원합니다. RFC4180 표준을 준수하지 않는 데이터가 포함된 CSV 파일이 올바르게 복사되지 않거나 오류가 발생할 수 있습니다. 입력 데이터가 손상된 경우 NoSQL Database Migrator 도구는 CSV 레코드를 구문 분석하지 않습니다. 마이그레이션 중 오류가 발생하면 NoSQL Database Migrator 도구는 디버깅 및 정보 제공을 위해 실패한 입력 레코드에 대한 정보를 기록합니다. 자세한 내용은 Oracle NoSQL Data Migrator 사용Logging Migrator Progress를 참조하십시오.

  • 접두어
    예제:
    1. "prefix" : "my_table/Data/000000.csv"(000000.csv만 이전)
    2. "prefix" : "my_table/Data"(my_table/Data 접두어가 있는 모든 객체 이전)
  • 인증서
    예제:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    예제:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    예: "useInstancePrincipal" : true

고유 구성 매개변수

hasHeader

  • 목적: CSV 파일에 헤더가 있는지 여부를 지정합니다. true로 설정하면 첫번째 행이 무시됩니다. false로 설정된 경우 첫 번째 라인은 CSV 레코드로 간주됩니다. 기본값은 false입니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "hasHeader" : "false"

  • 목적: NoSQL 데이터베이스 테이블 열 이름 목록을 지정합니다. 열 이름의 순서는 CSV 파일 필드와 해당 NoSQL 데이터베이스 테이블 열의 매핑을 나타냅니다. 입력 CSV 파일 열의 순서가 기존 또는 새로 생성된 NoSQL 데이터베이스 테이블 열과 일치하지 않을 경우 이 매개변수를 사용하여 순서를 매핑할 수 있습니다. 또한 ID 열이 있는 테이블로 임포트할 때 columns 매개변수에서 ID 열 이름을 건너뛸 수 있습니다.

    주:

    • NoSQL 데이터베이스 테이블에 CSV 파일에서 사용할 수 없는 추가 열이 있는 경우 누락된 열의 값이 NoSQL 데이터베이스 테이블에 정의된 기본값으로 업데이트됩니다. 기본값이 제공되지 않으면 마이그레이션 중에 Null 값이 삽입됩니다. 기본값에 대한 자세한 내용은 SQL 참조 설명서데이터 유형 정의 섹션을 참조하십시오.
    • CSV 파일에 NoSQL 데이터베이스 테이블에 정의되지 않은 추가 열이 있는 경우 추가 열 정보는 무시됩니다.
    • CSV 레코드의 값이 비어 있으면 NoSQL 데이터베이스 테이블에 있는 해당 열의 기본값으로 설정됩니다. 기본값이 제공되지 않으면 마이그레이션 중에 Null 값이 삽입됩니다.
  • 데이터 유형: 문자열 배열
  • 필수(Y/N): N
  • 예: "columns" : ["table_column_1", "table_column_2"]

csvOptions

  • 목적: CSV 파일의 형식 지정 옵션을 지정합니다. CSV 파일의 문자 집합 인코딩 형식을 제공하고 공백을 자를지 여부를 선택합니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

csvOptions.encoding

  • 목적: CSV 파일을 디코딩할 문자 집합을 지정합니다. 기본값은 UTF-8입니다. 지원되는 문자 세트는 US-ASCII, ISO-8859-1, UTF-8,UTF-16입니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): N
  • 예: "encoding" : "UTF-8"

csvOptions.trim

  • 목적: CSV 필드 값의 선행 및 후행 공백을 자를지 여부를 지정합니다. 기본값은 false입니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "trim" : "true"

싱크 구성 템플리트

각 유효한 싱크의 용도 및 각 구성 매개변수의 용도에 대해 알아봅니다.

구성 파일 템플리트는 NoSQL 데이터 마이그레이터와 함께 사용되는 용어구성 파일을 참조하십시오.
각 싱크의 유효한 소스 형식에 대한 자세한 내용은 소스 구성 템플리트를 참조하십시오.

항목

다음 항목에서는 적합한 소스에서 지정된 싱크로 데이터를 복사하기 위해 Oracle NoSQL Database Migrator가 참조하는 싱크 구성 템플리트에 대해 설명합니다.

JSON 파일 싱크

NoSQL Database Migrator의 싱크로 사용되는 JSON 파일의 구성 파일 형식은 다음과 같습니다.

싱크 구성 템플리트

"sink" : {
  "type" : "file",
  "format" : "json",
  "dataPath": "</path/to/a/file>",
  "schemaPath" : "<path/to/a/file>",
  "pretty" : <true|false>,
  "useMultiFiles" : <true|false>,
  "chunkSize" : <size in MB>
}

싱크 매개변수

공통 구성 매개변수

  • 유형

    "type" : "file" 사용

  • 형식

    "format" : "json" 사용

  • chunkSize

    예: "chunkSize" : 40

    주:

    이 매개변수는 useMultiFiles 매개변수가 true로 설정된 경우에만 적용할 수 있습니다.

고유 구성 매개변수

dataPath

  • 목적: 소스 데이터가 JSON 형식으로 복사될 파일의 절대 경로를 지정합니다.

    지정된 데이터 경로에 파일이 없으면 NoSQL Database Migrator가 파일을 만듭니다. 존재하는 경우 NoSQL 데이터베이스 마이그레이터는 해당 콘텐츠를 소스 데이터로 겹쳐씁니다.

    데이터 경로의 상위 디렉토리가 지정된 파일에 적합한지 확인해야 합니다.

    주:

    useMultiFiles 매개변수가 true로 설정된 경우 디렉토리 경로를 지정하고, 그렇지 않은 경우 파일 경로를 지정합니다.
  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예제:
    • useMultiFiles 매개변수가 true로 설정된 경우

      "dataPath" :"/home/user/data"

    • useMultiFiles 매개변수가 지정되지 않았거나 false로 설정되었습니다.

      "dataPath" :"/home/user/sample.json"

schemaPath

  • 목적: 소스에서 제공하는 테이블 스키마 정보를 기록할 파일의 절대 경로를 지정합니다.

    이 값이 정의되지 않은 경우 소스 스키마 정보가 싱크로 마이그레이션되지 않습니다. 이 값을 지정하면 migrator 유틸리티가 소스 테이블의 스키마를 여기에 지정된 파일에 기록합니다.

    스키마 정보는 이 파일에서 한 행에 하나의 DDL 명령으로 작성됩니다. 지정된 데이터 경로에 파일이 없으면 NoSQL Database Migrator가 파일을 만듭니다. 이미 있는 경우 NoSQL Database Migrator는 해당 콘텐츠를 소스 데이터로 덮어씁니다. 데이터 경로의 상위 디렉토리가 지정된 파일에 적합한지 확인해야 합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): N
  • 예: "schemaPath" : "/home/user/schema_file"

pretty

  • 목적: 가독성을 높이기 위해 JSON 출력을 다듬을지 여부를 지정합니다.

    지정하지 않으면 기본적으로 false로 설정됩니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "pretty" : true

useMultiFiles

  • 목적: 소스 데이터를 파일로 마이그레이션할 때 NoSQL 테이블 데이터를 여러 파일로 분할할지 여부를 지정합니다.

    지정하지 않으면 기본적으로 false로 설정됩니다.

    true로 설정된 경우 소스 데이터를 파일로 이전할 때 NoSQL 테이블 데이터가 여러 개의 작은 파일로 분할됩니다. 예: <chunk>.json. 여기서 chunk=000000, 000001, 000002 등.

    dataPath
             |--000000.json
             |--000001.json
  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "useMultiFiles" : true

Parquet 파일

NoSQL Database Migrator의 싱크로 사용되는 Parquet 파일의 구성 파일 형식은 다음과 같습니다.

싱크 구성 템플리트

"sink" : {
  "type" : "file",
  "format" : "parquet",
  "dataPath": "</path/to/a/dir>",
  "chunkSize" : <size in MB>,
  "compression": "<SNAPPY|GZIP|NONE>",
  "parquetOptions": {
    "useLogicalJson": <true|false>,
    "useLogicalEnum": <true|false>,
    "useLogicalUUID": <true|false>,     
    "truncateDoubleSpecials": <true|false>
  }
}

싱크 매개변수

공통 구성 매개변수

고유 구성 매개변수

dataPath

  • 목적: 이전된 NoSQL 테이블 데이터를 저장하기 위한 디렉토리 경로를 지정합니다. 디렉토리가 존재하고 읽기 및 쓰기 권한이 있는지 확인하십시오.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예: "dataPath" : "/home/user/migrator/my_table"

압축

  • 목적: Parquet 데이터를 압축하는 데 사용할 압축 유형을 지정합니다. 유효한 값은 SNAPPY, GZIPNONE입니다.

    지정하지 않으면 기본적으로 SNAPPY로 설정됩니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): N
  • 예: "compression" : "GZIP"

parquetOptions

  • 목적: NoSQL ENUM, JSON 및 UUID 열에 대해 Parquet 논리적 유형을 선택하는 옵션을 지정합니다.

    이 매개변수를 지정하지 않으면 NoSQL 데이터베이스 마이그레이터가 ENUM, JSON 및 UUID 열의 데이터를 문자열로 기록합니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

parquetOptions.useLogicalJson

  • 목적: NoSQL JSON 열 데이터를 Parquet 논리적 JSON 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.

    지정되지 않았거나 false로 설정된 경우 NoSQL 데이터베이스 마이그레이터는 NoSQL JSON 열 데이터를 문자열로 기록합니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "useLogicalJson" : true

parquetOptions.useLogicalEnum

  • 목적: NoSQL ENUM 열 데이터를 Parquet 논리적 ENUM 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.

    지정되지 않았거나 false로 설정된 경우 NoSQL 데이터베이스 마이그레이터는 NoSQL ENUM 열 데이터를 문자열로 기록합니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "useLogicalEnum" : true

parquetOptions.useLogicalUUID

  • 목적: NoSQL UUID 열 데이터를 Parquet 논리적 UUID 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.

    지정되지 않았거나 false로 설정된 경우 NoSQL 데이터베이스 마이그레이터는 NoSQL UUID 열 데이터를 문자열로 기록합니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "useLogicalUUID" : true

parquetOptions.truncateDoubleSpecials

  • 목적: 이중 +Infinity, -Infinity 및 NaN 값을 자를지 여부를 지정합니다.

    기본적으로 false으로 설정됩니다. true로 설정하는 경우
    • Positive_Infinity는 Double.MAX_VALUE로 잘립니다.
    • NEGATIVE_INFINITY는 -Double.MAX_VALUE로 잘립니다.
    • NaN는 9.9999999999999990E307로 잘립니다.
  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "truncateDoubleSpecials" : true

OCI 오브젝트 스토리지 버킷의 JSON 파일

NoSQL Database Migrator는 OCI Object Storage 버킷의 JSON 파일에 대한 구성 파일 형식을 보여줍니다.

주:

싱크로 사용되는 OCI Object Storage의 적합한 소스 유형은 nosqldbnosqldb_cloud입니다.

싱크 구성 템플리트

"sink" : {
  "type" : "object_storage_oci",
  "format" : "json",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "chunkSize" : <size in MB>,
  "pretty" : <true|false>,
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,  
  "useDelegationToken" : <true|false>
}

싱크 매개변수

공통 구성 매개변수

  • 유형

    "type" : "object_storage_oci" 사용

  • 형식

    "format" : "json" 사용

  • endpoint
    예제:
    • 지역 ID: "endpoint" : "us-ashburn-1"

    • URL 형식: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace

    예: "namespace" : "my-namespace"

  • 버킷

    예: "bucket" : "my-bucket"

  • 접두어

    스키마가 <prefix>/Schema/schema.ddl 파일로 이전되고 소스 데이터가 <prefix>/Data/<chunk>.json 파일로 이전됩니다. 여기서 chunk=000000.json, 000001.json 등이 있습니다.

    예제:
    1. "prefix" : "my_export"
    2. "prefix" : "my_export/2021-04-05/"
  • chunkSize

    예: "chunkSize" : 40

  • 인증서
    예제:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    예제:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    예: "useInstancePrincipal" : true

  • useDelegationToken

    예: "useDelegationToken" : true

    주:

    위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.

고유 구성 매개변수

pretty

  • 목적: 가독성을 높이기 위해 JSON 출력을 다듬을지 여부를 지정합니다.

    지정하지 않으면 기본적으로 false로 설정됩니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "pretty" : true

OCI 오브젝트 스토리지 버킷의 Parquet 파일

NoSQL Database Migrator는 OCI Object Storage 버킷의 Parquet 파일에 대한 구성 파일 형식을 보여줍니다.

주:

OCI Object Storage 소스 유형에 적합한 소스 유형은 nosqldbnosqldb_cloud입니다.

싱크 구성 템플리트

"sink" : {
  "type" : "object_storage_oci",
  "format" : "parquet",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "chunkSize" : <size in MB>,
  "compression": "<SNAPPY|GZIP|NONE>",
  "parquetOptions": {
    "useLogicalJson": <true|false>,
    "useLogicalEnum": <true|false>,
    "useLogicalUUID": <true|false>,
    "truncateDoubleSpecials": <true|false>
  },
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
  "useDelegationToken" : <true|false>
}

싱크 매개변수

공통 구성 매개변수

  • 유형

    "type" : "object_storage_oci" 사용

  • 형식

    "format" : "parquet" 사용

  • endpoint
    예제:
    • 지역 ID: "endpoint" : "us-ashburn-1"

    • URL 형식: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace

    예: "namespace" : "my-namespace"

  • 버킷

    예: "bucket" : "my-bucket"

  • 접두어

    소스 데이터는 <prefix>/Data/<chunk>.parquet 파일로 이전됩니다. 여기서 chunk=000000.parquet, 000001.parquet 등은

    예제:
    1. "prefix" : "my_export"
    2. "prefix" : "my_export/2021-04-05/"
  • chunkSize

    예: "chunkSize" : 40

  • 인증서
    예제:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    예제:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    예: "useInstancePrincipal" : true

  • useDelegationToken

    예: "useDelegationToken" : true

    주:

    위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.

고유 구성 매개변수

압축

  • 목적: Parquet 데이터를 압축하는 데 사용할 압축 유형을 지정합니다. 유효한 값은 SNAPPY, GZIPNONE입니다.

    지정하지 않으면 기본적으로 SNAPPY로 설정됩니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): N
  • 예: "compression" : "GZIP"

parquetOptions

  • 목적: NoSQL ENUM, JSON 및 UUID 열에 대해 Parquet 논리적 유형을 선택하는 옵션을 지정합니다.

    이 매개변수를 지정하지 않으면 NoSQL 데이터베이스 마이그레이터가 ENUM, JSON 및 UUID 열의 데이터를 문자열로 기록합니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

parquetOptions.useLogicalJson

  • 목적: NoSQL JSON 열 데이터를 Parquet 논리적 JSON 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.

    지정되지 않았거나 false로 설정된 경우 NoSQL 데이터베이스 마이그레이터는 NoSQL JSON 열 데이터를 문자열로 기록합니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "useLogicalJson" : true

parquetOptions.useLogicalEnum

  • 목적: NoSQL ENUM 열 데이터를 Parquet 논리적 ENUM 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.

    지정되지 않았거나 false로 설정된 경우 NoSQL 데이터베이스 마이그레이터는 NoSQL ENUM 열 데이터를 문자열로 기록합니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "useLogicalEnum" : true

parquetOptions.useLogicalUUID

  • 목적: NoSQL UUID 열 데이터를 Parquet 논리적 UUID 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.

    지정되지 않았거나 false로 설정된 경우 NoSQL 데이터베이스 마이그레이터는 NoSQL UUID 열 데이터를 문자열로 기록합니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "useLogicalUUID" : true

parquetOptions.truncateDoubleSpecials

  • 목적: 이중 +Infinity, -Infinity 및 NaN 값을 자를지 여부를 지정합니다.

    기본적으로 false으로 설정됩니다. true로 설정하는 경우
    • Positive_Infinity는 Double.MAX_VALUE로 잘립니다.
    • NEGATIVE_INFINITY는 -Double.MAX_VALUE로 잘립니다.
    • NaN는 9.9999999999999990E307로 잘립니다.
  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "truncateDoubleSpecials" : true

Oracle NoSQL Database

Oracle NoSQL Database의 구성 파일 형식은 NoSQL Database Migrator로 표시됩니다.

싱크 구성 템플리트

"sink" : {
  "type": "nosqldb",
  "storeName" : "<store name>",
  "helperHosts" : ["hostname1:port1","hostname2:port2,..."],
  "security" : "</path/to/store/credentials/file>",
  "table" : "<fully qualified table name>",
  "includeTTL": <true|false>,
  "ttlRelativeDate": "<date-to-use in UTC>",
  "schemaInfo" : {
    "schemaPath" : "</path/to/a/schema/file>",
    "defaultSchema" : <true|false>,
    "useSourceSchema" : <true|false>,
    "DDBPartitionKey" : <"name:type">,
    "DDBSortKey" : "<name:type>"
  },
  "overwrite" : <true|false>,
  "requestTimeoutMs" : <timeout in milli seconds>
}

싱크 매개변수

공통 구성 매개변수

  • 유형

    "type" : "nosqldb" 사용

  • 보안

    예제:

    "security" : "/home/user/client.credentials"

    Password file 기반 인증의 보안 파일 컨텐트 예제:

    oracle.kv.password.noPrompt=true
    oracle.kv.auth.username=admin
    oracle.kv.auth.pwdfile.file=/home/nosql/login.passwd
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=/home/nosql/client.trust
    oracle.kv.ssl.protocols=TLSv1.2
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)

    전자 지갑 기반 인증에 대한 보안 파일 내용 예제:

    oracle.kv.password.noPrompt=true
    oracle.kv.auth.username=admin
    oracle.kv.auth.wallet.dir=/home/nosql/login.wallet
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=/home/nosql/client.trust
    oracle.kv.ssl.protocols=TLSv1.2
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)
  • requestTimeoutMs

    예: "requestTimeoutMs" : 5000

고유 구성 매개변수

storeName

  • 목적: Oracle NoSQL Database 저장소의 이름입니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예: "storeName" : "kvstore"

helperHosts

  • 목적: hostname:port 형식의 호스트 및 레지스트리 포트 쌍 목록입니다. 쉼표를 사용하여 목록의 각 항목을 구분합니다. 하나 이상의 도우미 호스트를 지정해야 합니다.

  • 데이터 유형: 문자열 배열
  • 필수(Y/N): Y
  • 예: "helperHosts" : ["localhost:5000","localhost:6000"]

테이블

  • 목적: 이전된 데이터를 저장할 테이블 이름을 지정합니다.

    형식: [namespace_name:]<table_name>

    테이블이 DEFAULT 네임스페이스에 있으면 namespace_name를 생략할 수 있습니다. 테이블은 이전 중 저장소에 존재해야 하며 해당 스키마는 소스 데이터와 일치해야 합니다.

    싱크에서 테이블을 사용할 수 없는 경우 schemaInfo 매개변수를 사용하여 NoSQL Database Migrator를 통해 싱크에 테이블을 만들 수 있습니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    • DEFAULT 네임스페이스 "table" :"mytable" 사용

    • 기본 네임스페이스가 아닌 "table" : "mynamespace:mytable"

    • 하위 테이블 "table" : "mytable.child" 을 지정하려면

      주:

      유효한 데이터 소스에서 Oracle NoSQL Database로 하위 테이블을 마이그레이션할 수 있습니다. NoSQL Database Migrator는 각 실행 시 하나의 테이블만 복사합니다. 상위 테이블이 하위 테이블보다 먼저 이전되었는지 확인합니다.

includeTTL

  • 목적: Oracle NoSQL Database 테이블을 임포트할 때 소스에서 제공하는 테이블 행에 대한 TTL 메타데이터를 포함할지 여부를 지정합니다.

    이 매개변수를 지정하지 않을 경우 기본값이 false로 설정됩니다. 이 경우 NoSQL Database MigratorOracle NoSQL Database 테이블을 임포트할 때 소스가 제공하는 테이블 행에 대한 TTL 메타데이터를 포함하지 않습니다.

    true로 설정된 경우 NoSQL 데이터베이스 마이그레이터 툴이 테이블 행을 임포트할 때 TTL 메타데이터에 대해 다음 검사를 수행합니다.
    • _metadata 정의가 없는 행을 임포트하는 경우 NoSQL Database Migrator 도구는 TTL을 0으로 설정합니다. 즉, 행이 만료되지 않습니다.
    • _metadata 정의가 있는 행을 임포트하는 경우 NoSQL 데이터베이스 마이그레이터 툴은 행이 임포트될 때 TTL 값을 참조 시간과 비교합니다. 참조 시간을 기준으로 행이 이미 만료된 경우 해당 행을 건너뜁니다. 행이 만료되지 않은 경우 TTL 값과 함께 임포트됩니다. 기본적으로 가져오기 작업의 참조 시간은 NoSQL Database Migrator 도구가 실행 중인 시스템의 System.currentTimeMillis()에서 가져온 현재 시간(밀리초)입니다. 그러나 만료 시간을 연장하고 그렇지 않으면 즉시 만료되는 행을 임포트하려면 ttlRelativeDate 구성 매개변수를 사용하여 사용자정의 참조 시간을 설정할 수도 있습니다.
      행의 만료 시간을 계산하는 공식은 다음과 같습니다.
      expiration = (TTL value of source row in milliseconds - Reference Time in milliseconds)
      if (expiration <= 0) then it indicates that row has expired.

      주:

      Oracle NoSQL TTL 경계는 시 및 일 단위이므로 임포트된 행의 TTL이 가장 가까운 시 또는 일 단위로 조정되는 경우도 있습니다. 예를 들어, 만료 값이 1629709200000 (2021-08-23 09:00:00)이고 참조 시간 값이 1629707962582 (2021-08-23 08:39:22)인 행이 있다고 가정해 보겠습니다. 여기서 이 데이터를 임포트할 때 참조 시간을 기준으로 행이 만료되지 않더라도 행의 새 TTL은 1629712800000 (2021-08-23 10:00:00)입니다.
  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "includeTTL" : true

ttlRelativeDate

  • 목적: Oracle NoSQL Database로 임포트하는 동안 테이블 행의 TTL 만료를 설정하는 데 사용되는 YYYY-MM-DD hh:mm:ss 형식으로 UTC 일자를 지정합니다.

    내보내는 데이터의 테이블 행이 만료된 경우 ttlRelativeDate 매개변수를 내보낸 데이터에 있는 테이블 행의 만료 시간 이전 날짜로 설정할 수 있습니다.

    이 매개변수를 지정하지 않으면 기본적으로 NoSQL Database Migrator 도구가 실행 중인 시스템의 System.currentTimeMillis()에서 가져온 현재 시간(밀리초)으로 설정됩니다.

  • 데이터 유형: 일자
  • 필수(Y/N): N
  • 예제: "ttlRelativeDate" : "2021-01-03 04:31:17"

    2021년 1월 1일부터 7일 후에 테이블 행이 만료되는 시나리오를 살펴보겠습니다. 이 테이블을 엑스포트한 후 2021년 1월 7일에 테이블에 문제가 발생하여 데이터를 임포트하기로 결정합니다. 테이블 행이 1일 후에 만료됩니다(데이터 만료일에서 현재 날짜인 ttlRelativedate 구성 매개변수의 기본값 빼기). 그러나 테이블 행의 만료 날짜를 하루가 아닌 5일로 연장하려면 ttlRelativeDate 매개변수를 사용하고 이전 날짜를 선택합니다. 따라서 이 시나리오에서 테이블 행의 만료 시간을 5일로 연장하려면 ttlRelativeDate 구성 매개변수 값을 2021년 1월 3일로 설정합니다. 이 값은 테이블 행이 임포트될 때 참조 시간으로 사용됩니다.

스키마 정보

  • 목적: 이전할 데이터의 스키마를 지정합니다. 지정되지 않은 경우 NoSQL 데이터베이스 마이그레이터는 테이블이 싱크 저장소에 존재한다고 가정합니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

schemaInfo.schemaPath

  • 목적: NoSQL 테이블에 대한 DDL 문을 포함하는 파일의 절대 경로를 지정합니다.

    NoSQL Database Migrator는 데이터를 마이그레이션하기 전에 이 파일에 나열된 DDL 명령을 실행합니다.

    NoSQL Database MigratorschemaPath 파일의 라인당 두 개 이상의 DDL 문을 지원하지 않습니다.

  • 데이터 유형: 문자열

  • 필수(Y/N): N

    주:

    defaultSchemaschemaPath는 함께 사용할 수 없습니다.
  • 예: "schemaPath" : "/home/user/schema_file"

schemaInfo.defaultSchema

  • 목적: 이 매개변수를 true로 설정하면 NoSQL Database Migrator가 기본 스키마로 테이블을 생성하도록 지시합니다. 기본 스키마는 마이그레이터 자체에 의해 정의됩니다. 기본 스키마 정의에 대한 자세한 내용은 Oracle NoSQL Data Migrator 사용기본 스키마를 참조하십시오.

  • 데이터 유형: 부울

  • 필수(Y/N): N

    주:

    defaultSchemaschemaPath는 함께 사용할 수 없습니다.

schemaInfo.useSourceSchema

  • 목적: NoSQL 테이블을 이전할 때 싱크에서 소스가 제공한 테이블 스키마 정의를 사용할지 여부를 지정합니다.

  • 데이터 유형: 부울

  • 필수(Y/N): N

    주:

    defaultSchema, schemaPathuseSourceSchema 매개변수는 함께 사용할 수 없습니다. 이러한 매개변수 중 하나만 지정하십시오.
  • 예:
    • 기본 스키마 사용:
      "schemaInfo" : {
        "defaultSchema" : true
      }
    • 미리 정의된 스키마 사용:
      "schemaInfo" : {
       "schemaPath" : "<complete/path/to/the/schema/definition/file>"
      }
    • 소스 스키마 사용:
      "schemaInfo" : {
        "useSourceSchema" : true
      }

schemaInfo.DDBPartitionKey

  • 목적: Sink Oracle NoSQL Database 테이블에 사용할 DynamoDB 분할 영역 키 및 해당 Oracle NoSQL Database 유형을 지정합니다. 이 키는 NoSQL DB 테이블 샤드 키로 사용됩니다. defaultSchema가 true로 설정되어 있고 소스 형식이 dynamodb_json인 경우에만 적용할 수 있습니다. 자세한 내용은 DynamoDB 유형을 Oracle NoSQL 유형에 매핑을 참조하십시오.
  • 필수(Y/N): defaultSchema가 true이고 소스가 dynamodb_json인 경우 Y입니다.
  • 예: "DDBPartitionKey" : "PersonID:INTEGER"

    주:

    분할 영역 키에 대시(-) 또는 점(.)가 포함된 경우 NoSQL 열 이름이 점 및 대시를 지원하지 않으므로 Migrator는 이를 밑줄(_)로 바꿉니다.

schemaInfo.DDBSortKey

  • 목적: 대상 Oracle NoSQL Database 테이블에서 사용할 DynamoDB 정렬 키 및 해당 Oracle NoSQL Database 유형을 지정합니다. 임포트 DynamoDB 테이블에 정렬 키가 없는 경우 이 속성을 설정하면 안됩니다. 이 키는 NoSQL DB 테이블에서 기본 키의 비샤드 부분으로 사용됩니다. defaultSchema가 true로 설정되어 있고 소스가 dynamodb_json인 경우에만 적용할 수 있습니다. 자세한 내용은 DynamoDB 유형을 Oracle NoSQL 유형에 매핑을 참조하십시오.
  • 필수(Y/N): N
  • 예: "DDBSortKey" : "Skey:STRING"

    주:

    정렬 키에 대시(-) 또는 점(.)이 포함된 경우 NoSQL 열 이름이 점 및 대시를 지원하지 않으므로 Migrator는 밑줄(_)로 바꿉니다.

overwrite

  • 목적: 소스에서 마이그레이션할 레코드가 이미 싱크에 있는 경우 NoSQL Database Migrator의 동작을 나타냅니다.

    값이 false로 설정된 경우 테이블을 마이그레이션할 때 NoSQL Database Migrator는 동일한 기본 키가 싱크에 이미 있는 레코드를 건너뜁니다.

    값이 true로 설정된 경우 테이블을 마이그레이션할 때 NoSQL Database Migrator는 동일한 기본 키가 이미 싱크에 있는 레코드를 덮어씁니다.

    지정하지 않으면 기본적으로 true로 설정됩니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "overwrite" : false

Oracle NoSQL Database Cloud Service

Oracle NoSQL Database Cloud Service의 구성 파일 형식은 NoSQL Database Migrator로 표시됩니다.

싱크 구성 템플리트

"sink" : {
  "type" : "nosqldb_cloud",
  "endpoint" : "<Oracle NoSQL Cloud Service Endpoint>",
  "table" : "<table name>",
  "compartment" : "<OCI compartment name or id>",
  "includeTTL": <true|false>,
  "ttlRelativeDate" : "<date-to-use in UTC>",  
  "schemaInfo" : {
    "schemaPath" : "</path/to/a/schema/file>",
    "defaultSchema" : <true|false>,
    "useSourceSchema" : <true|false>,
    "DDBPartitionKey" : <"name:type">,
    "DDBSortKey" : "<name:type>",
    "onDemandThroughput" : <true|false>,
    "readUnits" : <table read units>,
    "writeUnits" : <table write units>,
    "storageSize" : <storage size in GB>
   },
  "credentials" : "</path/to/oci/credential/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
  "useDelegationToken" : <true|false>,
  "writeUnitsPercent" : <table writeunits percent>,
  "requestTimeoutMs" : <timeout in milli seconds>,
  "overwrite" : <true|false>
}

싱크 매개변수

공통 구성 매개변수

  • 유형

    "type" : "nosqldb_cloud" 사용

  • endpoint
    예제:
    • 지역 ID: "endpoint" : "us-ashburn-1"

    • URL 형식: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • 인증서
    예제:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    예제:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    예: "useInstancePrincipal" : true

  • useDelegationToken

    예: "useDelegationToken" : true

    주:

    위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
  • requestTimeoutMs

    예: "requestTimeoutMs" : 5000

고유 구성 매개변수

테이블

  • 목적: 이전된 데이터를 저장할 테이블 이름을 지정합니다.

    이 테이블이 Oracle NoSQL Database Cloud Service에 있는지 확인해야 합니다. 그렇지 않으면 싱크 구성에서 schemaInfo 객체를 사용하여 NoSQL Database Migrator가 테이블을 만들도록 해야 합니다.

    이 테이블의 스키마는 소스 데이터와 일치해야 합니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예:
    • "table" : "mytable" 테이블을 지정하려면
    • 하위 테이블 "table" : "mytable.child"을 지정하려면

      주:

      유효한 데이터 소스에서 Oracle NoSQL Database Cloud Service로 하위 테이블을 마이그레이션할 수 있습니다. NoSQL Database Migrator는 각 실행 시 하나의 테이블만 복사합니다. 상위 테이블이 하위 테이블보다 먼저 이전되었는지 확인합니다.

구획

  • 목적: 테이블이 상주하는 구획의 이름 또는 OCID를 지정합니다.

    값을 제공하지 않으면 기본적으로 root 구획으로 설정됩니다.

    구획 탐색기 창의 OCI 클라우드 콘솔의 거버넌스 아래에서 구획의 OCID를 찾을 수 있습니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): 테넌시의 루트 구획에 테이블이 없거나 useInstancePrincipal 매개변수가 true로 설정된 경우 Y입니다.

    주:

    useInstancePrincipal 매개변수가 true로 설정된 경우 구획에서 이름이 아닌 구획 OCID를 지정해야 합니다.
  • 예:
    • 구획 이름

      "compartment" : "mycompartment"

    • 해당 상위 구획으로 한정된 컴파트먼트 이름입니다.

      "compartment" : "parent.childcompartment"

    • 제공된 값이 없습니다. 기본값은 루트 구획입니다.

      "compartment": ""

    • 컴파운드 OCID

      "compartment" : "ocid1.tenancy.oc1...4ksd"

includeTTL

  • 목적: Oracle NoSQL Database 테이블을 임포트할 때 소스에서 제공하는 테이블 행에 대한 TTL 메타데이터를 포함할지 여부를 지정합니다.

    이 매개변수를 지정하지 않을 경우 기본값이 false로 설정됩니다. 이 경우 NoSQL Database MigratorOracle NoSQL Database 테이블을 임포트할 때 소스가 제공하는 테이블 행에 대한 TTL 메타데이터를 포함하지 않습니다.

    true로 설정된 경우 NoSQL 데이터베이스 마이그레이터 툴이 테이블 행을 임포트할 때 TTL 메타데이터에 대해 다음 검사를 수행합니다.
    • _metadata 정의가 없는 행을 임포트하는 경우 NoSQL Database Migrator 도구는 TTL을 0으로 설정합니다. 즉, 행이 만료되지 않습니다.
    • _metadata 정의가 있는 행을 임포트하는 경우 NoSQL 데이터베이스 마이그레이터 툴은 행이 임포트될 때 TTL 값을 참조 시간과 비교합니다. 참조 시간을 기준으로 행이 이미 만료된 경우 해당 행을 건너뜁니다. 행이 만료되지 않은 경우 TTL 값과 함께 임포트됩니다. 기본적으로 가져오기 작업의 참조 시간은 NoSQL Database Migrator 도구가 실행 중인 시스템의 System.currentTimeMillis()에서 가져온 현재 시간(밀리초)입니다. 그러나 만료 시간을 연장하고 그렇지 않으면 즉시 만료되는 행을 임포트하려면 ttlRelativeDate 구성 매개변수를 사용하여 사용자정의 참조 시간을 설정할 수도 있습니다.
      행의 만료 시간을 계산하는 공식은 다음과 같습니다.
      expiration = (TTL value of source row in milliseconds - Reference Time in milliseconds)
      if (expiration <= 0) then it indicates that row has expired.

      주:

      Oracle NoSQL TTL 경계는 시 및 일 단위이므로 임포트된 행의 TTL이 가장 가까운 시 또는 일 단위로 조정되는 경우도 있습니다. 예를 들어, 만료 값이 1629709200000 (2021-08-23 09:00:00)이고 참조 시간 값이 1629707962582 (2021-08-23 08:39:22)인 행이 있다고 가정해 보겠습니다. 여기서 이 데이터를 임포트할 때 참조 시간을 기준으로 행이 만료되지 않더라도 행의 새 TTL은 1629712800000 (2021-08-23 10:00:00)입니다.
  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "includeTTL" : true

ttlRelativeDate

  • 목적: Oracle NoSQL Database로 임포트하는 동안 테이블 행의 TTL 만료를 설정하는 데 사용되는 YYYY-MM-DD hh:mm:ss 형식으로 UTC 일자를 지정합니다.

    내보내는 데이터의 테이블 행이 만료된 경우 ttlRelativeDate 매개변수를 내보낸 데이터에 있는 테이블 행의 만료 시간 이전 날짜로 설정할 수 있습니다.

    이 매개변수를 지정하지 않으면 기본적으로 NoSQL Database Migrator 도구가 실행 중인 시스템의 System.currentTimeMillis()에서 가져온 현재 시간(밀리초)으로 설정됩니다.

  • 데이터 유형: 일자
  • 필수(Y/N): N
  • 예제: "ttlRelativeDate" : "2021-01-03 04:31:17"

    2021년 1월 1일부터 7일 후에 테이블 행이 만료되는 시나리오를 살펴보겠습니다. 이 테이블을 엑스포트한 후 2021년 1월 7일에 테이블에 문제가 발생하여 데이터를 임포트하기로 결정합니다. 테이블 행이 1일 후에 만료됩니다(데이터 만료일에서 현재 날짜인 ttlRelativedate 구성 매개변수의 기본값 빼기). 그러나 테이블 행의 만료 날짜를 하루가 아닌 5일로 연장하려면 ttlRelativeDate 매개변수를 사용하고 이전 날짜를 선택합니다. 따라서 이 시나리오에서 테이블 행의 만료 시간을 5일로 연장하려면 ttlRelativeDate 구성 매개변수 값을 2021년 1월 3일로 설정합니다. 이 값은 테이블 행이 임포트될 때 참조 시간으로 사용됩니다.

schemaInfo

  • 목적: 이전할 데이터의 스키마를 지정합니다.

    이 매개변수를 지정하지 않으면 NoSQL Database Migrator는 테이블이 Oracle NoSQL Database Cloud Service에 이미 존재한다고 가정합니다.

    이 매개변수를 지정하지 않고 테이블이 싱크대에 없으면 마이그레이션이 실패합니다.

  • 데이터 유형: 객체
  • 필수(Y/N): N

schemaInfo.schemaPath

  • 목적: NoSQL 테이블에 대한 DDL 문을 포함하는 파일의 절대 경로를 지정합니다.

    NoSQL Database Migrator는 데이터를 마이그레이션하기 전에 이 파일에 나열된 DDL 명령을 실행합니다.

    NoSQL Database MigratorschemaPath 파일의 라인당 두 개 이상의 DDL 문을 지원하지 않습니다.

  • 데이터 유형: 문자열

  • 필수(Y/N): N

    주:

    defaultSchemaschemaPath는 함께 사용할 수 없습니다.
  • 예: "schemaPath" : "/home/user/schema_file"

schemaInfo.defaultSchema

  • 목적: 이 매개변수를 로 설정하면 NoSQL 데이터베이스 마이그레이터가 기본 스키마로 테이블을 생성합니다. 기본 스키마는 마이그레이터 자체에 의해 정의됩니다. 기본 스키마 정의에 대한 자세한 내용은 Oracle NoSQL Data Migrator 사용기본 스키마를 참조하십시오.

  • 데이터 유형: 부울

  • 필수(Y/N): N

    주:

    defaultSchemaschemaPath는 함께 사용할 수 없습니다.

schemaInfo.useSourceSchema

  • 목적: NoSQL 테이블을 이전할 때 싱크에서 소스가 제공한 테이블 스키마 정의를 사용할지 여부를 지정합니다.

  • 데이터 유형: 부울

  • 필수(Y/N): N

    주:

    defaultSchema, schemaPathuseSourceSchema 매개변수는 함께 사용할 수 없습니다. 이러한 매개변수 중 하나만 지정하십시오.
  • 예:
    • 기본 스키마 사용:
      "schemaInfo": {
        "defaultSchema": true,
        "readUnits": 100,
        "writeUnits": 60,
        "storageSize": 1
      }
    • 미리 정의된 스키마 사용:
      "schemaInfo": {
        "schemaPath": "<complete/path/to/the/schema/definition/file>",
        "readUnits": 100,
        "writeUnits": 100,
        "storageSize": 1
      }
    • 소스 스키마 사용:
      "schemaInfo": {
        "useSourceSchema": true,
        "readUnits": 100,
        "writeUnits": 60,
        "storageSize": 1
      }

schemaInfo.DDBPartitionKey

  • 목적: Sink Oracle NoSQL Database 테이블에 사용할 DynamoDB 분할 영역 키 및 해당 Oracle NoSQL Database 유형을 지정합니다. 이 키는 NoSQL DB 테이블 샤드 키로 사용됩니다. defaultSchema가 true로 설정되어 있고 소스 형식이 dynamodb_json인 경우에만 적용할 수 있습니다. 자세한 내용은 DynamoDB 유형을 Oracle NoSQL 유형에 매핑을 참조하십시오.
  • 필수(Y/N): defaultSchema가 true이고 소스가 dynamodb_json인 경우 Y입니다.
  • 예: "DDBPartitionKey" : "PersonID:INTEGER"

    주:

    분할 영역 키에 대시(-) 또는 점(.)가 포함된 경우 NoSQL 열 이름이 점 및 대시를 지원하지 않으므로 Migrator는 이를 밑줄(_)로 바꿉니다.

schemaInfo.DDBSortKey

  • 목적: 대상 Oracle NoSQL Database 테이블에서 사용할 DynamoDB 정렬 키 및 해당 Oracle NoSQL Database 유형을 지정합니다. 임포트 DynamoDB 테이블에 정렬 키가 없는 경우 이 속성을 설정하면 안됩니다. 이 키는 NoSQL DB 테이블에서 기본 키의 비샤드 부분으로 사용됩니다. defaultSchema가 true로 설정되어 있고 소스가 dynamodb_json인 경우에만 적용할 수 있습니다. 자세한 내용은 DynamoDB 유형을 Oracle NoSQL 유형에 매핑을 참조하십시오.
  • 필수(Y/N): N
  • 예: "DDBSortKey" : "Skey:STRING"

    주:

    정렬 키에 대시(-) 또는 점(.)이 포함된 경우 NoSQL 열 이름이 점 및 대시를 지원하지 않으므로 Migrator는 밑줄(_)로 바꿉니다.

schemaInfo.onDemandThroughput

  • 목적: 요청 시 읽기 및 쓰기 처리량이 있는 테이블을 생성하도록 지정합니다. 이 매개변수를 설정하지 않으면 프로비저닝된 용량으로 테이블이 생성됩니다.

    기본값은 false입니다.

    주:

    이 매개변수는 최상위 레벨 상위 테이블의 처리량을 공유하므로 하위 테이블에 적용할 수 없습니다.
  • 데이터 유형: 부울

  • 필수(Y/N): N

  • 예: "onDemandThroughput" : "true"

schemaInfo.readUnits

  • 목적: 새 테이블의 읽기 처리량을 지정합니다.

    주:

    • 이 매개변수는 온디맨드 용량으로 프로비전된 테이블에 적용할 수 없습니다.
    • 이 매개변수는 최상위 레벨 상위 테이블의 읽기 처리량을 공유하므로 하위 테이블에 적용할 수 없습니다.
  • 데이터 유형: 정수

  • 필수(Y/N): Y - 테이블이 하위 테이블이 아니거나 schemaInfo.onDemandThroughput 매개변수가 false로 설정된 경우, 그렇지 않은 경우 N입니다.

  • 예: "readUnits" : 100

schemaInfo.writeUnits

  • 목적: 새 테이블의 쓰기 처리량을 지정합니다.

    주:

    • 이 매개변수는 온디맨드 용량으로 프로비전된 테이블에 적용할 수 없습니다.
    • 이 매개변수는 최상위 레벨 상위 테이블의 쓰기 처리량을 공유하므로 하위 테이블에 적용할 수 없습니다.
  • 데이터 유형: 정수

  • 필수(Y/N): Y - 테이블이 하위 테이블이 아니거나 schemaInfo.onDemandThroughput 매개변수가 false로 설정된 경우, 그렇지 않은 경우 N입니다.

  • 예: "writeUnits" : 100

schemaInfo.storageSize

  • 목적: 새 테이블의 저장 영역 크기(GB)를 지정합니다.

    주:

    이 매개변수는 최상위 레벨 상위 테이블의 저장 영역 크기를 공유하므로 하위 테이블에 적용할 수 없습니다.
  • 데이터 유형: 정수

  • 필수(Y/N): Y, 테이블이 하위 테이블이 아닌 경우 N.

  • 예제:
    • schemaPath 사용

      "schemaInfo" : { 
        "schemaPath" : "</path/to/a/schema/file>",
        "readUnits" : 500,
        "writeUnits" : 1000,
        "storageSize" : 5 }
    • defaultSchema 사용

      "schemaInfo" : {
        "defaultSchema" :Yes,
        "readUnits" : 500,   
        "writeUnits" : 1000,   
        "storageSize" : 5  
      }

writeUnitsPercent

  • 목적: 마이그레이션 작업 중 사용할 테이블 쓰기 단위의 백분율을 지정합니다. 데이터를 마이그레이션하는 데 필요한 시간은 이 속성에 직접 비례합니다.

    기본값은 90입니다. 적합한 범위는 1에서 100 사이의 정수입니다.

    이 속성을 사용하여 데이터 마이그레이션 속도를 향상시키는 방법은 Oracle NoSQL Database Migrator 문제 해결을 참조하십시오.

  • 데이터 유형: 정수
  • 필수(Y/N): N
  • 예: "writeUnitsPercent" : 90

overwrite

  • 목적: 소스에서 마이그레이션할 레코드가 이미 싱크에 있는 경우 NoSQL Database Migrator의 동작을 나타냅니다.

    값이 false로 설정된 경우 테이블을 마이그레이션할 때 NoSQL Database Migrator는 동일한 기본 키가 싱크에 이미 있는 레코드를 건너뜁니다.

    값이 true로 설정된 경우 테이블을 마이그레이션할 때 NoSQL Database Migrator는 동일한 기본 키가 이미 싱크에 있는 레코드를 덮어씁니다.

    지정하지 않으면 기본적으로 true로 설정됩니다.

  • 데이터 유형: 부울
  • 필수(Y/N): N
  • 예: "overwrite" : false

변환 구성 템플리트

이 항목에서는 Oracle NoSQL Database Migrator가 지원하는 다양한 변환의 구성 매개변수에 대해 설명합니다. 전체 구성 파일 템플리트는 NoSQL Data Migrator와 함께 사용되는 용어의 Configuration File을 참조하십시오.

Oracle NoSQL Database Migrator를 사용하면 데이터를 수정할 수 있습니다. 즉, 마이그레이션 작업의 일부로 데이터 변환을 추가할 수 있습니다. 단일 마이그레이션에서 여러 변환을 정의할 수 있습니다. 이 경우 소스 데이터가 지정된 순서대로 각 변형을 거치므로 변형 순서가 중요합니다. 변환의 출력은 이동기 파이프라인의 다음 변환에 대한 입력이 됩니다.

NoSQL Data Migrator에서 지원하는 다양한 변환은 다음과 같습니다.

테이블 - 변환

변환 구성 속성 이 변환을 사용하여 ...
ignoreFields 싱크에 쓰기 전에 소스 행에서 식별된 열을 무시합니다.
includeFields 싱크에 쓰기 전에 소스 행에서 식별된 열을 포함합니다.
renameFields 싱크에 쓰기 전에 소스 행에서 식별된 열의 이름을 바꿉니다.
aggregateFields 소스에서 싱크의 단일 열로 여러 열을 집계합니다. 이 변환의 일부로 집계에서 제외할 열을 식별할 수도 있습니다. 이러한 필드는 집계된 열에서 건너뜁니다.

아래에서 지원되는 각 변환에 대한 구성 템플리트를 찾을 수 있습니다.

ignoreFields

ignoreFields 변환에 대한 구성 파일 형식은 아래에 나와 있습니다.

변환 구성 템플리트

"transforms" : {
  "ignoreFields" : ["<field1>","<field2>",...]
}

변환 매개변수

ignoreFields

  • 목적: 출처 레코드에서 무시할 열 이름의 배열입니다.

    주:

    최상위 필드만 제공할 수 있습니다. 중첩 필드의 데이터에 변환을 적용할 수 없습니다.
  • 데이터 유형: 문자열 배열
  • 필수(Y/N): Y
  • 예: 소스 레코드에서 "name" 및 "address"라는 열을 무시하려면 다음을 수행합니다.

    "ignoreFields" : ["name","address"]

includeFields

includeFields 변환에 대한 구성 파일 형식은 아래에 나와 있습니다.

변환 구성 템플리트

"transforms" : {
  "includeFields" : ["<field1>","<field2>",...]
}

변환 매개변수

includeFields

  • 목적: 출처 레코드에서 포함할 열 이름의 배열입니다. 배열에 지정된 필드 포함되며 나머지 필드는 무시됩니다.

    주:

    빈 배열을 지정하면 NoSQL Database Migrator 도구에서 오류가 발생합니다. 또한 최상위 필드만 지정할 수 있습니다. NoSQL Database Migrator 도구는 중첩 필드의 데이터에 변환을 적용하지 않습니다.
  • 데이터 유형: 문자열 배열
  • 필수(Y/N): Y
  • 예: 소스 레코드에서 "age" 및 "gender"라는 열을 무시하려면 다음을 수행합니다.

    "includeFields" : ["age","gender"]

renameFields

renameFields 변환에 대한 구성 파일 형식은 아래에 나와 있습니다.

변환 구성 템플리트

"transforms" : {
  "renameFields" : {
    "<old_name>" : "<new_name>",
    "<old_name>" : "<new_name>,"
    .....
  }
}

변환 매개변수

renameFields

  • 목적: 이름을 바꿀 이전 열과 새 열 이름의 키-값 쌍입니다.

    주:

    최상위 필드만 제공할 수 있습니다. 중첩 필드의 데이터에 변환을 적용할 수 없습니다.
  • 데이터 유형: JSON 객체
  • 필수(Y/N): Y
  • 예: 이름이 "residence"인 열의 이름을 "address"로 바꾸고 이름이 "_id"인 열의 이름을 "id"로 바꾸려면 다음과 같이 하십시오.

    "renameFields" : { "residence" : "address", "_id" : "id" }

aggregateFields

aggregateFields 변환에 대한 구성 파일 형식은 아래에 나와 있습니다.

변환 구성 템플리트

"transforms" : {
  "aggregateFields" : {
    "fieldName" : "name of the new aggregate field",
    "skipFields" : ["<field1>","<field2">,...]
  }
}

변환 매개변수

aggregateFields

  • 목적: 싱크에 있는 총괄 필드의 이름입니다.

  • 데이터 유형: 문자열
  • 필수(Y/N): Y
  • 예: 지정된 레코드가 다음과 같은 경우

    {
      "id" : 100,
      "name" : "john",
      "address" : "USA",
      "age" : 20
    }

    집계 변형인 경우:

    "aggregateFields" : {
      "fieldName" : "document",
      "skipFields" : ["id"]
    }

    싱크의 집계 열은 다음과 같습니다.

    {
      "id": 100,
      "document": {
        "name": "john",
        "address": "USA",
        "age": 20
      }
    }

Oracle NoSQL 유형에 DynamoDB 유형 매핑

아래 표는 DynamoDB 유형을 Oracle NoSQL 유형에 매핑하는 방법을 보여줍니다.

표 - Oracle NoSQL 유형에 DynamoDB 유형 매핑

# DynamoDB 유형 NoSQL JSON 열에 대한 JSON 유형 Oracle NoSQL 유형
1 문자열(S) JSON 문자열 STRING
2 번호 유형(N) JSON 번호 정수/장수/부동/이중/숫자
3 부울(BOOL) JSON 부울 BOOLEAN
4 이진 유형(B) - 바이트 버퍼 BASE-64 인코딩된 JSON 문자열 이진
5 NULL JSON 널 NULL
6 문자열 세트(SS) JSON 문자열 배열 배열(문자열)
7 번호 세트(NS) JSON 번호 배열 배열(정수/장수/부동/이중/숫자)
8 이진 집합(BS) Base-64 인코딩 문자열의 JSON 배열 배열(바이너리)
9 목록(L) JSON 배열 배열(JSON)
10 맵(M) JSON 객체 JSON
11 분할 영역 키 NA PRIMARY KEY 및 SHARD KEY
12 정렬 키 NA 기본 키
13 대시와 점이 있는 속성 이름 밑줄이 있는 JSON 필드 이름 밑줄이 있는 열 이름
DynamoDB 유형을 Oracle NoSQL 유형에 매핑하는 동안 고려해야 할 추가 사항은 거의 없습니다.
  • DynamoDB 숫자에 대해 하나의 데이터 유형만 지원하며 최대 38자리 자릿수를 가질 수 있습니다. 반면 Oracle NoSQL은 data.You의 범위 및 자릿수에 따라 선택할 수 있는 여러 유형을 지원하므로 입력 데이터 범위에 맞는 적절한 숫자 유형을 선택할 수 있습니다. 데이터의 특성을 잘 모르는 경우 NoSQL NUMBER 유형을 사용할 수 있습니다.
  • DynamoDB 숫자에 대해 하나의 데이터 유형만 지원하며 최대 38자리 자릿수를 가질 수 있습니다. 반면 Oracle NoSQL은 data.You의 범위 및 자릿수에 따라 선택할 수 있는 여러 유형을 지원하므로 입력 데이터 범위에 맞는 적절한 숫자 유형을 선택할 수 있습니다. 데이터의 특성을 잘 모르는 경우 NoSQL NUMBER 유형을 사용할 수 있습니다.
  • DynamoDB의 분할 영역 키의 제한은 2048바이트이지만 Oracle NoSQL Cloud Service의 제한은 기본 키/샤드 키의 경우 64바이트입니다.
  • DynamoDB의 정렬 키는 1024바이트로 제한되지만 Oracle NoSQL Cloud Service의 기본 키에 대해 64바이트로 제한됩니다.
  • DynamoDB의 속성 이름은 64KB일 수 있지만 Oracle NoSQL 클라우드 서비스 열 이름은 64자로 제한됩니다.

Oracle NoSQL-연회 데이터 유형 매핑

Oracle NoSQL 데이터 유형을 Parquet 데이터 유형에 매핑하는 방법에 대해 설명합니다.

NoSQL 유형 연회 유형
BOOLEAN BOOLEAN
INTEGER INT32
LONG INT64
FLOAT DOUBLE
DOUBLE DOUBLE
이진 이진
FIXED_BINARY 이진
STRING 이진(문자열)
목록 이진(문자열)

또는

BINARY(ENUM) - 논리적 ENUM이 구성된 경우

UUID 이진(문자열)

또는

FIXED_BINARY(16) - 논리적 UUID가 구성된 경우

TIMESTAMP(p) INT64(TIMESTAMP(p))
NUMBER DOUBLE
field_name 배열(T)
group field_name(LIST) {
  repeated group list {
      required T element
  }
}
field_name 맵(T)
group field_name (MAP) {
    repeated group key_value (MAP_KEY_VALUE) {
       required binary key (STRING);
        required T value;
    }
}
field_name RECORD(K₁ T₁ N₁, Kٖ₂ T₂ N₂, ....)

설명:

K = 키 이름

T = 유형

N = Null 가능 여부

group field_name {
    ni == true ? optional Ti ki : required Ti ki   
}
JSON 이진(문자열)

또는

BINARY(JSON) - 논리적 JSON이 구성된 경우

주:

NoSQL 숫자 유형이 Parquet Double 유형으로 변환된 경우 값이 Double로 표현될 수 없는 경우 소수점 이하 자릿수가 손실될 수 있습니다. 숫자가 너무 커서 Double으로 표현할 수 없는 경우 Double.NEGATIVE_INFINITY 또는 Double.POSITIVE_INFINITY로 변환됩니다.

DynamoDB 테이블을 Oracle NoSQL 테이블로 매핑

DynamoDB에서 테이블은 항목 모음이고 각 항목은 속성 모음입니다. 테이블의 각 항목에는 고유 식별자 또는 기본 키가 있습니다. 기본 키 이외에 테이블은 스키마리스입니다. 각 항목은 고유한 속성을 가질 수 있습니다.

DynamoDB는 다음 두 종류의 기본 키를 지원합니다.
  • 분할 영역 키 - 분할 영역 키라는 하나의 속성으로 구성된 단순 기본 키입니다. DynamoDB는 분할 영역 키의 값을 내부 해시 함수에 대한 입력으로 사용합니다. 해시 함수의 출력에 따라 항목이 저장될 분할 영역이 결정됩니다.
  • 분할 영역 키 및 정렬 키 - 조합 기본 키로서 이 유형의 키는 두 가지 속성으로 구성됩니다. 첫번째 속성은 partition key이고 두번째 속성은 sort key입니다. DynamoDB는 분할 영역 키 값을 내부 해시 함수에 대한 입력으로 사용합니다. 해시 함수의 출력에 따라 항목이 저장될 분할 영역이 결정됩니다. 분할 영역 키 값이 동일한 모든 항목은 정렬 키 값별로 정렬된 순서로 함께 저장됩니다.

반면 Oracle NoSQL 테이블은 스키마 및 스키마리스 설계를 모두 사용하여 유연한 데이터 모델을 지원합니다.

DynamoDB 테이블을 모델링하는 방법에는 다음 두 가지가 있습니다.
  1. DynamoDB 테이블을 JSON 문서로 모델링(권장): 이 모델링에서는 Dynamo DB 테이블의 모든 속성을 분할 영역 키 및 정렬 키를 제외한 NoSQL 테이블의 JSON 열에 매핑합니다. 분할 영역 키 및 정렬 키를 NoSQL 테이블의 Primary Key 열로 모델링합니다. AggregateFields 변환을 사용하여 비기본 키 데이터를 JSON 열로 집계합니다.

    주:

    Migrator는 사용자에게 친숙한 구성 defaultSchema을 제공하여 JSON 열로 속성을 집계하는 스키마 없는 DDL 테이블을 자동으로 생성합니다.
  2. Modeling DynamoDB table as fixed columns in NoSQL table: In this modeling, for each attribute of the DynamoDB table, you will create a column in the NoSQL table as specified in the Mapping of DynamoDB types to Oracle NoSQL types. 분할 영역 키 및 정렬 키 속성을 Primary Key로 모델링합니다. DynamoDB 테이블 스키마 임포트가 고정되어 있고 각 항목에 대부분의 속성에 대한 값이 있는 경우에만 사용해야 합니다. DynamoDB 항목에 공통 속성이 없는 경우 값이 비어 있는 NoSQL 열이 많이 발생할 수 있습니다.

    주:

    스키마가 없는 DynamoDB 테이블의 특성으로 인해 DynamoDB에서 Oracle NoSQL Database로 데이터를 마이그레이션할 때는 스키마가 없는 테이블을 사용하는 것이 좋습니다. 특히 테이블 전체에서 각 레코드의 내용이 동일하지 않을 수 있는 대형 테이블의 경우 더욱 그렇습니다.

Oracle NoSQL Database Migrator 문제 해결

를 사용하는 동안 직면할 수 있는 일반적인 과제와 해결 방법에 대해 알아봅니다.

이전을 실패했습니다. 이 문제를 해결하는 방법?

데이터 마이그레이션 실패는 여러 가지 기본 원인으로 인한 것일 수 있습니다. 중요한 원인은 다음과 같습니다.

테이블 - 마이그레이션 실패 원인

오류 메시지 의미 해상도
Failed to connect to Oracle NoSQL Database 마이그레이터가 NoSQL 데이터베이스와 접속을 설정할 수 없습니다.
  • 구성 JSON 파일의 storeNamehelperHosts 속성 값이 적합하고 호스트에 연결할 수 있는지 확인하십시오.
  • 보안 저장소의 경우 보안 파일이 올바른 사용자 이름 및 비밀번호 값으로 적합한지 확인하십시오.
Failed to connect to Oracle NoSQL Database Cloud Service 이전자가 Oracle NoSQL Database Cloud Service와의 연결을 설정할 수 없습니다.
  • 구성 JSON 파일에 지정된 끝점 URL 또는 영역 이름이 올바른지 확인하십시오.
  • OCI 인증서 파일을 구성 JSON 파일에 지정된 경로에서 사용할 수 있는지 확인하십시오.
  • OCI 인증서에 제공된 OCI 인증서가 적합한지 확인하십시오.
Table not found NoSQL Database Migrator는 마이그레이션을 위해 식별된 테이블을 찾을 수 없습니다.

출처:

  • 테이블이 원본 데이터베이스에 있는지 확인합니다.
  • 테이블이 기본이 아닌 네임스페이스에 생성된 경우 테이블이 구성 JSON 파일에서 네임스페이스로 정규화되었는지 확인하십시오.
  • 테이블에 액세스하는 데 필요한 읽기/쓰기 권한이 있는지 확인합니다.
  • 소스가 Oracle NoSQL Database Cloud Service인 경우 구성 JSON 파일에 적합한 구획 이름이 지정되었는지 확인하고 테이블에 액세스하는 데 필요한 권한 부여가 있는지 확인하십시오.

싱크의 경우:

  • 테이블이 Sink에 있는지 확인합니다. 존재하지 않는 경우 수동으로 테이블을 생성하거나 schemaInfo 구성을 사용하여 이전을 통해 생성해야 합니다.
DDL Execution failed 입력 스키마 정의 파일에 제공된 DDL 명령이 부적합합니다.
  • schemaPath 파일에서 DDL 명령 구문을 확인합니다.
  • schemaPath 파일의 한 행에 DDL 문이 하나만 있는지 확인합니다.
failed to write record to the sink table with java.lang.IllegalArgumentException 입력 레코드가 싱크의 테이블 스키마와 대응하지 않습니다.
  • 대상 싱크 테이블에 지정된 데이터 유형 및 열 이름이 싱크 테이블 스키마와 일치하는지 확인합니다.
  • 변형을 적용한 경우에는 변형된 레코드가 싱크 테이블 스키마와 일치하는지 확인합니다.
Request timeout 소스 또는 싱크 작업이 예상 시간 내에 완료되지 않았습니다.
  • 네트워크 연결을 확인합니다.
  • NoSQL 데이터베이스가 작동 및 실행 중인지 확인합니다.
  • 구성 JSON 파일에서 requestTimeout 값을 늘려 보십시오.

실패한 이전을 재시작하기 전에 고려해야 할 사항은 무엇입니까?

데이터 마이그레이션 작업이 실패하면 싱크는 실패 지점까지 가져온 데이터를 포함하는 중간 상태에 있습니다. 로그에서 오류 및 실패 세부정보를 식별하고 오류를 진단 및 수정한 후 이전을 재시작할 수 있습니다. 다시 시작된 마이그레이션은 처음부터 모든 데이터를 처리하면서 다시 시작됩니다. 실패 지점에서 마이그레이션을 체크포인트하고 재시작할 수 있는 방법은 없습니다. 따라서 NoSQL Database Migrator는 이미 싱크로 마이그레이션된 레코드를 덮어씁니다.

마이그레이션이 너무 느립니다. 어떻게 속도를 높일 수 있습니까?

데이터 마이그레이션에 걸리는 시간은 마이그레이션 중인 데이터의 양, 네트워크 속도, 데이터베이스의 현재 로드와 같은 여러 요인에 따라 달라집니다. 클라우드 서비스의 경우 마이그레이션 속도는 프로비저닝된 읽기 처리량 및 쓰기 처리량에 따라 달라집니다. 따라서 마이그레이션 속도를 향상시키기 위해 다음을 수행할 수 있습니다.
  • 데이터를 마이그레이션하는 동안 Oracle NoSQL Database에서 현재 워크로드를 줄이십시오.
  • 마이그레이션, 소스 및 싱크를 실행하는 시스템이 모두 동일한 데이터 센터에 있고 네트워크 대기 시간이 최소인지 확인합니다.
  • Oracle NoSQL Database Cloud Service의 경우 높은 읽기/쓰기 처리량을 프로비저닝하고 테이블에 할당된 스토리지가 충분한지 여부를 확인합니다. NoSQL Database Migrator로 테이블을 만들지 않으면 쓰기 처리량을 늘릴 수 있습니다. 마이그레이터가 테이블을 만드는 경우 싱크 구성에서 schemaInfo.writeUnits 매개변수에 대해 더 높은 값을 지정하는 것이 좋습니다. 데이터 마이그레이션이 완료되면 이 값을 낮출 수 있습니다. 처리량 변경에 대한 일별 제한에 유의하십시오. 클라우드 제한싱크 구성 템플리트를 참조하십시오.

대규모 데이터세트를 포함하는 장기 실행 마이그레이션이 있습니다. 마이그레이션 진행 상황을 어떻게 추적할 수 있습니까?

추가 로깅을 사용으로 설정하여 장기 실행 마이그레이션의 진행률을 추적할 수 있습니다. Oracle NoSQL Database Migrator의 로깅 동작을 제어하려면 logging.properties 파일에서 원하는 로깅 레벨을 설정해야 합니다. 이 파일은 NoSQL Database Migrator 패키지와 함께 제공되며, Oracle NoSQL Database Migrator가 압축 해제된 디렉토리에서 사용할 수 있습니다. 로깅 레벨은 OFF, SEVERE, WARNING, INFO, FINE, ALL이며 상세 정보 표시 수준이 높아집니다. 로그 레벨을 OFF로 설정하면 모든 로깅 정보가 해제되지만 로그 레벨을 ALL로 설정하면 전체 로그 정보가 제공됩니다. 기본 로그 레벨은 WARNING입니다. 모든 로깅 출력은 기본적으로 콘솔로 이동하도록 구성됩니다. logging.properties 파일에서 각 로그 레벨에 대한 설명을 확인할 수 있습니다.