Oracle NoSQL Database Migrator 참조

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

이 문서에는 다음 항목이 포함되어 있습니다.

매개변수

NoSQL Database Migrator에는 이전 작업을 수행하기 위한 모든 매개변수를 정의하는 구성 파일이 필요합니다. 몇 가지 매개변수는 여러 소스와 싱크대에 걸쳐 공통적입니다. 이 항목에서는 이러한 공통 매개변수 목록을 제공합니다. 개별 소스 또는 싱크대에 고유한 기타 매개변수 목록은 해당 구성 템플리트 절을 참조하십시오.

공통 구성 매개변수

다음은 공통 구성 매개변수입니다. 예제는 개별 구성 템플리트 절을 참조하십시오.

bucket(버킷)

chunkSize(정크 크기)

My Oracle Support 인증서를

credentialsProfile(자격 증명 프로파일)

endpoint

형식

namespace

prefix(접두어)

requestTimeoutMs(요청 시간 초과)

security(보안)

type(유형)

useDelegationToken(사용 위임 토큰)

useInstancePrincipal

useOKEWorkloadIdentity

샘플 사용 사례는 OKE 인증을 사용하여 OCI Object Storage에서 Oracle NoSQL Database Cloud Service로 마이그레이션하기를 참조하십시오.

주: 인증 옵션 중 하나만 선택할 수 있습니다. 따라서 구성 템플리트에서 credentials, useInstancePrincipal, useDelegationToken, useSessionToken 또는 useOKEWorkloadIdentity 매개변수 중 하나만 지정하십시오.

useSessionToken(useSessionToken)

세션 토큰 기반 인증을 사용하려면 OCI CLI(명령행 인터페이스) 명령을 사용하여 세션 토큰을 생성해야 합니다. 샘플 사용 사례는 세션 토큰 인증을 사용하여 Oracle NoSQL Database에서 OCI Object Storage로 마이그레이션하기를 참조하십시오.

참고:

소스 구성 템플리트

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

구성 파일 템플리트의 경우 Terminology used with NoSQL Data MigratorConfiguration File을 참조하십시오.

각 소스의 유효한 싱크 형식에 대한 자세한 내용은 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>"
  }
},

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

dataPath(데이터 경로)

schemaInfo(스키마 정보)

schemaInfo.schemaPath

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-02-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-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-04T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-04T02: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>,
  "useSessionToken" : <true|false>,
  "useOKEWorkloadIdentity" : <true|false>
}

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

schemaInfo(스키마 정보)

schemaInfo.schemaObject

MongoDB 형식 JSON 파일

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

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

MongoDB는 정식 모드완화 모드의 JSON 파일 형식에 대한 두 가지 유형의 확장을 지원합니다. mongoexport 도구를 사용하여 생성된 MongoDB 형식 JSON 파일을 Canonical 또는 Relaxed 모드로 제공할 수 있습니다. 두 모드 모두 마이그레이션을 위해 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>"
  }
}

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

dataPath(데이터 경로)

schemaInfo(스키마 정보)

schemaInfo.schemaPath

OCI 오브젝트 스토리지 버킷의 MongoDB 형식 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>,
  "useDelegationToken" : <true|false>,
  "useSessionToken" : <true|false>,
  "useOKEWorkloadIdentity" : <true|false>
}

출처 매개변수

공통 구성 매개변수

  1. "credentials" : "/home/user/.oci/config"

  2. "credentials" : "/home/user/security/config"

고유 구성 매개변수

schemaInfo(스키마 정보)

schemaInfo.schemaObject

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

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"},"ttl": {"N": "1734616800"}}}
{"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"},"ttl": {"N": "1734616800"}}}

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

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

소스 구성 템플리트

"source" : {
  "type" : "aws_s3",
  "format" : "dynamodb_json",
  "ttlAttributeName" : "<DynamoDB exported TTL attribute name>",
  "s3URL" : "<S3 object url>",
  "credentials" : "</path/to/aws/credentials/file>",
  "credentialsProfile" : "<profile name in aws credentials file>"
}

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

s3URL

My Oracle Support 인증서를

credentialsProfile(자격 증명 프로파일)

ttlAttributeName(ttlAttributeName)

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"},"ttl": {"N": "1734616800"}}}
{"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"},"ttl": {"N": "1734616800"}}}

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

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

소스 구성 템플리트

"source" : {
  "type" : "file",
  "format" : "dynamodb_json",
  "ttlAttributeName" : <DynamoDB exported TTL attribute name>,
  "dataPath" : "<path/to/[file|dir]/containing/exported/DDB/tabledata>"
}

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

dataPath(데이터 경로)

ttlAttributeName(ttlAttributeName)

Oracle NoSQL Database

NoSQL Database Migrator의 소스로 사용되는 Oracle NoSQL Database의 구성 파일 형식은 다음과 같습니다.

소스 구성 템플리트에 테이블 이름을 지정하여 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>",
  "queryFilter" : "<query predicate>",
  "includeTTL": <true|false>,
  "security" : "</path/to/store/security/file>",
  "requestTimeoutMs" : 5000
}

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

storeName(스토어 이름)

helperHosts(helperHosts)

table(테이블)

includeTTL(포함TTL)

queryFilter(질의 필터)

지원되는 표현식

Migrator 유틸리티는 질의 술어에서 다음 표현식을 지원합니다. 자세한 구문 및 예는 SQL Reference Guide를 참조하십시오.

Field step expressions
Map-filter step expressions
Array-filter step expressions
Array-slice step expressions
Arithmetic operators
Value comparison operators
Sequence comparison operators
Logical operators AND, OR and NOT
IS NULL and IS NOT NULL operators
IN operator
Regular expression
EXISTS operator
IS OF TYPE operator
CONCAT operator
CAST expression
Row functions

다음 표에서는 여러 표현식 및 결과 익스포트된 데이터에 대한 적합한 질의 술어의 예를 제공합니다.

참고:

테이블 - 샘플 질의 술어

질의/예측 내보낸 데이터
"id=10" ID가 10인 제공된 테이블의 행입니다.
"이름='John'" 이름이 'John'인 제공된 테이블의 행입니다.
"에이지>30 및 성별='남성' age가 30보다 크고 gender가 '남성'인 제공된 테이블의 행입니다.
$row.address.state = 'CA' address JSON 열 = 'CA'에 state 필드가 있는 제공된 테이블의 행입니다. 여기서 술어의 필드 단계 표현식을 사용하여 JSON 필드에서 필수 필드 값에 접근합니다.
"$row.expenses.keys($value > 1000) = 'food' expenses 범주가 'food'이고 expenses 금액이 1000보다 큰 지정된 테이블의 행입니다. 여기서 맵 필터링 단계 표현식을 사용하여 필드 이름(키) 또는 맵/레코드 필드의 필드 값을 선택합니다.
"$row.expenses.keys($value > $.clothes) = 'food' expenses 범주가 'food'이고 expenses 금액이 clothes에 지출한 값보다 큰 경우 지정된 테이블의 행입니다.
"[$row.address.phones[$element.area = 650].kind] = '작업' 배열에서 전화의 지역 번호가 650이고 유형이 '작업'인 지정된 테이블의 행입니다. 여기서 array-filter step expressionaddress 필드가 JSON 배열이므로 사용합니다.
"[연결[$element > 100 및 $pos < 10]] > 100" 최대 10개의 접속과 100개를 초과하는 접속 수를 가진 제공된 테이블의 행입니다. 여기서 array-filter step expressionconnections 필드가 배열이므로 사용합니다.
"$row.income이 NULL임" 알려진 소득이 없는 지정된 테이블의 행입니다. 자세한 내용은 IS NULL 및 IS NOT NULL 연산자를 참조하십시오.
"a in (1, 5, 4)" a가 1, 5 또는 4인 지정된 테이블의 행입니다. 자세한 내용은 IN 연산자를 참조하십시오.
((1, 'a'), (5, 'g'), (4, 't'))의 "(a, b)" 지정된 테이블의 행. 여기서 (a는 1이고 b는 'a') OR(a는 5이고 b는 'g') OR(a는 4이고 b는 't')입니다.
"regex_like(이름, 'j.*')" 이름이 j로 시작하는 지정된 테이블의 행입니다. 자세한 내용은 정규 표현식을 참조하십시오.
"EXISTS $row.person.address.zipcode" person json 열의 주소에 zipcode가 있는 지정된 테이블의 행입니다. 자세한 내용은 Exists Operator를 참조하십시오.
"$row.address가 (문자열) 유형입니다." address 열이 문자열 유형인 제공된 테이블의 행입니다. 자세한 내용은 유형 연산자임을 참조하십시오.
"lastLogin > CAST('2022-10-01' AS TIMESTAMP)" 2022년 10월 1일 이후 마지막 로그인과 함께 제공된 테이블의 행입니다. 자세한 내용은 캐스트 표현식을 참조하십시오.
"$row.connections[ ]=any 1" connections 배열 열에 요소 1이 있는 제공된 테이블의 행입니다. 자세한 내용은 순서 비교 연산자를 참조하십시오.
"modification_time($row) >= 2022-10-01" 지정된 테이블에서 2022년 10월 1일 또는 그 이후에 수정된 행입니다. 자세한 내용은 행에 대한 기능을 참조하십시오.
"expiration_time_millis($row) > 0" 주어진 테이블에서 만료되지 않은 행 자세한 내용은 행에 대한 기능을 참조하십시오.

Oracle NoSQL Database Cloud Service

NoSQL Database Migrator의 소스로 사용되는 Oracle NoSQL Database Cloud Service의 구성 파일 형식은 다음과 같습니다.

소스 구성 템플리트에서 테이블이 상주하는 컴파트먼트의 이름 또는 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>",
  "queryFilter" : "<query predicate>",
  "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>,
  "useSessionToken" : <true|false>,
  "useOKEWorkloadIdentity" : <true|false>,
  "readUnitsPercent" : <table readunits percent>,
  "includeTTL": <true|false>,
  "requestTimeoutMs" : <timeout in milli seconds>
}

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

table(테이블)

compartment(컴파트먼트)

주: useInstancePrincipal 매개변수가 true로 설정된 경우 컴파트먼트는 이름이 아닌 컴파트먼트 OCID를 지정해야 합니다.

readUnitsPercent(읽기 단위 퍼센트)

includeTTL(포함TTL)

queryFilter(질의 필터)

지원되는 표현식

Migrator 유틸리티는 질의 술어에서 다음 표현식을 지원합니다. 자세한 구문 및 예는 SQL Reference Guide를 참조하십시오.

Field step expressions
Map-filter step expressions
Array-filter step expressions
Array-slice step expressions
Arithmetic operators
Value comparison operators
Sequence comparison operators
Logical operators AND, OR and NOT
IS NULL and IS NOT NULL operators
IN operator
Regular expression
EXISTS operator
IS OF TYPE operator
CONCAT operator
CAST expression
Row functions

다음 표에서는 여러 표현식 및 결과 익스포트된 데이터에 대한 적합한 질의 술어의 예를 제공합니다.

참고:

테이블 - 샘플 질의 술어

질의/예측 내보낸 데이터
"id=10" ID가 10인 제공된 테이블의 행
"이름='John'" 이름이 'John'인 제공된 테이블의 행입니다.
"에이지>30 및 성별='남성' age가 30보다 크고 gender가 '남성'인 제공된 테이블의 행입니다.
$row.address.state = 'CA' address JSON 열 = 'CA'에 state 필드가 있는 제공된 테이블의 행입니다. 여기서 술어의 필드 단계 표현식을 사용하여 JSON 필드에서 필수 필드 값에 접근합니다.
"$row.expenses.keys($value > 1000) = 'food' expenses 범주가 'food'이고 expenses 금액이 1000보다 큰 지정된 테이블의 행입니다. 여기서 맵 필터링 단계 표현식을 사용하여 필드 이름(키) 또는 맵/레코드 필드의 필드 값을 선택합니다.
"$row.expenses.keys($value > $.clothes) = 'food' expenses 범주가 'food'이고 expenses 금액이 clothes에 지출한 값보다 큰 경우 지정된 테이블의 행입니다.
"[$row.address.phones[$element.area = 650].kind] = '작업' 배열에서 전화의 지역 번호가 650이고 유형이 '작업'인 지정된 테이블의 행입니다. 여기서 array-filter step expressionaddress 필드가 JSON 배열이므로 사용합니다.
"[연결[$element > 100 및 $pos < 10]] > 100" 최대 10개의 접속과 100개를 초과하는 접속 수를 가진 제공된 테이블의 행입니다. 여기서 array-filter step expressionconnections 필드가 배열이므로 사용합니다.
"$row.income이 NULL임" 알려진 소득이 없는 지정된 테이블의 행입니다. 자세한 내용은 IS NULL 및 IS NOT NULL 연산자를 참조하십시오.
"a in (1, 5, 4)" a가 1, 5 또는 4인 지정된 테이블의 행입니다. 자세한 내용은 IN 연산자를 참조하십시오.
((1, 'a'), (5, 'g'), (4, 't'))의 "(a, b)" 지정된 테이블의 행. 여기서 (a는 1이고 b는 'a') OR(a는 5이고 b는 'g') OR(a는 4이고 b는 't')입니다.
"regex_like(이름, 'j.*')" 이름이 j로 시작하는 지정된 테이블의 행입니다. 자세한 내용은 정규 표현식을 참조하십시오.
"EXISTS $row.person.address.zipcode" person json 열의 주소에 zipcode가 있는 지정된 테이블의 행입니다. 자세한 내용은 Exists Operator를 참조하십시오.
"$row.address가 (문자열) 유형입니다." address 열이 문자열 유형인 제공된 테이블의 행입니다. 자세한 내용은 유형 연산자임을 참조하십시오.
"lastLogin > CAST('2022-10-01' AS TIMESTAMP)" 2022년 10월 1일 이후 마지막 로그인과 함께 제공된 테이블의 행입니다. 자세한 내용은 캐스트 표현식을 참조하십시오.
"$row.connections[ ]=any 1" connections 배열 열에 요소 1이 있는 제공된 테이블의 행입니다. 자세한 내용은 순서 비교 연산자를 참조하십시오.
"modification_time($row) >= 2022-10-01" 지정된 테이블에서 2022년 10월 1일 또는 그 이후에 수정된 행입니다. 자세한 내용은 행에 대한 기능을 참조하십시오.
"expiration_time_millis($row) > 0" 주어진 테이블에서 만료되지 않은 행 자세한 내용은 행에 대한 기능을 참조하십시오.

CSV 파일 출처

NoSQL Database Migrator의 소스로 사용되는 CSV 파일의 구성 파일 형식은 다음과 같습니다. 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>"
 }
}

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

dataPath(데이터 경로)

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

hasHeader

columns(열)

csvOptions(csvOptions)

csvOptions.encoding(csvOptions.encoding)

csvOptions.trim

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

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>,
  "useDelegationToken" : <true|false>,
  "useSessionToken" : <true|false>,
  "useOKEWorkloadIdentity" : <true|false>,
   "hasHeader" : <true | false>,
   "columns" : ["column1", "column2", ....],
   "csvOptions" : {
     "encoding" : "<character set encoding>",
     "trim" : <true | false>
   }
 }

출처 매개변수

공통 구성 매개변수

고유 구성 매개변수

hasHeader

columns(열)

csvOptions(csvOptions)

csvOptions.encoding(csvOptions.encoding)

csvOptions.trim

싱크 구성 템플리트

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

구성 파일 템플리트의 경우 Terminology used with NoSQL Data MigratorConfiguration File을 참조하십시오.

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

항목

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

JSON 파일 싱크

NoSQL Database Migrator 싱크대인 JSON 파일의 구성 파일 형식은 다음과 같습니다.

싱크 구성 템플리트

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

싱크 매개변수

공통 구성 매개변수

고유 구성 매개변수

dataPath(데이터 경로)

schemaPath(스키마 경로)

pretty

useMultiFiles(다중 파일 사용)

Parquet 파일

NoSQL Database Migrator의 싱크대인 Parquet File의 구성 파일 형식은 아래와 같습니다.

싱크 구성 템플리트

"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(데이터 경로)

압축

parquetOptions

parquetOptions.useLogicalJson

parquetOptions.useLogicalEnum

parquetOptions.useLogicalUUID

parquetOptions.truncateDoubleSpecials

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>,
  "useSessionToken" : <true|false>,
  "useOKEWorkloadIdentity" : <true|false>
}

싱크 매개변수

공통 구성 매개변수

고유 구성 매개변수

pretty

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>,
  "useSessionToken" : <true|false>,
  "useOKEWorkloadIdentity" : <true|false>
}

싱크 매개변수

공통 구성 매개변수

고유 구성 매개변수

압축

parquetOptions

parquetOptions.useLogicalJson

parquetOptions.useLogicalEnum

parquetOptions.useLogicalUUID

parquetOptions.truncateDoubleSpecials

Oracle NoSQL Database

NoSQL Database Migrator 싱크대인 Oracle NoSQL Database의 구성 파일 형식은 다음과 같습니다.

싱크 구성 템플리트

"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>
}

싱크 매개변수

공통 구성 매개변수

고유 구성 매개변수

storeName(스토어 이름)

helperHosts(helperHosts)

table(테이블)

includeTTL(포함TTL)

ttlRelativeDate(ttlRelativeDate)

schemainfo(체계 기본 정보)

schemaInfo.schemaPath

schemaInfo.defaultSchema

schemaInfo.useSourceSchema

schemaInfo.DDBPartitionKey(스키마 정보.DDB 분할 영역 키)

schemaInfo.DDBSortKey(스키마 정보.DDBSortKey)

overwrite

Oracle NoSQL Database Cloud Service

NoSQL Database Migrator 싱크대인 Oracle NoSQL Database Cloud Service의 구성 파일 형식은 아래와 같습니다.

싱크 구성 템플리트

"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>,
  "useSessionToken" : <true|false>,
  "useOKEWorkloadIdentity" : <true|false>,
  "writeUnitsPercent" : <table writeunits percent>,
  "requestTimeoutMs" : <timeout in milli seconds>,
  "overwrite" : <true|false>
}

싱크 매개변수

공통 구성 매개변수

고유 구성 매개변수


table(테이블)


compartment(컴파트먼트)


includeTTL(포함TTL)


ttlRelativeDate(ttlRelativeDate)


schemaInfo(스키마 정보)


schemaInfo.schemaPath

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


schemaInfo.defaultSchema


schemaInfo.useSourceSchema


schemaInfo.DDBPartitionKey(스키마 정보.DDB 분할 영역 키)


schemaInfo.DDBSortKey(스키마 정보.DDBSortKey)


schemaInfo.onDemandThroughput

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


schemaInfo.readUnits


schemaInfo.writeUnits


schemaInfo.storageSize(스키마 정보 저장소 크기)


writeUnitsPercent(쓰기 단위 퍼센트)


overwrite

변환 구성 템플리트

이 항목에서는 Oracle NoSQL Database Migrator에서 지원하는 다양한 변환에 대한 구성 매개변수에 대해 설명합니다. 전체 구성 파일 템플리트는 Terminology used with NoSQL Data MigratorConfiguration File을 참조하십시오.

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

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

테이블 - 변형

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

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

필드 무시

ignoreFields 변환에 대한 구성 파일 형식은 다음과 같습니다.

변환 구성 템플리트

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

변환 매개변수

필드 무시

필드 포함

includeFields 변환에 대한 구성 파일 형식은 다음과 같습니다.

변환 구성 템플리트

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

변환 매개변수

필드 포함

필드 이름 바꾸기

renameFields 변환에 대한 구성 파일 형식은 다음과 같습니다.

변환 구성 템플리트

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

변환 매개변수

필드 이름 바꾸기

집계 필드

aggregateFields 변환에 대한 구성 파일 형식은 다음과 같습니다.

변환 구성 템플리트

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

변환 매개변수

집계 필드

Oracle NoSQL 유형에 DynamoDB 유형 매핑

아래 테이블은 DynamoDB 유형과 Oracle NoSQL 유형 간의 매핑을 보여줍니다.

테이블 - DynamoDB 유형을 Oracle NoSQL 유형에 매핑

# 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 기본 키 및 샤드 키
12 정렬 키 NA PRIMARY KEY
13 대시와 점이 있는 속성명 밑줄이 있는 JSON 필드 이름 밑줄이 있는 열 이름

DynamoDB 유형을 Oracle NoSQL 유형에 매핑하는 동안 고려해야 할 추가 사항은 거의 없습니다.

Oracle NoSQL과 Parquet 데이터 유형 매핑

Oracle NoSQL 데이터 유형과 Parquet 데이터 유형의 매핑을 설명합니다.

NoSQL 유형 연회 유형
BOOLEAN BOOLEAN
INTEGER INT32
LONG INT64
FLOAT 이중
이중 이중
이진 이진
고정 이진 이진
STRING 이진(문자열)
열거 이진(문자열)

또는

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

UUID 이진(문자열)

또는

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

TIMESTAMP(p) INT64 (TIMESTAMP (p))
NUMBER 이중
field_name 배열(T)
group field_name(LIST) { repeated group list { required T element } }
field_name MAP(T)
group field_name (MAP) { repeated group key_value (MAP_KEY_VALUE) { required binary key (STRING); required T value; } }
field_name RECORD(K1 T1 N1, K ⁇ 2 T2 N2, ....)

설명:

K = 키 이름

T = 유형

N = Nullable 또는 not

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

또는

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

주: NoSQL 번호 유형이 Parquet Double 유형으로 변환된 경우 값이 Double로 표시될 수 없는 경우 정밀도가 약간 손실될 수 있습니다. 숫자가 너무 커서 Double로 표현할 수 없는 경우 Double.NEGATIVE_INFINITY 또는 Double.POSITIVE_INFINITY로 변환됩니다.

Oracle NoSQL 테이블에 DynamoDB 테이블 매핑

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

DynamoDB는 두 가지 다른 종류의 기본 키를 지원합니다.

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

DynamoDB 테이블을 모델링하는 두 가지 방법이 있습니다.

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

    주: Migrator는 사용자에게 친숙한 구성인 defaultSchema을 제공하여 속성을 JSON 열로 집계하는 스키마 없는 DDL 테이블을 자동으로 생성합니다.

  2. NoSQL 테이블에서 DynamoDB 테이블을 고정 열로 모델링: 이 모델링에서는 DynamoDB 테이블의 각 속성에 대해 DynamoDB 유형을 Oracle NoSQL 유형으로 매핑에 지정된 대로 NoSQL 테이블에 열을 생성합니다. 분할 영역 키를 모델링하고 키 속성을 기본 키로 정렬합니다. 이것은 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 데이터베이스 이전자가 찾을 수 없습니다.

소스의 경우:

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

싱크의 경우:

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

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

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

최적의 방법

데이터 마이그레이션에 걸리는 시간은 마이그레이션 중인 데이터 볼륨, 네트워크 속도, 데이터베이스의 현재 로드와 같은 여러 요인에 따라 달라집니다. 클라우드 서비스의 경우 마이그레이션 속도는 읽기 처리량과 프로비저닝된 쓰기 처리량에 따라 달라집니다. 따라서 마이그레이션 속도를 향상시키기 위해 다음을 수행할 수 있습니다.

Migrator 유틸리티는 기본적으로 여러 스트림을 병렬로 처리하여 더 높은 마이그레이션 속도를 달성하도록 설계되었습니다. 다음 사항은 다양한 마이그레이션 시나리오에 이 기능을 활용하는 방법을 제안합니다.

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

추가 로깅을 사용으로 설정하여 장기 실행 마이그레이션의 진행 상황을 추적할 수 있습니다. Oracle NoSQL Database Migrator의 로깅 동작을 제어하려면 logging.properties 파일에서 원하는 로깅 레벨을 설정해야 합니다. 이 파일은 NoSQL Database Migrator 패키지와 함께 제공되며 Oracle NoSQL Database Migrator가 압축 해제된 디렉토리에서 사용할 수 있습니다. 상세도 증가 순서에 따라 로깅의 다른 레벨은 OFF, SEVERE, WARNING, INFO, FINE,ALL입니다.

로그 레벨을 OFF로 설정하면 모든 로깅 정보가 해제되는 반면, 로그 레벨을 ALL로 설정하면 전체 로그 정보가 제공됩니다.

기본 로그 레벨은 WARNING입니다. 모든 로깅 출력은 기본적으로 콘솔로 이동하도록 구성됩니다.

logging.properties 파일에서 각 로그 레벨에 대한 설명을 볼 수 있습니다.