주:

Amazon DynamoDB에서 Oracle NoSQL Database 테이블로 데이터 마이그레이션

소개

Amazon DynamoDB는 빠르고 확장 가능한 키-값 및 문서 데이터 스토리지를 제공하는 Amazon Web Services에서 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다.

Oracle NoSQL Database Cloud Service는 Oracle Cloud Infrastructure상에서 Oracle Corporation이 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다. 대기 시간이 짧은 성능과 클라우드 전용 애플리케이션에 대한 자동 확장을 통해 확장 가능한 키-값 및 JSON 문서 스토리지를 제공합니다.

이 사용지침서에서는 Oracle NoSQL Database Migrator 툴을 사용하여 Amazon DynamoDB에서 Oracle NoSQL Database Cloud Service로 데이터를 마이그레이션하는 방법에 대해 설명합니다.

마이그레이션 워크플로우는 DynamoDB의 네이티브 익스포트-S3 기능을 사용하여 DynamoDB JSON 형식으로 테이블 데이터를 추출합니다. 그런 다음 익스포트된 데이터를 OCI(Oracle Cloud Infrastructure)에서 실행되는 Oracle NoSQL Database Cloud Service로 임포트합니다.

구조

마이그레이션 워크플로우는 다음 구성요소로 구성됩니다.

이미지

상위 레벨 마이그레이션 프로세스

  1. DynamoDB 테이블 및 Amazon S3 버킷을 프로비전합니다.
  2. 테이블에서 PITR을 사용으로 설정하고 DynamoDB 테이블을 Amazon S3 버킷으로 익스포트합니다.
  3. OCI 컴퓨트 인스턴스를 프로비전합니다.
  4. 컴퓨트에 Oracle NoSQL Database Migrator 툴을 설치하고 구성합니다.
  5. OCI 컴퓨트에서 AWS 및 OCI 인증을 구성합니다.
  6. Amazon S3 버킷에서 OCI로의 마이그레이션 실행 NoSQL
  7. Oracle NoSQL Database에서 마이그레이션된 데이터를 검증합니다.

필수 조건

시작하기 전에 다음 사항을 확인하십시오.

작업 1: Amazon DynamoDB 리소스 프로비전

이 자습서에서는 이 연습에서 필수인 AWS의 기본 필수 리소스만 프로비저닝합니다.

1. AWS에서 IAM 사용자 생성

DynamoDB 작업을 관리할 전용 IAM 사용자를 생성합니다.

a. AWS 콘솔에 로그인

b. IAM, 사용자로 이동합니다.

c. Create User를 누릅니다.

d. 프로그래밍 방식 액세스 할당

이미지

e. 검토한 후 Create 유저를 누릅니다

⚠️ 운용 환경에서는 최소 권한의 IAM 정책을 사용합니다.

2. AWS에서 DynamoDB 테이블 생성

a. AWS 콘솔에 사인인합니다.

b. DynamoDB로 이동합니다.

이미지

c. 테이블 생성을 누릅니다.

이미지

d. 다음을 지정합니다.

e. 기본 설정을 적용하고 테이블을 생성합니다.

f. 생성된 테이블을 검토합니다.

이미지

3. DynamoDB 테이블에 새 열 또는 샘플 레코드 삽입을 추가합니다.

a. AWS 콘솔에 사인인합니다.

b. 테이블을 선택합니다

c. 작업, 항목 생성을 누릅니다.

이미지

d. 샘플 레코드 삽입

이미지

e. 레코드 검증

이미지

작업 2: Amazon S3 버킷으로 DynamoDB 테이블 익스포트

DynamoDB의 네이티브 익스포트-S3 기능을 사용하여 DynamoDB JSON 형식의 테이블 데이터를 S3 버킷으로 추출합니다.

1. Amazon S3 버킷 생성

a. AWS 콘솔에 로그인

b. S3로 이동합니다.

c. 새 버킷 생성

이미지

d. 기본 설정 유지

e. 버킷 검증

이미지

2. PITR(Point-In-Time Recovery) 활성화

DynamoDB 익스포트에는 적시 복구가 필요합니다. PITR을 엑스포트하기 전에 테이블 레벨에서 활성화해야 합니다.

a. 테이블 선택

b. 적시 복구 사용

이미지

c. PITR을 활성화한 후

이미지

3. 테이블 데이터를 S3 버킷으로 익스포트합니다.

a. AWS 콘솔에 사인인합니다.

b. 테이블 선택

c. S3으로 익스포트를 누릅니다.

d. 다음 중에서 선택합니다.

e. 내보내기를 누릅니다

이미지

이미지

4. 익스포트된 데이터 확인

완료 후:

이미지

S3://bucket-name/AWSDynamoDB/ExportID/data/

다음 포함:

이미지

작업 3: Oracle Cloud Infrastructure 환경 준비

1. 컴파트먼트 생성

a. OCI 콘솔에 사인인합니다.

b. ID 및 보안, 구획으로 이동합니다.

c. Oracle NoSQL 테이블에 대한 새 컴파트먼트를 생성합니다.

2. 컴퓨팅 인스턴스 생성

a. 컴퓨트, 인스턴스로 이동합니다.

b. 인스턴스 생성를 누릅니다.

c. 다음 중에서 선택합니다.

이 컴퓨트 인스턴스는 Oracle NoSQL Database Migrator를 실행합니다.

3. Oracle NoSQL Database Migrator 설치

Oracle NoSQL Migrator는 Amazon S3에서 DynamoDB 익스포트 파일을 읽고 OCI Oracle NoSQL 데이터베이스로 데이터를 임포트합니다. 위에 생성된 OCI 컴퓨트 중 하나에 Oracle NoSQL Migrator 툴을 설치합니다.

a. Java 11 설치

Oracle NoSQL Database Migrator를 사용하려면 컴퓨트에서 Java를 실행해야 합니다.

sudo yum install java-11

b. 마이그레이션기 패키지 추출

tar -zxvf V1053574-01.tar.gz
cd nosql-migrator-1.8.0/

설치 확인:

[opc@nosql-migrator-1.8.0]\$ ls -ltr
total 332
-rw-r--r--. 1 opc opc    822 Nov 13 07:26 sdk_logging.properties
-rw-r--r--. 1 opc opc   1720 Nov 13 07:26 README.md
-rw-r--r--. 1 opc opc    897 Nov 13 07:26 log4j2.xml
-rw-r--r--. 1 opc opc   1870 Nov 13 07:26 LICENSE.txt
-rw-r--r--. 1 opc opc    488 Dec  2 07:11 Dockerfile
-rw-r--r--. 1 opc opc 234275 Dec 23 08:38 THIRD_PARTY_LICENSES.txt
-rwxr-xr-x. 1 opc opc  73063 Dec 23 08:38 runMigrator
-rw-r--r--. 1 opc opc   4640 Dec 23 08:38 CHANGELOG.md
drwxr-xr-x. 2 opc opc    124 Feb  6 02:50 lib

작업 4: 보안 액세스 구성(OCI 및 AWS)

Oracle NoSQL Migrator를 사용하려면 컴퓨트 인스턴스가 Amazon S3 및 OCI(Oracle Cloud Infrastructure) 리소스에 모두 액세스할 수 있도록 보안 클라우드 간 인증을 구성해야 합니다.

1. OCI API 키 생성

OCI 콘솔에서 대상 Oracle NoSQL Database Cloud Service 테이블을 소유할 OCI 사용자를 위한 API 키를 생성합니다. 이 사용자에게 Oracle NoSQL Database Cloud Service 테이블을 생성하고 관리할 수 있는 권한이 있어야 합니다.

a. OCI 콘솔에서 프로파일, API 키를 엽니다.

b. 새 API 키 추가.

이미지

c. 개인 키를 다운로드합니다.

d. 레코드:

이미지

2. OCI 구성 파일 생성

a. SSH를 사용하여 이전에 생성된 컴퓨트 인스턴스에 opc 사용자로 로그인합니다.

b. /home/opc/.oci directory 아래에 모든 OCI ID 파일을 생성합니다.

전용 키:

c. 컴퓨트의 개인 키를 /home/opc/.oci/ociuser.pem로 복사합니다.

/home/opc/.oci/ociuser.pem

구성 파일:

\$vi /home/opc/.oci/config

예:

[DEFAULT]
user=ocid1.user.oc1...
fingerprint=xx:xx:xx
tenancy=ocid1.tenancy.oc1...
region=ap-hyderabad-1
key_file=/home/opc/.oci/ociuser.pem

3. AWS 액세스 키 생성

AWS 콘솔에서 Amazon DynamoDB 데이터를 내보내는 Amazon S3 Object Storage에 액세스할 사용자에 대한 액세스 키(존재하지 않은 경우)를 생성합니다.

a. AWS 콘솔에 사인인합니다.

b. IAM, User, Security Credentials로 이동합니다.

c. 액세스 키 생성

사용 사례: AWS 외부에서 실행되는 애플리케이션.

이미지

4. AWS 인증서 구성

컴퓨팅 인스턴스에 다음 파일을 생성합니다.

/home/opc/.aws/config
/home/opc/.aws/credentials

예제 구성:

[default]
region=<aws_region>

예제 인증서:

[default]
aws_access_key_id=<access_key>
aws_secret_access_key=<secret_key>

작업 5: Oracle NoSQL Migrator 구성 및 실행

마이그레이션기에는 다음을 설명하는 JSON 구성 파일이 필요합니다.

1. 이전 구성 파일 생성

소스 및 대상(싱크)에 대한 정보가 포함된 마이그레이션 구성 JSON 파일을 만듭니다. DynamoDB 테이블에서 싱크 노트 DDBPartitionKeyDDBSortKey 아래.

생성:

/home/opc/.oci/migrator-config-dynamodb-bucket_to_OCI.json

구성 예제:

{
  "source": {
    "type": "aws_s3",
    "format": "dynamodb_json",
    "s3URL": "https://bucket-name.s3.region.amazonaws.com/AWSDynamoDB/ExportID/data",
    "credentials": "/home/opc/.aws/credentials",
    "credentialsProfile": "default"
  },
  "sink": {
    "type": "nosqldb_cloud",
    "endpoint": "<oci_region>",
    "table": "Emp_records",
    "schemaInfo": {
      "defaultSchema": true,
      "DDBPartitionKey": "PartitionKey:string",
      "DDBSortKey": "SortKey:Number",
      "readUnits": 10,
      "writeUnits": 10,
      "storageSize": 1
    },
    "compartment": "<compartment_ocid>",
    "credentials": "/home/opc/.oci/config",
    "credentialsProfile": "DEFAULT",
    "overwrite": true
  },
  "abortOnError": false,
  "migratorVersion": "1.8.0"
}

기본 스키마 모드 이해

defaultSchema: true인 경우:

Oracle NoSQL는 다음을 사용하여 테이블을 생성합니다.

키가 아닌 모든 DynamoDB 속성은 document 내에 저장됩니다.

2. 이전 실행

컴퓨트 인스턴스에서 디렉토리를 nosql-migrator-1.8.0 하위 디렉토리로 변경합니다.

\$cd /home/opc/nosql-migrator-1.8.0
\$./runMigrator --config /home/opc/.oci/migrator-config-dynamodb-bucket_to_OCI.json

실행이 성공하면 출력에 처리된 레코드 수가 표시됩니다.

성공한 이전 로그:

[opc@.nosql-migrator-1.8.0]\$ ./runMigrator --config /home/opc/.oci/migrator-config-dynamodb-bucket_custom-schema.json

2026-02-11 13:32:35.279 [INFO] Configuration for migration:
{
  "source" : {
    "type" : "aws_s3",
    "format" : "dynamodb_json",
    "s3URL" : "https://dbmigbucket2oci.s3.ap-southeast-2.amazonaws.com/AWSDynamoDB/01770816089608-60282a9b/data",
    "credentials" : "/home/opc/.aws/credentials",
    "credentialsProfile" : "default"
  },
  "sink" : {
    "type" : "nosqldb_cloud",
    "endpoint" : "ap-hyderabad-1",
    "table" : "Emp_records",
    "schemaInfo" : {
      "defaultSchema" : true,
      "DDBPartitionKey" : "On_roll:string",
      "DDBSortKey" : "EmpID:Number",
      "readUnits" : 5,
      "writeUnits" : 50,
      "storageSize" : 5
    },
    "compartment" : "ocid1.compartment.oc1..aaaaaaaazliaxu2oqqcp3x6574nxkegv6lxbvh5lildyztb4fizbk2tqv2ia",
    "includeTTL" : false,
    "credentials" : "/home/opc/.oci/hyd_config",
    "credentialsProfile" : "DEFAULT",
    "writeUnitsPercent" : 90,
    "overwrite" : true,
    "requestTimeoutMs" : 5000
  },
  "abortOnError" : false,
  "migratorVersion" : "1.8.0"
}
2026-02-11 13:32:35.283 [INFO] creating source from given configuration:
2026-02-11 13:32:37.061 [INFO] source creation completed
2026-02-11 13:32:37.061 [INFO] creating sink from given configuration:
2026-02-11 13:32:38.253 [INFO] sink creation completed
2026-02-11 13:32:38.255 [INFO] creating migrator pipeline
2026-02-11 13:32:38.255 [INFO] [cloud sink] : start loading DDLs
2026-02-11 13:32:38.256 [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS Emp_records (On_roll string,EmpID Number,document JSON, PRIMARY KEY(SHARD(On_roll),EmpID)),limits: [5, 50, 5]
2026-02-11 13:32:38.763 [INFO] [cloud sink] : completed loading DDLs
2026-02-11 13:32:39.426 [INFO] migration started
2026-02-11 13:32:39.635 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/kaqjylfjsm4dzaf52u2e6qstia.json.gz
2026-02-11 13:32:40.373 [INFO] Migration success for source kaqjylfjsm4dzaf52u2e6qstia. read=2,written=2,failed=0
2026-02-11 13:32:40.373 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/phz6b5k7mmytpcrqe72pfnj3zu.json.gz
2026-02-11 13:32:40.606 [INFO] Migration success for source phz6b5k7mmytpcrqe72pfnj3zu. read=0,written=0,failed=0
2026-02-11 13:32:40.606 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/rtm6rzjciq6jhds3dcp4pcro5u.json.gz
2026-02-11 13:32:40.839 [INFO] Migration success for source rtm6rzjciq6jhds3dcp4pcro5u. read=0,written=0,failed=0
2026-02-11 13:32:40.839 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/vrukpcnd6e3kddjg4qite4upzi.json.gz
2026-02-11 13:32:41.304 [INFO] Migration success for source vrukpcnd6e3kddjg4qite4upzi. read=1,written=1,failed=0
2026-02-11 13:32:41.304 [INFO] Migration is successful for all the sources.
2026-02-11 13:32:41.306 [INFO] migration completed.
Records provided by source=3, Records written to sink=3, Records failed=0,Records skipped=0.
Elapsed time: 0min 1sec 878ms
Migration completed.

작업 6: 이전 검증

Data Migrator를 성공적으로 실행한 후 DynamoDB에 삽입된 모든 테이블 레코드가 Oracle NoSQL에 표시되어야 합니다.

a. OCI 콘솔을 엽니다.

b. 데이터베이스, Oracle NoSQL Database, 테이블로 이동합니다.

이미지

c. 적절한 컴파트먼트를 선택합니다.

d. 이전된 테이블을 엽니다.

이미지

e. 레코드를 확인합니다.

이미지

마이그레이션 고려 사항 및 모범 사례

용량 계획

보안

대형 테이블

멀티테라바이트 엑스포트의 경우:

TTL 처리

DynamoDB TTL이 필요한 경우 다음을 사용으로 설정합니다.

"includeTTL": true

다중 테이블 이전

여러 테이블을 마이그레이션하는 경우 AWS CLI 스크립팅을 사용하여 내보내기를 자동화합니다.

결론

이 사용지침서에서는 기본 익스포트 기능과 Oracle NoSQL Database Migrator를 사용하여 Amazon DynamoDB에서 Oracle NoSQL Database Cloud Service로 엔드투엔드 마이그레이션 워크플로우를 시연했습니다.

이 접근 방식은 다음을 가능하게 합니다.

적절한 계획, 보안 구성 및 용량 튜닝을 통해 조직은 클라우드 플랫폼 전반에서 원활한 NoSQL 데이터 마이그레이션을 달성할 수 있습니다.

문제 해결

리소스 정리

이 자습서를 완료한 후 불필요한 비용을 피하려면 다음 리소스를 제거하십시오.

승인

작성자 - Dharmesh Patel(고객 성공 서비스 부문 수석 클라우드 설계자)


추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.