Oracle NoSQL Database Migrator 참조
Oracle NoSQL Database Migrator에 사용할 수 있는 소스, 싱크 및 변환 구성 템플리트 매개변수에 대해 알아봅니다.
이 문서에는 다음 항목이 포함되어 있습니다.
매개변수
NoSQL Database Migrator에는 이전 작업을 수행하기 위한 모든 매개변수를 정의하는 구성 파일이 필요합니다. 몇 가지 매개변수는 여러 소스와 싱크대에 걸쳐 공통적입니다. 이 항목에서는 이러한 공통 매개변수 목록을 제공합니다. 개별 소스 또는 싱크대에 고유한 기타 매개변수 목록은 해당 구성 템플리트 절을 참조하십시오.
공통 구성 매개변수
다음은 공통 구성 매개변수입니다. 예제는 개별 구성 템플리트 절을 참조하십시오.
-
목적: 소스/싱크 객체를 포함하는 OCI Object Storage 버킷의 이름을 지정합니다.
필요한 버킷이 OCI Object Storage 인스턴스에 존재하며 읽기/쓰기 권한이 있는지 확인하십시오.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
목적: 싱크대에 저장할 테이블 데이터의 최대 크기인
chunk를 지정합니다. 값은 MB 단위입니다. 마이그레이션 중 테이블은chunkSize청크로 분할되고 각 청크는 싱크에 별도의 파일로 기록됩니다. 마이그레이션 중인 소스 데이터가chunkSize값을 초과하면 새 파일이 생성됩니다.지정하지 않을 경우 기본값은 32MB입니다. 적합한 값은 1에서 1024 사이의 정수입니다.
chunkSize매개변수를 사용하여 마이그레이션 속도를 향상시키는 방법에 대한 자세한 내용은 모범 사례를 참조하십시오. -
데이터 유형: integer
-
필수(Y/N): N
-
목적: OCI 인증서를 포함하는 파일의 절대 경로를 지정합니다. NoSQL Database Migrator는 이 파일을 사용하여 Oracle NoSQL Database Cloud Service, OCI Object Storage 등과 같은 OCI 서비스에 연결합니다.
기본값은
$HOME/.oci/config입니다.Example Configuration 또는 자격 증명 파일의 예를 참조하십시오.
주: 인증 옵션 중 하나만 선택할 수 있습니다. 따라서 구성 템플리트에서
credentials, useDelegationToken, useSessionToken 또는 useOKEWorkloadIdentity 매개변수 중 하나만 지정하십시오. -
데이터 유형: 문자열
-
필수(Y/N): N
credentialsProfile(자격 증명 프로파일)
-
목적: Oracle NoSQL Database Cloud Service, OCI Object Storage 등과 같은 OCI 서비스 접속에 사용할 구성 프로파일의 이름을 지정합니다. 사용자 계정 자격 증명을 프로파일이라고 합니다.
이 값을 지정하지 않을 경우 NoSQL Database Migrator는
DEFAULT프로파일을 사용합니다.주: 이 매개변수는 credentials 매개변수가 지정된 경우에만 유효합니다.
-
데이터 유형: 문자열
-
필수(Y/N): N
-
목적: 다음 중 하나를 지정합니다.
-
OCI 오브젝트 스토리지 서비스에 대한 서비스 끝점 URL 또는 지역 ID입니다. OCI 오브젝트 스토리지 서비스 끝점 목록은 오브젝트 스토리지 끝점을 참조하십시오.
-
Oracle NoSQL Database Cloud Service의 서비스 끝점 URL 또는 지역 ID입니다. 전체 URL 또는 영역 ID만 지정할 수 있습니다. Oracle NoSQL Database Cloud Service에 대해 지원되는 데이터 지역 목록은 Oracle NoSQL Database Cloud Service 문서의 데이터 지역 및 관련 서비스 URL을 참조하십시오.
-
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
목적: 소스/싱크 형식을 지정합니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
목적: OCI Object Storage 서비스의 이름 공간을 지정합니다. 이 매개변수는 선택적 매개변수입니다. 이 매개변수를 지정하지 않으면 Migrator 유틸리티는 테넌시에 지정된 네임스페이스를 사용합니다.
예를 들어 네임스페이스 매개변수는 다른 테넌시에서 OCI OS를 사용하려는 경우 유용합니다. 이러한 경우 OCI OS 테넌시의 네임스페이스는 테넌시의 네임스페이스와 다릅니다. 마이그레이션 중에 달리 지정되지 않는 한 Migrator 유틸리티는 기본적으로 테넌시의 네임스페이스로 설정됩니다. 따라서 Migrator 유틸리티가 OCI OS 테넌시의 네임스페이스를 선택하도록 지정하려면 네임스페이스 매개변수에 OCI OS 테넌시의 이름을 지정해야 합니다.
-
데이터 유형: 문자열
-
필수(Y/N): N
-
목적: 접두어는 OCI Object Storage 버킷에 데이터를 저장하기 위한 논리적 컨테이너 또는 디렉토리 역할을 합니다.
-
소스 구성 템플리트:
prefix매개변수가 지정된 경우prefix매개변수에 이름이 지정된 디렉토리의 모든 객체가 이전됩니다. 그렇지 않으면 버킷에 있는 모든 객체가 마이그레이션됩니다. -
싱크 구성 템플리트:
prefix매개변수가 지정된 경우 지정된 접두어를 가진 디렉토리가 버킷에 생성되고 객체가 이 디렉토리로 이전됩니다. 그렇지 않으면 소스의 테이블 이름이 접두어로 사용됩니다. 동일한 이름의 오브젝트가 버킷에 이미 있으면 덮어씁니다.
접두어에 대한 자세한 내용은 접두어 및 계층을 사용하여 객체 이름 지정을 참조하십시오.
-
-
데이터 유형: 문자열
-
필수(Y/N): N
-
목적: 저장소에서/까지 각 읽기/쓰기 작업이 완료될 때까지 대기할 시간을 지정합니다. 이 값은 밀리초 단위로 제공됩니다. 기본값은 5000입니다. 값은 모든 양의 정수가 될 수 있습니다.
-
데이터 유형: integer
-
필수(Y/N): N
-
목적: 저장소가 보안 저장소인 경우 저장소 인증서를 포함하는 보안 로그인 파일에 대한 절대 경로를 지정합니다. 보안 로그인 파일에 대한 자세한 내용은 보안 Oracle NoSQL Database 설치 수행을 참조하십시오.
Password file 기반 인증 또는 전자 지갑 기반 인증을 사용할 수 있습니다. 그러나 전자 지갑 기반 인증은 Oracle NoSQL Database의 EE(Enterprise Edition)에서만 지원됩니다. 전자 지갑 기반 인증에 대한 자세한 내용은 Source and Sink Security를 참조하십시오.
Community Edition(CE) 에디션은 암호 파일 기반 인증만 지원합니다.
-
데이터 유형: 문자열
-
필수(Y/N): 보안 저장소의 경우 Y
-
목적: 소스/싱크 유형을 식별합니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
목적: NoSQL Database Migrator 툴이 위임 토큰 인증을 사용하여 OCI 서비스에 접속할지 여부를 지정합니다. 위임 토큰 인증을 사용하여 Cloud Shell에서 마이그레이션자 유틸리티를 실행해야 합니다. Cloud Shell이 호출될 때 사용자에 대한 위임 토큰이 자동으로 생성됩니다.
기본값은
false입니다.다음 사항에 유의하십시오.
-
위임 토큰이 있는 인증은 NoSQL Database Migrator 툴이 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
-
인증 옵션 중 하나만 선택할 수 있습니다. 따라서 구성 템플리트에서 credentials, useInstancePrincipal,
useDelegationToken, useSessionToken 또는 useOKEWorkloadIdentity 매개변수 중 하나만 지정하십시오. -
Cloud Shell은 다음 소스와 싱크 간에만 이전을 지원합니다.
유형 적합한 소스 유효한 싱크 Oracle NoSQL Database Cloud Service( nosqldb_cloud)Y Y 파일(홈 디렉토리의 JSON 파일) Y Y OCI Object Storage(JSON 파일)( object_storage_oci)Y Y OCI Object Storage(Parquet 파일)( object_storage_oci)N Y
-
-
데이터 유형: 부울
-
필수(Y/N): N
-
목적: NoSQL Database Migrator 툴이 인스턴스 주체 인증을 사용하여 Oracle NoSQL Database Cloud Service, OCI Object Storage 등과 같은 OCI 서비스에 접속할지 여부를 지정합니다. 인스턴스 주체 인증 방법에 대한 자세한 내용은 Source and Sink Security를 참조하십시오.
기본값은
false입니다.참고:
-
Instance Principals를 사용한 인증은 NoSQL Database Migrator 툴이 OCI 컴퓨트 인스턴스 내에서 실행되는 경우에만 지원됩니다(예: OCI에서 호스트되는 VM에서 실행되는 NoSQL Database Migrator 툴).
-
인증 옵션 중 하나만 선택할 수 있습니다. 따라서 구성 템플리트에서 credentials,
useInstancePrincipal, useDelegationToken, useSessionToken 또는 useOKEWorkloadIdentity 매개변수 중 하나만 지정하십시오.
-
-
데이터 유형: 부울
-
필수(Y/N): N
-
목적: NoSQL Database Migrator 툴이 워크로드 ID 인증(WIA)을 사용하여 Oracle Kubernetes Engine(OKE) POD에서 OCI Object Storage 및 Oracle NoSQL Database Cloud Service에 액세스할지 여부를 지정합니다.
기본값은
false입니다. -
데이터 유형: 부울
-
필수(Y/N): N
샘플 사용 사례는 OKE 인증을 사용하여 OCI Object Storage에서 Oracle NoSQL Database Cloud Service로 마이그레이션하기를 참조하십시오.
주: 인증 옵션 중 하나만 선택할 수 있습니다. 따라서 구성 템플리트에서 credentials, useInstancePrincipal, useDelegationToken, useSessionToken 또는 useOKEWorkloadIdentity 매개변수 중 하나만 지정하십시오.
useSessionToken(useSessionToken)
-
목적: NoSQL Database Migrator 툴이 세션 토큰 인증을 사용하여 OCI Object Storage(OCI OS) 및 Oracle NoSQL Database Cloud Service와 같은 OCI 서비스에 접속할지 여부를 지정합니다. 기본값은
false입니다. -
데이터 유형: 부울
-
필수(Y/N): N
세션 토큰 기반 인증을 사용하려면 OCI CLI(명령행 인터페이스) 명령을 사용하여 세션 토큰을 생성해야 합니다. 샘플 사용 사례는 세션 토큰 인증을 사용하여 Oracle NoSQL Database에서 OCI Object Storage로 마이그레이션하기를 참조하십시오.
참고:
-
세션 토큰 인증을 사용하는 동안 credentials 매개변수에서 OCI 구성 파일의 경로와 credentialsProfile 매개변수에서 세션 토큰을 생성하는 동안 사용된 프로파일을 지정해야 합니다. 구성 템플리트에서 인증서 매개변수를 설정하지 않으면 Migrator 유틸리티가
$HOME/.oci경로에서 인증서 파일을 찾습니다. 구성 템플리트에서 credentialsProfile 매개변수를 설정하지 않은 경우 Migrator 유틸리티는 OCI 구성 파일의 기본 프로파일 이름(DEFAULT)을 사용합니다.Migrator 유틸리티가 인증서 파일을 찾을 수 없는 경우 OCI 인증서 파일이 존재하지 않음을 전달하는 오류 메시지와 함께 이전이 실패합니다.
-
인증 옵션 중 하나만 선택할 수 있습니다. 따라서 구성 템플리트에서 credentials, useInstancePrincipal, useDelegationToken,
useSessionToken또는 useOKEWorkloadIdentity 매개변수 중 하나만 지정하십시오.
소스 구성 템플리트
적합한 각 소스의 소스 구성 파일 형식 및 각 구성 매개변수의 용도에 대해 알아봅니다.
구성 파일 템플리트의 경우 Terminology used with NoSQL Data Migrator의 Configuration File을 참조하십시오.
각 소스의 유효한 싱크 형식에 대한 자세한 내용은 Sink Configuration Templates를 참조하십시오.
항목
다음 항목에서는 제공된 소스의 데이터를 적합한 싱크로 복사하기 위해 Oracle NoSQL Database Migrator에서 참조하는 소스 구성 템플리트에 대해 설명합니다.
-
JSON 데이터를 포함하는 지정된 파일 또는 디렉토리입니다.
-
OCI 오브젝트 스토리지 버킷에 지정된 JSON 파일입니다.
-
MongoDB 형식의 JSON 데이터를 포함하는 지정된 파일 또는 디렉토리입니다.
-
OCI 오브젝트 스토리지 버킷의 MongoDB 형식 JSON 파일
OCI 오브젝트 스토리지 버킷에 저장된 지정된 MongoDB 익스포트된 JSON 파일입니다.
-
AWS S3에 저장된 DynamoDB 형식 JSON 파일
지정된 DynamoDB가 AWS S3 스토리지에 저장된 JSON 파일을 익스포트했습니다.
-
지정된 DynamoDB가 파일 시스템에서 JSON 파일을 익스포트했습니다.
-
Oracle NoSQL Database의 지정된 테이블입니다.
-
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service의 지정된 테이블입니다.
-
CSV 데이터를 포함하는 지정된 파일 또는 디렉토리입니다.
-
OCI 오브젝트 스토리지 버킷에 지정된 CSV 파일입니다.
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>"
}
},
출처 매개변수
공통 구성 매개변수
고유 구성 매개변수
-
목적: 마이그레이션할 JSON 데이터를 포함하는 파일 또는 디렉토리의 절대 경로를 지정합니다.
이 데이터가 싱크대에 정의된 NoSQL 테이블 스키마와 일치하는지 확인해야 합니다. 디렉토리를 지정하는 경우 NoSQL Database Migrator는 마이그레이션을 위해 해당 디렉토리에서 확장자가
.json인 모든 파일을 식별합니다. 하위 디렉토리는 지원되지 않습니다. -
데이터 유형: 문자열
-
필수(Y/N): Y
-
예제:
-
JSON 파일 지정
"dataPath" : "/home/user/sample.json" -
디렉터리 지정
"dataPath" : "/home/user"
-
-
목적: 마이그레이션할 소스 데이터의 스키마를 지정합니다. 이 스키마는 NoSQL 싱크로 전달됩니다.
-
데이터 유형: 객체
-
필수(Y/N): N
-
목적: 마이그레이션 중인 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-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 소스 유형에 적합한 싱크 유형은 nosqldb 및 nosqldb_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>
}
출처 매개변수
공통 구성 매개변수
-
"type" : "object_storage_oci"사용 -
"format" : "json"사용 -
예:
-
지역 ID:
"endpoint" : "us-ashburn-1" -
URL 형식:
"endpoint" : "https://objectstorage.us-ashburn- 1.oraclecloud.com"
-
-
예:
"namespace" : "my-namespace" -
예:
"bucket" : "my-bucket" -
예:
-
"prefix" : "my_table/Data/000000.json"(000000.json만 마이그레이션) -
"prefix" : "my_table/Data"(접두어가my_table/Data인 모든 객체 이전)
-
-
예:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
예:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
예:
"useInstancePrincipal" : true -
예:
"useDelegationToken" : true주: 위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
-
예:
"useOKEWorkloadIdentity" : true -
예:
"useSessionToken" : true
고유 구성 매개변수
-
목적: 마이그레이션할 소스 데이터의 스키마를 지정합니다. 이 스키마는 NoSQL 싱크로 전달됩니다.
-
데이터 유형: 객체
-
필수(Y/N): N
-
목적: 마이그레이션되는 데이터에 대한 NoSQL 테이블 스키마 정의가 저장되는 버킷의 객체 이름을 지정합니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
예제:
"schemaInfo": { "schemaObject": "mytable/Schema/schema.ddl" },
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>"
}
}
출처 매개변수
공통 구성 매개변수
고유 구성 매개변수
-
목적: 마이그레이션을 위해 MongoDB에서 익스포트한 JSON 데이터를 포함하는 파일 또는 디렉토리의 절대 경로를 지정합니다.
mongoexport 도구를 사용하여 생성된 MongoDB 형식 JSON 파일을 제공할 수 있습니다.
디렉토리를 지정하는 경우 NoSQL Database Migrator는 마이그레이션을 위해 해당 디렉토리에서 확장자가
.json인 모든 파일을 식별합니다. 하위 디렉토리는 지원되지 않습니다. 이 데이터가 싱크대에 정의된 NoSQL 테이블 스키마와 일치하는지 확인해야 합니다. -
데이터 유형: 문자열
-
필수(Y/N): Y
-
예제:
-
MongoDB 형식의 JSON 파일 지정
"dataPath" : "/home/user/sample.json" -
디렉터리 지정
"dataPath" : "/home/user"
-
-
목적: 마이그레이션할 소스 데이터의 스키마를 지정합니다. 이 스키마는 적합한 싱크로 전달됩니다.
-
데이터 유형: 객체
-
필수(Y/N): N
-
목적: 마이그레이션 중인 NoSQL 테이블에 대한 DDL 문을 포함하는 스키마 정의 파일의 절대 경로를 지정합니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
예제:
"schemaInfo" : { "schemaPath" : "/home/user/mytable/Schema/schema.ddl" }
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 소스 유형에 적합한 싱크 유형은 nosqldb 및 nosqldb_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>
}
출처 매개변수
공통 구성 매개변수
-
"type" : "object_storage_oci"사용 -
"format" : "mongodb_json"사용 -
예:
-
지역 ID:
"endpoint" : "us-ashburn-1" -
URL 형식:
"endpoint" : "https://objectstorage.us-ashburn- 1.oraclecloud.com"
-
-
예:
"namespace" : "my-namespace" -
예:
"bucket" : "my-bucket" -
예:
-
"prefix" : "mongo_export/Data/table.json"(table.json만 마이그레이션) -
"prefix" : "mongo_export/Data"(접두어가mongo_export/Data인 모든 객체 이전)
주: 값을 제공하지 않으면 버킷에 있는 모든 객체가 이전됩니다.
-
-
예:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
예:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
예:
"useInstancePrincipal" : true -
예:
"useDelegationToken" : true주: 위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
-
예:
"useOKEWorkloadIdentity" : true -
예:
"useSessionToken" : true
고유 구성 매개변수
-
목적: 마이그레이션할 소스 데이터의 스키마를 지정합니다. 이 스키마는 NoSQL 싱크로 전달됩니다.
-
데이터 유형: 객체
-
필수(Y/N): N
-
목적: 마이그레이션되는 데이터에 대한 NoSQL 테이블 스키마 정의가 저장되는 버킷의 객체 이름을 지정합니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
예제:
"schemaInfo": { "schemaObject": "mytable/Schema/schema.ddl" }
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에 적합한 싱크 유형은 nosqldb 및 nosqldb_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>"
}
출처 매개변수
공통 구성 매개변수
-
"type" : "aws_s3"사용 -
"format" : "dynamodb_json"사용주: 유형 매개변수의 값이
aws_s3인 경우 형식은dynamodb_json여야 합니다.
고유 구성 매개변수
-
목적: 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 데이터베이스 이전자는 인증서 정보를 기록하지 않습니다. 자격 증명 파일을 무단 액세스로부터 적절히 보호해야 합니다.
credentialsProfile(자격 증명 프로파일)
- 목적: AWS S에 연결하는 데 사용할 AWS 자격 증명 파일의 프로파일 이름
- 사용자 계정 자격 증명을 프로파일이라고 합니다. 이 값을 지정하지 않으면 NoSQL Database Migrator는
default프로파일을 사용합니다. 자격 증명 파일에 대한 자세한 내용은 구성 및 자격 증명 파일 설정을 참조하십시오.
- 사용자 계정 자격 증명을 프로파일이라고 합니다. 이 값을 지정하지 않으면 NoSQL Database Migrator는
-
데이터 유형: 문자열
-
필수(Y/N): N
-
예제:
"credentialsProfile" : "default""credentialsProfile" : "test"
ttlAttributeName(ttlAttributeName)
-
목적: 익스포트된 DynamoDB 테이블 데이터에 있는 TTL 속성의 이름을 지정합니다. 이 매개변수는 DynamoDB 테이블 데이터에 TTL 속성이 있고 NoSQL 데이터베이스로 임포트하는 동안 임포트된 데이터에 TTL 값을 설정하려는 경우에만 포함합니다.
주: TTL 메타데이터로 임포트하려면 싱크 구성 템플리트(
nosqldb및nosqldb_cloud)에서 includeTTL 구성 매개변수를 true로 설정해야 합니다. -
데이터 유형: 문자열
-
필수(Y/N): N
-
예:
"ttlAttributeName" : "ttl"
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 파일의 유효한 싱크 유형은 nosqldb 및 nosqldb_cloud입니다.
소스 구성 템플리트
"source" : {
"type" : "file",
"format" : "dynamodb_json",
"ttlAttributeName" : <DynamoDB exported TTL attribute name>,
"dataPath" : "<path/to/[file|dir]/containing/exported/DDB/tabledata>"
}
출처 매개변수
공통 구성 매개변수
고유 구성 매개변수
-
목적: 익스포트된 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"
-
ttlAttributeName(ttlAttributeName)
-
목적: 익스포트된 DynamoDB 테이블 데이터에 있는 TTL 속성의 이름을 지정합니다. 이 매개변수는 DynamoDB 테이블 데이터에 TTL 속성이 있고 NoSQL 데이터베이스로 임포트하는 동안 임포트된 데이터에 TTL 값을 설정하려는 경우에만 포함합니다.
주: TTL 메타데이터로 임포트하려면 싱크 구성 템플리트(
nosqldb및nosqldb_cloud)에서 includeTTL 구성 매개변수를 true로 설정해야 합니다. -
데이터 유형: 문자열
-
필수(Y/N): N
-
예:
"ttlAttributeName" : "ttl"
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
}
출처 매개변수
공통 구성 매개변수
-
"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=TLSv 1.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" : 5000
고유 구성 매개변수
-
목적: Oracle NoSQL Database 저장소의 이름입니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
예:
"storeName" : "kvstore"
-
목적:
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"를 지정하려면
-
-
목적: Oracle NoSQL Database 테이블을 익스포트할 때 테이블 행에 대한 TTL 메타데이터를 포함할지 여부를 지정합니다. true로 설정된 경우 행에 대한 TTL 데이터도 소스에서 제공한 데이터에 포함됩니다. TTL은 각 행과 연관된
_metadataJSON 객체에 있습니다. 각 행의 만료 시간은 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
-
목적: Migrator 유틸리티가 제공된 조건과 일치하는 행만 익스포트하는 데 사용하는 질의 술어를 지정합니다.
Migrator 유틸리티는 이 술어를 SQL 질의의 WHERE 절에 통합합니다. 이 질의는 지정된 조건에 따라 데이터를 필터링하기 위해 소스 테이블에 적용됩니다. 소스 테이블을 지정하려면 소스 구성 템플리트에서
table매개변수를 사용합니다.예를 들어,
id값이 10인 행만 익스포트하려면queryFilter매개변수를"id=10"로 설정합니다. Migrator 유틸리티는 다음 질의를 생성합니다.select $row from <table> $row where id=10이 질의에서 Migrator 유틸리티는 테이블 별칭
$row을 사용하여 개별 행을 처리합니다.다음 사항에 유의하십시오.
-
queryFilter를 사용하여 특정 열을 선택할 수 없습니다. 변환을 제공하여 열을 필터링할 수 있습니다. -
queryFilter매개변수에 대한 값을 제공하지 않을 경우 Migrator 유틸리티는 다음 질의를 사용하여 테이블에서 모든 행을 익스포트합니다.select $row from $row
-
-
데이터 유형: JSON 문자열
-
필수(Y/N): N
-
예:
"queryFilter" : "$row.address.city='Houston'"추가 예는 아래의 샘플 질의 술어 테이블을 참조하십시오.
지원되는 표현식
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
다음 표에서는 여러 표현식 및 결과 익스포트된 데이터에 대한 적합한 질의 술어의 예를 제공합니다.
참고:
-
질의 술어에 문자열 리터럴을 제공하는 동안 큰따옴표(") 대신 작은따옴표(')를 사용하는 것이 좋습니다. 큰 따옴표(")를 사용하려면 이스케이프해야 합니다.
예: 질의 술어
"name='John'"를 사용하여 제공된 테이블에서 행을 선택합니다. 여기서name필드의 값은 'John' 문자열입니다. -
다음과 같은 경우 표현식에 테이블 별칭
$row을 포함해야 합니다.-
modification_time(), expiration_time(), creation_time()등의 행 함수 사용 자세한 내용은 행에 대한 기능을 참조하십시오. -
JSON 열 내의 특정 필드에 액세스합니다.
-
테이블 - 샘플 질의 술어
| 질의/예측 | 내보낸 데이터 |
|---|---|
| "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 expression을 address 필드가 JSON 배열이므로 사용합니다. |
| "[연결[$element > 100 및 $pos < 10]] > 100" | 최대 10개의 접속과 100개를 초과하는 접속 수를 가진 제공된 테이블의 행입니다. 여기서 array-filter step expression은 connections 필드가 배열이므로 사용합니다. |
| "$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>
}
출처 매개변수
공통 구성 매개변수
-
"type" : "nosqldb_cloud"사용 -
예:
-
지역 ID:
"endpoint" : "us-ashburn-1" -
URL 형식:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
예:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
예:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
예:
"useInstancePrincipal" : true -
예:
"useDelegationToken" : true주: 위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
-
예:
"useOKEWorkloadIdentity" : true -
예:
"useSessionToken" : true -
예:
"requestTimeoutMs" : 5000
고유 구성 매개변수
-
목적: 데이터를 이전할 테이블의 이름입니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
예제:
-
"table" : "myTable"테이블을 지정하려면 -
하위 테이블
"table" : "mytable.child"를 지정하려면
-
-
목적: 테이블이 상주하는 구획의 이름 또는 OCID를 지정합니다.
값을 제공하지 않으면 기본적으로 root 구획으로 설정됩니다.
컴파트먼트의 OCID는 OCI Cloud 콘솔의 거버넌스 아래의 컴파트먼트 탐색기 창에서 찾을 수 있습니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y - 테이블이 테넌시의 루트 컴파트먼트에 없거나 useInstancePrincipal 매개변수가 true로 설정된 경우
주: useInstancePrincipal 매개변수가 true로 설정된 경우 컴파트먼트는 이름이 아닌 컴파트먼트 OCID를 지정해야 합니다.
-
예제:
-
컴파트먼트 이름
"compartment" : "mycompartment" -
컴파트먼트 이름이 상위 컴파트먼트로 한정됩니다.
"compartment" : "parent.childcompartment" -
값이 제공되지 않았습니다. 기본값은 루트 컴파트먼트입니다.
"compartment": "" -
컴파트먼트 OCID
"compartment" : "ocid 1.tenancy.oc1...4ksd"
-
-
목적: NoSQL 테이블을 이전하는 동안 사용할 테이블 읽기 단위의 백분율입니다.
기본값은 90입니다. 적합한 범위는 1에서 100 사이의 정수입니다. 데이터 마이그레이션에 필요한 시간은 이 속성에 직접 비례합니다. 이전 작업에 대한 테이블의 읽기 처리량을 늘리는 것이 좋습니다. 마이그레이션 프로세스가 완료된 후 읽기 처리량을 줄일 수 있습니다.
처리량 변경에 대한 일일 한도를 알아보려면 Oracle NoSQL Database Cloud Service 문서의 클라우드 한도를 참조하십시오.
이 속성을 사용하여 데이터 이전 속도를 향상시키는 방법은 Troubleshooting the Oracle NoSQL Database Migrator을 참조하십시오.
-
데이터 유형: integer
-
필수(Y/N): N
-
예:
"readUnitsPercent" : 90
-
목적: Oracle NoSQL Database Cloud Service 테이블을 익스포트할 때 테이블 행에 대한 TTL 메타데이터를 포함할지 여부를 지정합니다. true로 설정된 경우 행에 대한 TTL 데이터도 소스에서 제공한 데이터에 포함됩니다. TTL은 각 행과 연관된
_metadataJSON 객체에 있습니다. 각 행의 만료 시간은 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
-
목적: Migrator 유틸리티가 제공된 조건과 일치하는 행만 익스포트하는 데 사용하는 질의 술어를 지정합니다.
Migrator 유틸리티는 이 술어를 SQL 질의의 WHERE 절에 통합합니다. 이 질의는 지정된 조건에 따라 데이터를 필터링하기 위해 소스 테이블에 적용됩니다. 소스 테이블을 지정하려면 소스 구성 템플리트에서
table매개변수를 사용합니다.예를 들어,
id값이 10인 행만 익스포트하려면queryFilter매개변수를"id=10"로 설정합니다. Migrator 유틸리티는 다음 질의를 생성합니다.select $row from <table> $row where id=10위 질의에서 Migrator 유틸리티는 테이블 별칭
$row을 사용하여 개별 행을 처리합니다.다음 사항에 유의하십시오.
-
queryFilter를 사용하여 특정 열을 선택할 수 없습니다. 변환을 제공하여 열을 필터링할 수 있습니다. -
queryFilter매개변수에 대한 값을 제공하지 않을 경우 Migrator 유틸리티는 다음 질의를 사용하여 테이블에서 모든 행을 익스포트합니다.select $row from $row`
-
-
데이터 유형: JSON 문자열
-
필수(Y/N): N
-
예:
"queryFilter" : "$row.address.city='Houston'"추가 예는 아래의 샘플 질의 술어 테이블을 참조하십시오.
지원되는 표현식
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
다음 표에서는 여러 표현식 및 결과 익스포트된 데이터에 대한 적합한 질의 술어의 예를 제공합니다.
참고:
-
질의 술어에 문자열 리터럴을 제공하는 동안 큰따옴표(") 대신 작은따옴표(')를 사용하는 것이 좋습니다. 큰 따옴표(")를 사용하려면 이스케이프해야 합니다.
예: 질의 술어
"name='John'"를 사용하여 제공된 테이블에서 행을 선택합니다. 여기서name필드의 값은 'John' 문자열입니다. -
다음과 같은 경우 표현식에 테이블 별칭
$row을 포함해야 합니다.modification_time(), expiration_time(), creation_time()등의 행 함수 사용 자세한 내용은 행에 대한 기능을 참조하십시오.- JSON 열 내의 특정 필드에 액세스합니다.
테이블 - 샘플 질의 술어
| 질의/예측 | 내보낸 데이터 |
|---|---|
| "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 expression을 address 필드가 JSON 배열이므로 사용합니다. |
| "[연결[$element > 100 및 $pos < 10]] > 100" | 최대 10개의 접속과 100개를 초과하는 접속 수를 가진 제공된 테이블의 행입니다. 여기서 array-filter step expression은 connections 필드가 배열이므로 사용합니다. |
| "$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>"
}
}
출처 매개변수
공통 구성 매개변수
고유 구성 매개변수
-
목적: 마이그레이션할 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 Database Migrator 툴은 RFC4180 형식을 준수하는 CSV 데이터 임포트를 지원합니다. RFC4180 표준을 준수하지 않는 데이터가 포함된 CSV 파일이 올바르게 복사되지 않거나 오류가 발생할 수 있습니다. 입력 데이터가 손상된 경우 NoSQL Database Migrator 툴에서 CSV 레코드의 구문을 분석하지 않습니다. 마이그레이션 중에 오류가 발생하면 NoSQL Database Migrator 툴은 디버깅 및 정보 제공을 위해 실패한 입력 레코드에 대한 정보를 기록합니다. 자세한 내용은 Oracle NoSQL Data Migrator 사용의 Logging Migrator Progress를 참조하십시오.
-
목적: 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"]
-
목적: CSV 파일의 형식 지정 옵션을 지정합니다. CSV 파일의 문자 집합 인코딩 형식을 제공하고 공백을 자를지 여부를 선택합니다.
-
데이터 유형: 객체
-
필수(Y/N): N
csvOptions.encoding(csvOptions.encoding)
-
목적: CSV 파일을 디코딩할 문자 집합을 지정합니다. 기본값은
UTF-8입니다. 지원되는 문자 집합은US-ASCII, ISO-8859-1, UTF-8,및UTF-16입니다. -
데이터 유형: 문자열
-
필수(Y/N): N
-
예:
"encoding" : "UTF-8"
-
목적: CSV 필드 값의 선행 및 후행 공백을 잘라야 하는지 여부를 지정합니다. 기본값은
false입니다. -
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"trim" : "true"
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 소스 유형에 적합한 싱크 유형은 nosqldb 및 nosqldb_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>
}
}
출처 매개변수
공통 구성 매개변수
-
"type" : "object_storage_oci"사용 -
"format" : "csv"사용 -
endpoint 예:
-
지역 ID:
"endpoint" : "us-ashburn-1" -
URL 형식:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
예:
"namespace" : "my-namespace" -
예:
"bucket" : "my-bucket"참고:
-
NoSQL Database Migrator는 확장자가 .
csv또는.CSV인 모든 파일을 객체 방향으로 임포트하고 동일한 순서로 단일 테이블에 복사합니다. -
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를 참조하십시오.
-
-
예:
-
"prefix" : "my_table/Data/000000.csv"(000000.csv만 마이그레이션) -
"prefix" : "my_table/Data"(접두어가my_table/Data인 모든 객체 이전)
-
-
예:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
예:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
예:
"useInstancePrincipal" : true -
예:
"useDelegationToken" : true주: 위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
-
예:
"useOKEWorkloadIdentity" : true -
예:
"useSessionToken" : true
고유 구성 매개변수
-
목적: 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"]
-
목적: CSV 파일의 형식 지정 옵션을 지정합니다. CSV 파일의 문자 집합 인코딩 형식을 제공하고 공백을 자를지 여부를 선택합니다.
-
데이터 유형: 객체
-
필수(Y/N): N
csvOptions.encoding(csvOptions.encoding)
-
목적: CSV 파일을 디코딩할 문자 집합을 지정합니다. 기본값은
UTF-8입니다. 지원되는 문자 집합은US-ASCII, ISO-8859-1, UTF-8,및UTF-16입니다. -
데이터 유형: 문자열
-
필수(Y/N): N
-
예:
"encoding" : "UTF-8"
-
목적: CSV 필드 값의 선행 및 후행 공백을 잘라야 하는지 여부를 지정합니다. 기본값은
false입니다. -
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"trim" : "true"
싱크 구성 템플리트
유효한 각 싱크대의 싱크 구성 파일 형식과 각 구성 매개변수의 용도에 대해 알아봅니다.
구성 파일 템플리트의 경우 Terminology used with NoSQL Data Migrator의 Configuration File을 참조하십시오.
각 싱크의 유효한 소스 형식에 대한 자세한 내용은 Source Configuration Templates를 참조하십시오.
항목
다음 항목에서는 적합한 소스에서 제공된 싱크로 데이터를 복사하기 위해 Oracle NoSQL Database Migrator에서 참조하는 싱크 구성 템플리트에 대해 설명합니다.
-
지정된 JSON 파일입니다.
-
지정된 디렉토리의 Parquet 파일입니다.
-
지정된 OCI 오브젝트 스토리지 버킷의 JSON 파일입니다.
-
지정된 OCI 오브젝트 스토리지 버킷의 Parquet 파일입니다.
-
Oracle NoSQL Database의 지정된 테이블입니다.
-
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service의 지정된 테이블입니다.
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>
}
싱크 매개변수
공통 구성 매개변수
-
"type" : "file"사용 -
"format" : "json"사용 -
예:
"chunkSize" : 40주: 이 매개변수는 useMultiFiles 매개변수가 true로 설정된 경우에만 적용할 수 있습니다.
고유 구성 매개변수
-
목적: NoSQL Database Migrator가 소스 데이터를 JSON 형식으로 복사하는 디렉토리의 경로를 지정합니다.
NoSQL Database Migrator는 지정된 디렉토리에 JSON 파일을 생성합니다. 파일이 존재하는 경우 NoSQL Database Migrator는 해당 콘텐츠를 소스 데이터로 덮어씁니다.
디렉토리가 존재하고 읽기 및 쓰기 권한이 있는지 확인하십시오.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
예:
"dataPath" : "/home/user/data"마이그레이션이 성공하면 다음 샘플에 표시된 대로 dataPath 매개변수에 지정된 디렉토리에 익스포트된 파일이 포함됩니다.
|--<Table_name>_1_5.json |--<Table_name>_6_10.json ...
-
목적: 소스에서 제공한 테이블 스키마 정보를 기록할 파일의 절대 경로를 지정합니다.
이 값이 정의되지 않은 경우 소스 스키마 정보가 싱크로 마이그레이션되지 않습니다. 이 값을 지정하면 migrator 유틸리티가 소스 테이블의 스키마를 여기에 지정된 파일에 씁니다.
스키마 정보는 이 파일의 행당 하나의 DDL 명령으로 기록됩니다. 파일이 지정된 데이터 경로에 없으면 NoSQL Database Migrator가 파일을 생성합니다. 이미 존재하는 경우 NoSQL Database Migrator는 해당 내용을 소스 데이터로 덮어씁니다. 데이터 경로의 상위 디렉토리가 지정된 파일에 대해 적합한지 확인해야 합니다.
-
데이터 유형: 문자열
-
필수(Y/N): N
-
예:
"schemaPath" : "/home/user/schema_file"
-
목적: 가독성을 높이기 위해 JSON 출력을 다듬을지 여부를 지정합니다.
지정하지 않을 경우 기본적으로 false로 설정됩니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"pretty" : true
-
목적: 익스포트된 파일(dataPath 매개변수에 지정된 디렉토리 아래에 생성됨)을 NoSQL 데이터베이스 테이블 데이터를 디렉토리로 이전하는 동안 특정 크기의 여러 하위 파일로 추가로 분할할지 여부를 지정합니다. useMultiFiles 파라미터의 기본값은 true입니다.
NoSQL Database Migrator는 데이터를 익스포트하는 동안 NoSQL Database 테이블 데이터를 여러 파일로 분할합니다. useMultiFiles 매개변수가 true로 설정된 경우 익스포트된 각 파일이 chunkSize 매개변수에 지정된 크기의 하위 파일로 추가로 분할됩니다.
예제: 마이그레이션이 성공하면 다음 샘플에 표시된 대로 dataPath 매개변수에 지정된 디렉토리에 익스포트된 파일이 포함됩니다.
|--<Table_name>_1_5_0.json |--<Table_name>_1_5_1.json |--<Table_name>_6_10_0.json |--<Table_name>_6_10_1.json |--<Table_name>_6_10_2.json ... -
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"useMultiFiles" : true
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>
}
}
싱크 매개변수
공통 구성 매개변수
고유 구성 매개변수
-
목적: 이전된 NoSQL 테이블 데이터를 저장할 디렉토리의 경로를 지정합니다. 디렉토리가 존재하고 읽기 및 쓰기 권한이 있는지 확인하십시오.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
예:
"dataPath" : "/home/user/migrator/my_table"
-
목적: Parquet 데이터를 압축하는 데 사용할 압축 유형을 지정합니다. 유효한 값은 SNAPPY, GZIP 및 NONE입니다.
지정하지 않을 경우 기본적으로 SNAPPY로 설정됩니다.
-
데이터 유형: 문자열
-
필수(Y/N): N
-
예:
"compression" : "GZIP"
-
목적: NoSQL ENUM, JSON 및 UUID 열에 대해 Parquet 논리적 유형을 선택하는 옵션을 지정합니다.
이 매개변수를 지정하지 않으면 NoSQL Database Migrator는 ENUM, JSON 및 UUID 열의 데이터를 String으로 씁니다.
-
데이터 유형: 객체
-
필수(Y/N): N
-
목적: NoSQL JSON 열 데이터를 Parquet 논리적 JSON 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.
지정되지 않았거나 false로 설정된 경우 NoSQL Database Migrator는 NoSQL JSON 열 데이터를 String으로 씁니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"useLogicalJson" : true
-
목적: NoSQL ENUM 열 데이터를 Parquet 논리적 ENUM 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.
지정되지 않았거나 false로 설정된 경우 NoSQL Database Migrator는 NoSQL ENUM 열 데이터를 String으로 씁니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"useLogicalEnum" : true
-
목적: NoSQL UUID 열 데이터를 Parquet 논리적 UUID 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.
지정되지 않았거나 false로 설정된 경우 NoSQL Database Migrator는 NoSQL UUID 열 데이터를 String으로 씁니다.
-
데이터 유형: 부울
-
필수(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의 유효한 소스 유형은 nosqldb 및 nosqldb_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>
}
싱크 매개변수
공통 구성 매개변수
-
"type" : "object_storage_oci"사용 -
"format" : "json"사용 -
예:
-
지역 ID:
"endpoint" : "us-ashburn-1" -
URL 형식:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
예:
"namespace" : "my-namespace" -
예:
"bucket" : "my-bucket" -
스키마가
<prefix>/Schema/schema.ddl파일로 이전되고 소스 데이터가<prefix>/Data/<chunk>.json파일로 이전됩니다. 여기서 chunk=000000.json, 000001.json 등입니다.예:
-
"prefix" : "my_export" -
"prefix" : "my_export/2021-04-05/"
-
-
예:
"chunkSize" : 40 -
예:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
- credentialsProfile 예:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
예:
"useInstancePrincipal" : true -
예:
"useDelegationToken" : true주: 위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
-
예:
"useOKEWorkloadIdentity" : true -
예:
"useSessionToken" : true
고유 구성 매개변수
pretty
-
목적: 가독성을 높이기 위해 JSON 출력을 다듬을지 여부를 지정합니다.
지정하지 않을 경우 기본적으로 false로 설정됩니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"pretty" : true
OCI 오브젝트 스토리지 버킷의 Parquet 파일
NoSQL Database Migrator의 싱크대로서 OCI Object Storage 버킷의 Parquet 파일에 대한 구성 파일 형식은 다음과 같습니다.
참고: OCI Object Storage 소스 유형에 적합한 소스 유형은 nosqldb 및 nosqldb_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>
}
싱크 매개변수
공통 구성 매개변수
-
"type" : "object_storage_oci"사용 -
"format" : "parquet"사용 -
예:
-
지역 ID:
"endpoint" : "us-ashburn-1" -
URL 형식:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
예:
"namespace" : "my-namespace" -
예:
"bucket" : "my-bucket" -
소스 데이터는
<prefix>/Data/<chunk>.parquet파일로 마이그레이션됩니다. 여기서 chunk=000000.parquet, 000001.parquet 등입니다.예:
-
"prefix" : "my_export" -
"prefix" : "my_export/2021-04-05/"
-
-
예:
"chunkSize" : 40 -
예:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
예:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
예:
"useInstancePrincipal" : true -
예:
"useDelegationToken" : true주: 위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
-
예:
"useOKEWorkloadIdentity" : true -
예:
"useSessionToken" : true
고유 구성 매개변수
-
목적: Parquet 데이터를 압축하는 데 사용할 압축 유형을 지정합니다. 유효한 값은 SNAPPY, GZIP 및 NONE입니다.
지정하지 않을 경우 기본적으로 SNAPPY로 설정됩니다.
-
데이터 유형: 문자열
-
필수(Y/N): N
-
예:
"compression" : "GZIP"
-
목적: NoSQL ENUM, JSON 및 UUID 열에 대해 Parquet 논리적 유형을 선택하는 옵션을 지정합니다.
이 매개변수를 지정하지 않으면 NoSQL Database Migrator는 ENUM, JSON 및 UUID 열의 데이터를 String으로 씁니다.
-
데이터 유형: 객체
-
필수(Y/N): N
-
목적: NoSQL JSON 열 데이터를 Parquet 논리적 JSON 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.
지정되지 않았거나 false로 설정된 경우 NoSQL Database Migrator는 NoSQL JSON 열 데이터를 String으로 씁니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"useLogicalJson" : true
-
목적: NoSQL ENUM 열 데이터를 Parquet 논리적 ENUM 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.
지정되지 않았거나 false로 설정된 경우 NoSQL Database Migrator는 NoSQL ENUM 열 데이터를 String으로 씁니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"useLogicalEnum" : true
-
목적: NoSQL UUID 열 데이터를 Parquet 논리적 UUID 유형으로 쓸지 여부를 지정합니다. 자세한 내용은 Parquet Logical Type Definitions를 참조하십시오.
지정되지 않았거나 false로 설정된 경우 NoSQL Database Migrator는 NoSQL UUID 열 데이터를 String으로 씁니다.
-
데이터 유형: 부울
-
필수(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
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>
}
싱크 매개변수
공통 구성 매개변수
-
"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" : 5000
고유 구성 매개변수
-
목적: Oracle NoSQL Database 저장소의 이름입니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y
-
예:
"storeName" : "kvstore"
-
목적:
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는 각 실행마다 하나의 테이블만 복사합니다. 상위 테이블이 하위 테이블보다 먼저 이전되는지 확인합니다.
-
-
목적: Oracle NoSQL Database 테이블을 임포트할 때 소스가 제공하는 테이블 행에 대한 TTL 메타데이터를 포함할지 여부를 지정합니다.
이 매개변수를 지정하지 않을 경우 기본값은
false입니다. 이 경우 NoSQL Database Migrator는 Oracle NoSQL Database 테이블을 임포트할 때 소스가 제공하는 테이블 행에 대한 TTL 메타데이터를 포함하지 않습니다.True로 설정된 경우 NoSQL Database Migrator 툴은 테이블 행을 임포트할 때 TTL 메타데이터에 대해 다음 검사를 수행합니다.
-
_metadata정의가 없는 행을 임포트하는 경우 NoSQL Database Migrator 툴은 TTL을 0으로 설정합니다. 즉, 행이 만료되지 않습니다. -
_metadata정의가 있는 행을 임포트하는 경우 NoSQL Database Migrator 툴은 행을 임포트할 때 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(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일 테이블에 문제가 발생하여 데이터를 임포트하도록 결정합니다. 테이블 행이 하루 내에 만료됩니다(데이터 만료 날짜에서 현재 날짜인
ttlRelativedate구성 매개변수의 기본값을 뺀 값). 그러나 테이블 행의 만료 날짜를 하루가 아닌 5일로 연장하려면ttlRelativeDate매개변수를 사용하고 이전 날짜를 선택합니다. 따라서 이 시나리오에서는 테이블 행의 만료 시간을 5일 연장하려는 경우ttlRelativeDate구성 매개변수 값을 2021년 1월 3일로 설정합니다. 이 값은 테이블 행이 임포트될 때 참조 시간으로 사용됩니다.
-
목적: 마이그레이션할 데이터의 스키마를 지정합니다. 이 옵션을 지정하지 않으면 NoSQL Database Migrator는 테이블이 싱크 저장소에 이미 있다고 가정합니다.
-
데이터 유형: 객체
-
필수(Y/N): N
-
목적: NoSQL 테이블에 대한 DDL 문을 포함하는 파일의 절대 경로를 지정합니다.
NoSQL Database Migrator는 데이터를 이전하기 전에 이 파일에 나열된 DDL 명령을 실행합니다.
NoSQL Database Migrator는
schemaPath파일에서 행당 두 개 이상의 DDL 문을 지원하지 않습니다. -
데이터 유형: 문자열
-
필수(Y/N): N
주:
defaultSchema및schemaPath는 함께 사용할 수 없습니다. -
예:
"schemaPath" : "/home/user/schema_file"
-
목적: 이 매개변수를 true로 설정하면 NoSQL Database Migrator가 기본 스키마로 테이블을 생성하도록 지시합니다. 기본 스키마는 마이그레이션자 자체에 의해 정의됩니다. 기본 스키마 정의에 대한 자세한 내용은 Oracle NoSQL Data Migrator 사용의 기본 스키마를 참조하십시오.
-
데이터 유형: 부울
-
필수(Y/N): N
주:
defaultSchema및schemaPath는 함께 사용할 수 없습니다.
-
목적: NoSQL 테이블을 이전할 때 소스가 제공한 테이블 스키마 정의를 싱크에서 사용할지 여부를 지정합니다.
-
데이터 유형: 부울
-
필수(Y/N): N
주: defaultSchema, schemaPath 및 useSourceSchema 매개변수는 함께 사용할 수 없습니다. 이러한 매개변수 중 하나만 지정하십시오.
-
예제:
-
기본 스키마 사용:
"schemaInfo" : { "defaultSchema" : true } -
미리 정의된 스키마 사용:
"schemaInfo" : { "schemaPath" : "<complete/path/to/the/schema/definition/file>" } -
소스 스키마 사용:
"schemaInfo" : { "useSourceSchema" : true }
-
schemaInfo.DDBPartitionKey(스키마 정보.DDB 분할 영역 키)
-
목적: 싱크 Oracle NoSQL Database 테이블에 사용할 DynamoDB 분할 영역 키 및 해당 Oracle NoSQL Database 유형을 지정합니다. 이 키는 NoSQL DB 테이블 샤드 키로 사용됩니다. 이는
defaultSchema가 true로 설정되고 소스 형식이dynamodb_json인 경우에만 적용할 수 있습니다. 자세한 내용은 Oracle NoSQL 유형에 DynamoDB 유형 매핑을 참조하십시오. -
필수(Y/N):
defaultSchema가 true이고 소스가dynamodb_json인 경우 Y입니다. -
예:
"DDBPartitionKey" : "PersonID:INTEGER"주: 분할 영역 키에 대시(-) 또는 점(.)이 포함된 경우 NoSQL 열 이름은 점 및 대시를 지원하지 않으므로 이전자는 이를 밑줄(_)로 바꿉니다.
schemaInfo.DDBSortKey(스키마 정보.DDBSortKey)
-
목적: 대상 Oracle NoSQL Database 테이블에 사용할 DynamoDB 정렬 키 및 해당 Oracle NoSQL Database 유형을 지정합니다. 임포트하는 DynamoDB 테이블에 정렬 키가 없는 경우 이 속성을 설정하면 안 됩니다. 이 키는 NoSQL DB 테이블에서 기본 키의 샤드 없는 부분으로 사용됩니다. 이는
defaultSchema가 true로 설정되고 소스가dynamodb_json인 경우에만 적용됩니다. 자세한 내용은 Oracle NoSQL 유형에 DynamoDB 유형 매핑을 참조하십시오. -
필수(Y/N): N
-
예:
"DDBSortKey" : "Skey:STRING"주: 정렬 키에 대시(-) 또는 점(.)이 포함된 경우 NoSQL 열 이름은 점 및 대시를 지원하지 않으므로 Migrator는 이를 밑줄(_)로 바꿉니다.
-
목적: 소스에서 마이그레이션 중인 레코드가 이미 싱크대에 있을 때 NoSQL Database Migrator의 동작을 나타냅니다.
값이 false로 설정된 경우 테이블을 마이그레이션할 때 NoSQL Database Migrator는 동일한 기본 키가 이미 싱크대에 있는 레코드를 건너뜁니다.
값이 True로 설정된 경우 테이블을 마이그레이션할 때 NoSQL Database Migrator는 동일한 기본 키가 이미 싱크대에 있는 레코드를 덮어씁니다.
지정하지 않을 경우 기본적으로 true로 설정됩니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"overwrite" : false
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>
}
싱크 매개변수
공통 구성 매개변수
-
"type" : "nosqldb_cloud"사용 -
예:
-
지역 ID:
"endpoint" : "us-ashburn-1" -
URL 형식:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
예:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
예:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
예:
"useInstancePrincipal" : true -
예:
"useDelegationToken" : true주: 위임 토큰을 사용하는 인증은 NoSQL Database Migrator가 Cloud Shell에서 실행 중인 경우에만 지원됩니다.
-
예:
"useOKEWorkloadIdentity" : true -
예:
"useSessionToken" : true -
예:
"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 구획으로 설정됩니다.
컴파트먼트의 OCID는 OCI Cloud 콘솔의 거버넌스 아래의 컴파트먼트 탐색기 창에서 찾을 수 있습니다.
-
데이터 유형: 문자열
-
필수(Y/N): Y - 테이블이 테넌시의 루트 컴파트먼트에 없거나 useInstancePrincipal 매개변수가 true로 설정된 경우
주: useInstancePrincipal 매개변수가 true로 설정된 경우 컴파트먼트는 이름이 아닌 컴파트먼트 OCID를 지정해야 합니다.
-
예제:
-
컴파트먼트 이름
"compartment" : "mycompartment" -
컴파트먼트 이름이 상위 컴파트먼트로 한정됩니다.
"compartment" : "parent.childcompartment" -
값이 제공되지 않았습니다. 기본값은 루트 컴파트먼트입니다.
"compartment": "" -
컴파트먼트 OCID
"compartment" : "ocid1.tenancy.oc1...4ksd"
-
-
목적: Oracle NoSQL Database 테이블을 임포트할 때 소스가 제공하는 테이블 행에 대한 TTL 메타데이터를 포함할지 여부를 지정합니다.
이 매개변수를 지정하지 않을 경우 기본값은
false입니다. 이 경우 NoSQL Database Migrator는 Oracle NoSQL Database 테이블을 임포트할 때 소스가 제공하는 테이블 행에 대한 TTL 메타데이터를 포함하지 않습니다.True로 설정된 경우 NoSQL Database Migrator 툴은 테이블 행을 임포트할 때 TTL 메타데이터에 대해 다음 검사를 수행합니다.
-
_metadata정의가 없는 행을 임포트하는 경우 NoSQL Database Migrator 툴은 TTL을 0으로 설정합니다. 즉, 행이 만료되지 않습니다. -
_metadata정의가 있는 행을 임포트하는 경우 NoSQL Database Migrator 툴은 행을 임포트할 때 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(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일 테이블에 문제가 발생하여 데이터를 임포트하도록 결정합니다. 테이블 행이 하루 내에 만료됩니다(데이터 만료 날짜에서 현재 날짜인
ttlRelativedate구성 매개변수의 기본값을 뺀 값). 그러나 테이블 행의 만료 날짜를 하루가 아닌 5일로 연장하려면ttlRelativeDate매개변수를 사용하고 이전 날짜를 선택합니다. 따라서 이 시나리오에서는 테이블 행의 만료 시간을 5일 연장하려는 경우ttlRelativeDate구성 매개변수 값을 2021년 1월 3일로 설정합니다. 이 값은 테이블 행이 임포트될 때 참조 시간으로 사용됩니다.
-
목적: 마이그레이션할 데이터의 스키마를 지정합니다.
이 매개변수를 지정하지 않으면 NoSQL Database Migrator는 테이블이 Oracle NoSQL Database Cloud Service에 이미 있다고 가정합니다.
이 매개변수를 지정하지 않고 테이블이 싱크대에 없으면 마이그레이션이 실패합니다.
-
데이터 유형: 객체
-
필수(Y/N): N
-
목적: NoSQL 테이블에 대한 DDL 문을 포함하는 파일의 절대 경로를 지정합니다.
NoSQL Database Migrator는 데이터를 이전하기 전에 이 파일에 나열된 DDL 명령을 실행합니다.
NoSQL Database Migrator는
schemaPath파일에서 행당 두 개 이상의 DDL 문을 지원하지 않습니다. -
데이터 유형: 문자열
-
필수(Y/N): N
주: defaultSchema 및 schemaPath는 함께 사용할 수 없습니다.
- 예:
"schemaPath" : "/home/user/schema_file"
-
목적: 이 매개변수를 예로 설정하면 NoSQL Database Migrator가 기본 스키마로 테이블을 생성하도록 지시합니다. 기본 스키마는 마이그레이션자 자체에 의해 정의됩니다. 기본 스키마 정의에 대한 자세한 내용은 Oracle NoSQL Data Migrator 사용의 기본 스키마를 참조하십시오.
-
데이터 유형: 부울
-
필수(Y/N): N
주:
defaultSchema및schemaPath는 함께 사용할 수 없습니다.
-
목적: NoSQL 테이블을 이전할 때 소스가 제공한 테이블 스키마 정의를 싱크에서 사용할지 여부를 지정합니다.
-
데이터 유형: 부울
-
필수(Y/N): N
주: defaultSchema, schemaPath 및 useSourceSchema 매개변수는 함께 사용할 수 없습니다. 이러한 매개변수 중 하나만 지정하십시오.
-
예제:
-
기본 스키마 사용:
"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(스키마 정보.DDB 분할 영역 키)
-
목적: 싱크 Oracle NoSQL Database 테이블에 사용할 DynamoDB 분할 영역 키 및 해당 Oracle NoSQL Database 유형을 지정합니다. 이 키는 NoSQL DB 테이블 샤드 키로 사용됩니다. 이는
defaultSchema가 true로 설정되고 소스 형식이dynamodb_json인 경우에만 적용할 수 있습니다. 자세한 내용은 Oracle NoSQL 유형에 DynamoDB 유형 매핑을 참조하십시오. -
필수(Y/N):
defaultSchema가 true이고 소스가dynamodb_json인 경우 Y입니다. -
예:
"DDBPartitionKey" : "PersonID:INTEGER"주: 분할 영역 키에 대시(-) 또는 점(.)이 포함된 경우 NoSQL 열 이름은 점 및 대시를 지원하지 않으므로 이전자는 이를 밑줄(_)로 바꿉니다.
schemaInfo.DDBSortKey(스키마 정보.DDBSortKey)
-
목적: 대상 Oracle NoSQL Database 테이블에 사용할 DynamoDB 정렬 키 및 해당 Oracle NoSQL Database 유형을 지정합니다. 임포트하는 DynamoDB 테이블에 정렬 키가 없는 경우 이 속성을 설정하면 안 됩니다. 이 키는 NoSQL DB 테이블에서 기본 키의 샤드 없는 부분으로 사용됩니다. 이는
defaultSchema가 true로 설정되고 소스가dynamodb_json인 경우에만 적용됩니다. 자세한 내용은 Oracle NoSQL 유형에 DynamoDB 유형 매핑을 참조하십시오. -
필수(Y/N): N
-
예:
"DDBSortKey" : "Skey:STRING"주: 정렬 키에 대시(-) 또는 점(.)이 포함된 경우 NoSQL 열 이름은 점 및 대시를 지원하지 않으므로 Migrator는 이를 밑줄(_)로 바꿉니다.
-
목적: 요청 시 읽기 및 쓰기 처리량이 있는 테이블을 생성하도록 지정합니다. 이 매개변수를 설정하지 않으면 프로비저닝된 용량으로 테이블이 생성됩니다.
기본값은
false입니다.
주: 이 매개변수는 최상위 레벨 상위 테이블의 처리량을 공유하므로 하위 테이블에 적용할 수 없습니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"onDemandThroughput" : "true"
-
목적: 새 테이블의 읽기 처리량을 지정합니다.
div class="infoboxnote" 마크다운="1">
참고:
-
이 매개변수는 온디맨드 용량으로 프로비전된 테이블에 적용할 수 없습니다.
-
하위 테이블은 최상위 레벨 상위 테이블의 읽기 처리량을 공유하므로 이 매개변수를 적용할 수 없습니다.
</div>
-
-
데이터 유형: integer
-
필수(Y/N): Y - 테이블이 하위 테이블이 아니거나 schemaInfo.onDemandThroughput 매개변수가
false로 설정된 경우 N입니다. -
예:
"readUnits" : 100
-
목적: 새 테이블의 쓰기 처리량을 지정합니다.
참고:
- 이 매개변수는 온디맨드 용량으로 프로비전된 테이블에 적용할 수 없습니다.
- 이 매개변수는 최상위 레벨 상위 테이블의 쓰기 처리량을 공유하므로 하위 테이블에 적용할 수 없습니다.
-
데이터 유형: integer
-
필수(Y/N): Y - 테이블이 하위 테이블이 아니거나 schemaInfo.onDemandThroughput 매개변수가
false로 설정된 경우 N입니다. -
예:
"writeUnits" : 100
schemaInfo.storageSize(스키마 정보 저장소 크기)
-
목적: 새 테이블의 저장 영역 크기(GB)를 지정합니다.
주: 이 매개변수는 최상위 레벨 상위 테이블의 저장 영역 크기를 공유하므로 하위 테이블에 적용할 수 없습니다.
-
데이터 유형: integer
-
필수(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 }
-
-
목적: 마이그레이션 작업 중 사용할 테이블 쓰기 단위의 백분율을 지정합니다. 데이터 마이그레이션에 필요한 시간은 이 속성에 직접 비례합니다.
기본값은 90입니다. 적합한 범위는 1에서 100 사이의 정수입니다.
이 속성을 사용하여 데이터 이전 속도를 향상시키는 방법은 Troubleshooting the Oracle NoSQL Database Migrator을 참조하십시오.
-
데이터 유형: integer
-
필수(Y/N): N
-
예:
"writeUnitsPercent" : 90
-
목적: 소스에서 마이그레이션 중인 레코드가 이미 싱크대에 있을 때 NoSQL Database Migrator의 동작을 나타냅니다.
값이 false로 설정된 경우 테이블을 마이그레이션할 때 NoSQL Database Migrator는 동일한 기본 키가 이미 싱크대에 있는 레코드를 건너뜁니다.
값이 True로 설정된 경우 테이블을 마이그레이션할 때 NoSQL Database Migrator는 동일한 기본 키가 이미 싱크대에 있는 레코드를 덮어씁니다.
지정하지 않을 경우 기본적으로 true로 설정됩니다.
-
데이터 유형: 부울
-
필수(Y/N): N
-
예:
"overwrite" : false
변환 구성 템플리트
이 항목에서는 Oracle NoSQL Database Migrator에서 지원하는 다양한 변환에 대한 구성 매개변수에 대해 설명합니다. 전체 구성 파일 템플리트는 Terminology used with NoSQL Data Migrator의 Configuration File을 참조하십시오.
Oracle NoSQL Database Migrator를 사용하면 데이터를 수정할 수 있습니다. 즉, 마이그레이션 작업의 일부로 데이터 변환을 추가할 수 있습니다. 단일 마이그레이션에서 다중 변환을 정의할 수 있습니다. 이러한 경우 소스 데이터가 지정된 순서대로 각 변형을 거치므로 변형 순서는 매우 중요합니다. 한 변환의 출력은 마이그레이션기 파이프라인의 다음 변환에 대한 입력이 됩니다.
NoSQL Data Migrator에서 지원하는 다양한 변환은 다음과 같습니다.
테이블 - 변형
| 변환 구성 속성 | 이 변환을 사용하여 다음을 수행할 수 있습니다. |
|---|---|
ignoreFields |
싱크에 쓰기 전에 소스 행에서 식별된 열을 무시합니다. |
includeFields |
싱크에 쓰기 전에 소스 행에서 식별된 열을 포함시킵니다. |
renameFields |
싱크에 쓰기 전에 식별된 열의 이름을 소스 행에서 바꿉니다. |
aggregateFields |
소스의 여러 열을 싱크의 단일 열로 집계합니다. 이 변형의 일부로 집계에서 제외할 열을 식별할 수도 있습니다. 이러한 필드는 집계된 열에서 건너뜁니다. |
아래에서 지원되는 각 변환에 대한 구성 템플리트를 찾을 수 있습니다.
필드 무시
ignoreFields 변환에 대한 구성 파일 형식은 다음과 같습니다.
변환 구성 템플리트
"transforms" : {
"ignoreFields" : ["<field1>","<field2>",...]
}
변환 매개변수
필드 무시
-
목적: 소스 레코드에서 무시할 열 이름 배열입니다.
참고: 최상위 레벨 필드만 제공할 수 있습니다. 중첩된 필드의 데이터에 변환을 적용할 수 없습니다.
-
데이터 유형: 문자열 배열
-
필수(Y/N): Y
-
예: 소스 레코드에서 "name" 및 "address"라는 열을 무시하려면 다음과 같이 하십시오.
"ignoreFields" : ["name","address"]
필드 포함
includeFields 변환에 대한 구성 파일 형식은 다음과 같습니다.
변환 구성 템플리트
"transforms" : {
"includeFields" : ["<field1>","<field2>",...]
}
변환 매개변수
필드 포함
-
목적: 소스 레코드에서 포함할 열 이름의 배열입니다. 배열에 지정된 필드만 포함되고 나머지 필드는 무시됩니다.
주: 빈 배열을 지정하면 NoSQL Database Migrator 툴에서 오류가 발생합니다. 또한 최상위 레벨 필드만 지정할 수 있습니다. NoSQL Database Migrator 툴은 중첩된 필드의 데이터에 변환을 적용하지 않습니다.
-
데이터 유형: 문자열 배열
-
필수(Y/N): Y
-
예: 출처 레코드에서 "age" 및 "gender"라는 열을 포함하려면 다음과 같이 하십시오.
"includeFields" : ["age","gender"]
필드 이름 바꾸기
renameFields 변환에 대한 구성 파일 형식은 다음과 같습니다.
변환 구성 템플리트
"transforms" : {
"renameFields" : {
"<old_name>" : "<new_name>",
"<old_name>" : "<new_name>,"
.....
}
}
변환 매개변수
필드 이름 바꾸기
-
목적: 이름을 바꿀 열의 이전 이름과 새 이름의 키-값 쌍입니다.
참고: 최상위 레벨 필드만 제공할 수 있습니다. 중첩된 필드의 데이터에 변환을 적용할 수 없습니다.
-
데이터 유형: JSON 객체
-
필수(Y/N): Y
-
예: 이름이 "residence"인 열의 이름을 "address"로 바꾸고 이름이 "_id"인 열의 이름을 "id"로 바꿉니다.
"renameFields" : { "residence" : "address", "_id" : "id" }
집계 필드
aggregateFields 변환에 대한 구성 파일 형식은 다음과 같습니다.
변환 구성 템플리트
"transforms" : {
"aggregateFields" : {
"fieldName" : "name of the new aggregate field",
"skipFields" : ["<field1>","<field2">,...]
}
}
변환 매개변수
집계 필드
-
목적: 싱크의 통합 필드 이름입니다.
-
데이터 유형: 문자열
-
필수(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 유형 간의 매핑을 보여줍니다.
테이블 - 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 유형에 매핑하는 동안 고려해야 할 추가 사항은 거의 없습니다.
-
DynamoDB는 숫자에 대해 하나의 데이터 유형만 지원하며 최대 38자리의 정밀도를 가질 수 있습니다. 반면 Oracle NoSQL은 데이터의 범위 및 정밀도에 따라 선택할 수 있는 여러 유형을 지원합니다. 입력 데이터 범위에 맞는 적절한 숫자 유형을 선택할 수 있습니다. 데이터의 특성을 잘 모를 경우 NoSQL NUMBER 유형을 사용할 수 있습니다.
-
DynamoDB는 숫자에 대해 하나의 데이터 유형만 지원하며 최대 38자리의 정밀도를 가질 수 있습니다. 반면 Oracle NoSQL은 데이터의 범위 및 정밀도에 따라 선택할 수 있는 여러 유형을 지원합니다. 입력 데이터 범위에 맞는 적절한 숫자 유형을 선택할 수 있습니다. 데이터의 특성을 잘 모를 경우 NoSQL NUMBER 유형을 사용할 수 있습니다.
-
DynamoDB의 파티션 키는 2048바이트로 제한되지만 Oracle NoSQL Cloud Service는 기본 키/샤드 키에 대해 64바이트로 제한됩니다.
-
DynamoDB의 정렬 키는 1024바이트로 제한되지만 Oracle NoSQL Cloud Service는 기본 키에 대해 64바이트로 제한됩니다.
-
DynamoDB의 속성 이름은 64KB일 수 있지만 Oracle NoSQL Cloud Service 열 이름은 64자로 제한됩니다.
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) | |
| field_name MAP(T) | |
| field_name RECORD(K1 T1 N1, K ⁇ 2 T2 N2, ....) 설명: K = 키 이름 T = 유형 N = Nullable 또는 not |
|
| JSON | 이진(문자열) 또는 논리적 JSON이 구성된 경우 BINARY(JSON) |
주: NoSQL 번호 유형이 Parquet Double 유형으로 변환된 경우 값이 Double로 표시될 수 없는 경우 정밀도가 약간 손실될 수 있습니다. 숫자가 너무 커서 Double로 표현할 수 없는 경우 Double.NEGATIVE_INFINITY 또는 Double.POSITIVE_INFINITY로 변환됩니다.
Oracle NoSQL 테이블에 DynamoDB 테이블 매핑
DynamoDB에서 테이블은 항목 모음이며 각 항목은 속성 모음입니다. 테이블의 각 항목에는 고유 식별자 또는 기본 키가 있습니다. Primary Key 외에 테이블은 스키마가 없습니다. 각 항목은 고유한 속성을 가질 수 있습니다.
DynamoDB는 두 가지 다른 종류의 기본 키를 지원합니다.
-
분할 영역 키: 분할 영역 키라는 하나의 속성으로 구성된 단순 기본 키입니다. DynamoDB는 파티션 키의 값을 내부 해시 함수에 대한 입력으로 사용합니다. 해시 함수의 출력은 항목이 저장될 분할 영역을 결정합니다.
-
분할 영역 키 및 정렬 키: 조합 기본 키로서 이 유형의 키는 두 개의 속성으로 구성됩니다. 첫번째 속성은 분할 영역 키이고 두번째 속성은 정렬 키입니다. DynamoDB는 분할 영역 키 값을 내부 해시 함수에 대한 입력으로 사용합니다. 해시 함수의 출력은 항목이 저장될 분할 영역을 결정합니다. 동일한 분할 영역 키 값을 가진 모든 항목은 정렬 키 값을 기준으로 정렬된 순서로 함께 저장됩니다.
반면 Oracle NoSQL 테이블은 스키마 및 스키마리스 설계 모두에서 유연한 데이터 모델을 지원합니다.
DynamoDB 테이블을 모델링하는 두 가지 방법이 있습니다.
-
JSON 문서로 DynamoDB 테이블 모델링(권장): 이 모델링에서는 분할 영역 키 및 정렬 키를 제외한 Dynamo DB 테이블의 모든 속성을 NoSQL 테이블의 JSON 열에 매핑합니다. Partition Key 및 Sort Key를 NoSQL 테이블의 Primary Key 열로 모델링합니다. 비기본 키 데이터를 JSON 열로 집계하기 위해
AggregateFields변환을 사용합니다.주: Migrator는 사용자에게 친숙한 구성인
defaultSchema을 제공하여 속성을 JSON 열로 집계하는 스키마 없는 DDL 테이블을 자동으로 생성합니다. -
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 데이터베이스와의 연결을 설정할수 없습니다. |
|
Failed to connect to Oracle NoSQL Database Cloud Service |
이전기가 Oracle NoSQL Database Cloud Service와의 연결을 설정할 수 없습니다. |
|
Table not found |
이전을 위해 식별된 테이블을 NoSQL 데이터베이스 이전자가 찾을 수 없습니다. | 소스의 경우:
싱크의 경우:
|
DDL Execution failed |
입력 스키마 정의 파일에 제공된 DDL 명령이 부적합합니다. |
|
failed to write record to the sink table with java.lang.IllegalArgumentException |
입력 레코드가 싱크의 테이블 스키마와 일치하지 않습니다. |
|
Request timeout |
소스 또는 싱크의 작업이 예상 시간 내에 완료되지 않았습니다. |
|
실패한 마이그레이션을 다시 시작하기 전에 고려해야 할 사항은 무엇입니까?
데이터 마이그레이션 작업이 실패하면 싱크는 실패 지점까지 가져온 데이터를 포함하는 중간 상태가 됩니다. 로그에서 오류 및 실패 세부정보를 식별하고 오류를 진단하고 수정한 후 마이그레이션을 다시 시작할 수 있습니다. 재시작된 이전은 처음부터 모든 데이터를 처리하면서 다시 시작됩니다. 실패 지점에서 이전을 체크포인트하고 재시작할 수 있는 방법은 없습니다. 따라서 NoSQL Database Migrator는 이미 싱크로 마이그레이션된 레코드를 덮어씁니다.
데이터 마이그레이션에 걸리는 시간은 마이그레이션 중인 데이터 볼륨, 네트워크 속도, 데이터베이스의 현재 로드와 같은 여러 요인에 따라 달라집니다. 클라우드 서비스의 경우 마이그레이션 속도는 읽기 처리량과 프로비저닝된 쓰기 처리량에 따라 달라집니다. 따라서 마이그레이션 속도를 향상시키기 위해 다음을 수행할 수 있습니다.
-
데이터베이스에 대한 로드가 적을 때 오프 시간 동안 마이그레이션을 실행하는 것이 좋습니다.
-
NoSQL Database Migrator가 실행될 VM을 할당하고, 데이터 소스를 정의하고, 네트워크 대기 시간을 최소화하기 위해 동일한 OCI 지역에서 데이터 싱크를 정의하는 것이 좋습니다.
-
Oracle NoSQL Database Cloud Service의 경우 테이블에 할당된 스토리지가 충분한지 확인하십시오. NoSQL Database Migrator가 테이블을 생성하지 않을 경우 쓰기 처리량을 늘릴 수 있습니다. 마이그레이션기가 테이블을 만드는 경우 싱크 구성에서
schemaInfo.writeUnits매개변수에 대해 더 높은 값을 지정하는 것이 좋습니다. 데이터 마이그레이션이 완료되면 이 값을 낮출 수 있습니다.주: 처리량 또는 저장 영역 제한을 늘릴 수 있는 횟수에는 제한이 없습니다. 24시간 동안 처리량 또는 스토리지 제한을 최대 4배까지 줄일 수 있습니다. 클라우드 제한 및 싱크 구성 템플리트를 참조하십시오.
Migrator 유틸리티는 기본적으로 여러 스트림을 병렬로 처리하여 더 높은 마이그레이션 속도를 달성하도록 설계되었습니다. 다음 사항은 다양한 마이그레이션 시나리오에 이 기능을 활용하는 방법을 제안합니다.
-
Oracle NoSQL Database Cloud Service/온프레미스 테이블에서 파일 시스템/오브젝트 스토리지 싱크로 마이그레이션:
Migrator 구성에서 useMultiFiles 및 chunkSize 매개변수를 설정합니다.
useMultiFiles매개변수는 싱크대에 여러 개의 파일/객체를 만듭니다.chunkSize매개변수는 데이터 익스포트 중 각 파일의 크기를 결정합니다.예를 들어, 2GB 데이터를 엑스포트하려면
useMultiFiles파라미터를 true로,chunkSize파라미터를 40MB로 설정하면 Migrator 유틸리티가 각각 40MB의 50개 파일을 작성합니다.주: Migrator 유틸리티는 현재 100개의 스트림을 병렬로 처리할 수 있습니다. 따라서 Migrator 유틸리티가 데이터 익스포트 중 최대 100개의 파일을 생성하도록
chunkSize매개변수를 최적 파일 크기 값으로 설정합니다. -
파일 시스템/오브젝트 스토리지에서 Oracle NoSQL Database Cloud Service/온프레미스 싱크로 마이그레이션:
-
파일 시스템/오브젝트 스토리지가 이전 마이그레이션에서 여러 파일/오브젝트가 포함된 데이터를 내보낸 경우 Migrator 유틸리티는 자동으로 파일을 병렬로 처리하여 데이터를 가져오는 동안 더 높은 마이그레이션 속도를 달성합니다.
-
다른 외부 파일 시스템/오브젝트 스토리지의 데이터를 마이그레이션하는 경우 데이터를 데이터 소스의 여러 파일/다중 객체로 분할해 보십시오.
참고:
-
Oracle NoSQL Database Cloud Service 싱크의 경우 마이그레이션 작업 중 최대 100개의 스트림을 처리할 수 있는 충분한 쓰기 처리량 및 테이블 쓰기 단위 백분율을 구성해야 합니다.
-
소스 파일이 100개 이상인 경우 Migrator 유틸리티는 최대 100개의 스트림을 만들고 데이터 가져오기 중에 해당 스트림 간에 파일을 배포합니다. 각 스트림의 파일은 순차적으로 마이그레이션됩니다.
-
-
대규모 데이터세트를 포함하는 장기 실행 마이그레이션이 있습니다. 마이그레이션 진행 상황을 추적하려면 어떻게 해야 합니까?
추가 로깅을 사용으로 설정하여 장기 실행 마이그레이션의 진행 상황을 추적할 수 있습니다. Oracle NoSQL Database Migrator의 로깅 동작을 제어하려면 logging.properties 파일에서 원하는 로깅 레벨을 설정해야 합니다. 이 파일은 NoSQL Database Migrator 패키지와 함께 제공되며 Oracle NoSQL Database Migrator가 압축 해제된 디렉토리에서 사용할 수 있습니다. 상세도 증가 순서에 따라 로깅의 다른 레벨은 OFF, SEVERE, WARNING, INFO, FINE, 및 ALL입니다.
로그 레벨을 OFF로 설정하면 모든 로깅 정보가 해제되는 반면, 로그 레벨을 ALL로 설정하면 전체 로그 정보가 제공됩니다.
기본 로그 레벨은 WARNING입니다. 모든 로깅 출력은 기본적으로 콘솔로 이동하도록 구성됩니다.
logging.properties 파일에서 각 로그 레벨에 대한 설명을 볼 수 있습니다.