Amazon DynamoDB에서 Oracle NoSQL Database Cloud Service로 데이터 마이그레이션

Oracle NoSQL Database Migrator를 사용하면 Amazon DynamoDB에서 Oracle NoSQL Database Cloud Service로 데이터를 마이그레이션할 수 있는 두 가지 옵션이 있습니다.

  • Oracle NoSQL 기본 스키마 사용
  • 사용자정의 스키마 사용

두 옵션 모두 소스 파일과 대상 데이터베이스(싱크)에 대한 정보를 포함하는 구성 JSON 파일이 필요합니다. In both scenarios the source is Amazon DynamoDB formatted JSON files stored in Amazon S3 Object Storage, while the target is the Oracle NoSQL Database Cloud Service database. Amazon DynamoDB은 스키마가 없는 데이터베이스이므로 Oracle NoSQL 기본 스키마를 사용하여 이전하는 것이 좋습니다.

Oracle NoSQL 기본 스키마를 사용하여 데이터 이전

기본 스키마를 사용하여 마이그레이션할 때 분할 영역 키, 정렬 키(선택 사항) 및 문서의 두 개 또는 세 개 열을 사용하여 새 Oracle NoSQL Database Cloud Service 테이블이 생성됩니다. 파티션 키 및 정렬 키는 Amazon DynamoDB 테이블에서 Oracle NoSQL Database Cloud Service 테이블로 마이그레이션됩니다. 나머지 Amazon DynamoDB 속성은 문서 열에서 JSON 형식으로 집계됩니다.

다음 단계에서는 Oracle NoSQL 기본 스키마를 사용하여 데이터를 이전하는 방법에 대해 설명합니다.

  1. AWS 콘솔에서 Amazon DynamoDB 데이터를 내보내는 Amazon S3 Object Storage에 액세스할 사용자에 대한 액세스 키(아직 없는 경우)를 생성합니다.
    새 사용자를 생성하고 사용자에 대한 새 액세스 키를 생성하는 것이 좋습니다. 루트 Amazon 계정 사용자에 대한 액세스 키를 만들지 마십시오. 액세스 키를 생성할 때는 사용 사례를 제공해야 합니다. "Application running outside of AWS: You plan to authenticate workloads running in your data center or other infrastructure outside of AWS that needs to access your AWS resources" 사용 사례를 사용해야 합니다. 사용자 또는 액세스 키 만들기에 대한 자세한 내용은 설명서 검토 절을 참조하십시오.
    액세스 키 및 보안 액세스 키를 확인합니다. 다시 표시되지 않습니다.
  2. Amazon S3 버킷이 없는 경우 생성하십시오. 버킷 이름, 영역 및 버킷 URL을 기록해 둡니다.
    자세한 내용은 문서 검토 섹션에서 "버킷 생성"을 참조하십시오.
  3. Amazon DynamoDB 서비스를 선택한 다음 Oracle NoSQL Database Cloud Service로 마이그레이션할 Amazon DynamoDB 테이블을 선택합니다.
    General Information에서 분할 영역 키의 이름 및 유형과 정렬 키 속성을 확인합니다.
  4. Amazon DynamoDB 서비스 메뉴에서 S3로 익스포트를 누른 다음 S3로 익스포트를 누릅니다.
  5. 익스포트할 테이블의 이름을 선택한 다음 데이터를 익스포트할 버킷의 이름(2단계에서 생성된 버킷의 이름)을 선택합니다.
  6. 익스포트 설정 구성:
    • 전체 익스포트를 선택합니다.
    • 익스포트된 파일 형식으로 DynamoDB JSON을 선택합니다.
    • 암호화를 위해 기본 Amazon S3 키를 선택합니다.
    • PITR(포인트 인 타임 복구)을 사용으로 설정합니다. 테이블을 엑스포트해야 합니다.
  7. 내보내기를 누릅니다.
    엑스포트가 진행되는 동안 엑스포트 ID를 기록해 둡니다. See "DynamoDB data export to Amazon S3: how it works" for more information about exporting.
  8. 익스포트가 완료되면 AWS 콘솔로 이동하여 Amazon S3 서비스를 선택합니다.
  9. 데이터가 익스포트된 버킷을 선택합니다.
    AWSDynamoDB/ExportID라는 버킷 내에 새 디렉토리가 생성되었습니다. 이 디렉토리에는 내보낸 Amazon DynamoDB 테이블 데이터가 포함된 일련의 GZIP 압축 JSON 파일이 포함된 data이라는 하위 디렉토리가 생성됩니다. 형식이 지정된 JSON 파일에 대한 자세한 내용은 설명서 검토 섹션의 "DynamoDB 테이블 익스포트 출력 형식"을 참조하십시오.
  10. OCI 콘솔에서 대상 Oracle NoSQL Database Cloud Service 테이블을 소유할 OCI 사용자에 대한 API 키를 생성합니다. 이 사용자는 Oracle NoSQL Database Cloud Service 테이블을 생성하고 관리할 수 있는 권한이 있어야 합니다.
    사용자 OCID, 테넌시 OCID, 지문 및 OCI 지역 ID를 기록해 둡니다. PEM 파일에 개인 및 공개 키를 저장합니다. 이 API 키는 Oracle NoSQL Database Migrator가 Amazon DynamoDB 형식의 JSON 파일을 테이블로 업로드하는 데 사용됩니다.
  11. Oracle NoSQL Database Cloud Service 테이블이 없는 경우 해당 테이블에 대한 구획을 생성합니다.
    구획 이름을 기록해 둡니다.
  12. 컴퓨트 인스턴스를 생성합니다.
    이 컴퓨트 인스턴스는 Oracle NoSQL Database Migrator 소프트웨어를 실행합니다. 항상 무료 컴퓨팅 인스턴스(VM.Standard.E4). OCPU 1개 및 16GB 메모리를 사용한 유연성으로도 충분하며 비용 효율적입니다.
  13. Oracle Linux 8로 컴퓨트 인스턴스를 구성합니다.
  14. SSH를 사용하여 opc user로 새 컴퓨트 인스턴스에 로그인하여 다음과 같이 Java 11을 설치합니다.
    [opc@oci-compute ~]$ sudo yum install java-11
  15. 아직 다운로드하지 않은 경우 Oracle NoSQL Database Migrator 1.5.0 바이너리를 다운로드합니다. 자세한 내용은 소프트웨어 요구 사항 검토 절을 참조하십시오.
  16. SCP를 사용하여 Oracle NoSQL Database Migrator ZIP 파일을 새 컴퓨트 인스턴스의 opc user's 홈 디렉토리로 업로드합니다.
  17. SSH를 사용하여 opc user로 컴퓨팅 인스턴스에 로그인하여 이전 단계에서 다운로드한 Oracle NoSQL Database Migrator 소프트웨어의 압축을 풉니다. 파일 내용이 /home/opc/nosql-migrator-1.5.0라는 새 디렉토리로 압축 해제됩니다. 다음과 같이 파일의 압축을 풉니다.
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  18. SCP를 사용하여 단계 10의 전용 키 PEM 파일을 이전 단계에서 Oracle NoSQL Database Migrator의 압축이 해제된 컴퓨트 인스턴스의 opc user 홈 디렉토리로 업로드합니다.
  19. SSH를 사용하여 opc user로 컴퓨트 인스턴스에 로그인하여 OCI ID 파일을 생성합니다. 다음 내용을 사용하여 /home/opc/.oci 디렉토리에 OCI ID 파일을 생성합니다.
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_10
    fingerprint=fingerprint_from_step_10
    tenancy=tenancy_OCID_from_step_10
    region=region_ID_from_step_10
    key_file=full_path_to_private_key_PEM_file_uploaded_step_18
  20. 컴퓨트 인스턴스의 opc user로 AWS 구성 및 인증서 파일을 생성합니다. 다음 내용으로 /home/opc/.aws 디렉토리에 이 파일을 추가합니다.
    [opc@oci-compute .aws]$ cat config
    [default]
    region=bucket_region_from_step_2
    [opc@oci-compute .aws]$ cat credentials
    [default]
    aws_access_key_id=aws_access_key_id_from_step_1
    aws_secret_access_key=aws_access_key_secret_from_step_1
  21. 컴퓨트 인스턴스에서 디렉토리를 nosql-migrator-1.5.0 하위 디렉토리로 변경합니다. 다음과 같이 소스 및 대상(싱크)에 대한 정보가 포함된 이전 구성 JSON 파일을 생성합니다.
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-dynamodb-bucket_custom-schema.json 
    {
     "source" : {
     "type" : "aws_s3",
     "format" : "dynamodb_json",
     "s3URL" : "https://bucket_name_from_step_2.s3.bucket_region_from_step_2.amazonaws.c
    om/AWSDynamoDB/export_ID/data",
     "credentials" : "/home/opc/.aws/credentials",
     "credentialsProfile" : "default"
     },
     "sink" : {
     "type" : "nosqldb_cloud",
     "endpoint" : "https://nosql.oci_region_ID_from_step_11.oci.oraclecloud.com",
     "table" : "new_Oracle_NoSQL_Database_Cloud_Service_table_name",
     "schemaInfo" : {
     "defaultSchema" : true,
     "DDBPartitionKey" : "partition_key_name_from_step_3:type_from_step_3",
     "DDBSortKey" : "sort_key_name_from_step_3:type_from_step_3",
     "readUnits" : 50,
     "writeUnits" : 50,
     "storageSize" : 25
     },
     "compartment" : "compartment_name_from_step_11",
     "includeTTL" : false,
     "credentials" : "/home/opc/.oci/config",
     "credentialsProfile" : "DEFAULT",
     "writeUnitsPercent" : 90,
     "overwrite" : true,
     "requestTimeoutMs" : 5000
     },
     "abortOnError" : false,
     "migratorVersion" : "1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  22. 다음과 같이 Oracle NoSQL Database Migrator 및 이전 단계에서 생성된 마이그레이션 구성 JSON 파일을 사용하여 데이터 마이그레이션을 실행합니다.
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_def_schema.json
    마이그레이션 작업은 기본 스키마를 사용하여 새 Oracle NoSQL Database Migrator 테이블을 생성한 다음, Amazon S3 오브젝트 스토리지 버킷에서 Amazon DynamoDB 형식의 JSON 파일을 읽고, 해당 파일의 데이터를 새로 생성된 테이블로 가져옵니다.

사용자 정의 스키마를 사용하여 데이터 이전

사용자정의 스키마를 사용하여 마이그레이션할 때 Oracle NoSQL Database Cloud Service 테이블은 Oracle NoSQL Database Cloud Service DDL(테이블 데이터 정의어)을 사용하여 Amazon DynamoDB 테이블의 스키마와 유사하게 정의되어야 합니다. 새 테이블의 속성 이름 및 유형은 Amazon DynamoDB 테이블의 속성 이름 및 유형과 동일해야 합니다. 파티션 키와 정렬 키는 각각 2048바이트와 1024바이트로 제한되는 반면, Oracle NoSQL Database Cloud Service에서는 이러한 키는 64바이트로 제한됩니다.

  1. AWS 콘솔에서 Amazon DynamoDB 데이터를 내보내는 Amazon S3 Object Storage에 액세스할 사용자에 대한 액세스 키(아직 없는 경우)를 생성합니다.
    새 사용자를 생성하고 사용자에 대한 새 액세스 키를 생성하는 것이 좋습니다. 루트 Amazon 계정 사용자에 대한 액세스 키를 만들지 마십시오. 액세스 키를 생성할 때는 사용 사례를 제공해야 합니다. "Application running outside of AWS: You plan to authenticate workloads running in your data center or other infrastructure outside of AWS that needs to access your AWS resources" 사용 사례를 사용해야 합니다. 사용자 또는 액세스 키 만들기에 대한 자세한 내용은 설명서 검토 절을 참조하십시오.
    생성된 액세스 키와 보안 액세스 키는 다시 표시되지 않으므로 참고하십시오.
  2. Amazon S3 버킷이 없는 경우 생성하십시오. 버킷 이름, 영역 및 버킷 URL을 기록해 둡니다.
    자세한 내용은 문서 검토 섹션에서 "버킷 생성"을 참조하십시오.
  3. Amazon DynamoDB 서비스를 선택한 다음 Oracle NoSQL Database Cloud Service로 마이그레이션할 Amazon DynamoDB 테이블을 선택합니다.
    General Information에서 분할 영역 키의 이름 및 유형과 정렬 키 속성을 확인합니다. 테이블의 다른 속성과 해당 유형을 살펴봅니다.
  4. Amazon DynamoDB 서비스 메뉴에서 S3로 익스포트를 누른 다음 S3로 익스포트를 누릅니다.
  5. 익스포트할 테이블의 이름을 선택한 다음 데이터를 익스포트할 버킷의 이름(2단계에서 생성된 버킷의 이름)을 선택합니다.
  6. 익스포트 설정 구성:
    • 전체 익스포트를 선택합니다.
    • 익스포트된 파일 형식으로 DynamoDB JSON을 선택합니다.
    • 암호화를 위해 기본 Amazon S3 키를 선택합니다.
    • PITR(포인트 인 타임 복구)을 사용으로 설정합니다. 테이블을 엑스포트해야 합니다.
  7. 내보내기를 누릅니다.
    엑스포트가 진행되는 동안 엑스포트 ID를 기록해 둡니다. See "DynamoDB data export to Amazon S3: how it works" for more information about exporting.
  8. 익스포트가 완료되면 AWS 콘솔로 이동하여 Amazon S3 서비스를 선택합니다.
  9. 데이터가 익스포트된 버킷을 선택합니다.
    AWSDynamoDB/ExportID라는 버킷 내에 새 디렉토리가 생성되었습니다. 이 디렉토리에는 내보낸 Amazon DynamoDB 테이블 데이터가 포함된 일련의 GZIP 압축 JSON 파일이 포함된 data이라는 하위 디렉토리가 생성됩니다. 형식이 지정된 JSON 파일에 대한 자세한 내용은 설명서 검토 섹션의 "DynamoDB 테이블 익스포트 출력 형식"을 참조하십시오.
  10. OCI 콘솔에서 대상 Oracle NoSQL Database Cloud Service 테이블을 소유할 OCI 사용자에 대한 API 키를 생성합니다. 이 사용자는 Oracle NoSQL Database Cloud Service 테이블을 생성하고 관리할 수 있는 권한이 있어야 합니다.
    사용자 OCID, 테넌시 OCID, 지문 및 OCI 지역 ID를 기록해 둡니다. PEM 파일에 개인 및 공개 키를 저장합니다. 이 API 키는 Oracle NoSQL Database Migrator가 Amazon DynamoDB 형식의 JSON 파일을 테이블로 업로드하는 데 사용됩니다.
  11. Oracle NoSQL Database Cloud Service 테이블이 없는 경우 해당 테이블에 대한 구획을 생성합니다.
    구획 이름을 기록해 둡니다.
  12. 컴퓨트 인스턴스를 생성합니다.
    이 컴퓨트 인스턴스는 Oracle NoSQL Database Migrator 소프트웨어를 실행합니다. 항상 무료 컴퓨팅 인스턴스(VM.Standard.E4). OCPU 1개 및 16GB 메모리를 사용한 유연성으로도 충분하며 비용 효율적입니다.
  13. Oracle Linux 8로 컴퓨트 인스턴스를 구성합니다.
  14. SSH를 사용하여 opc user로 새 컴퓨트 인스턴스에 로그인하여 다음과 같이 Java 11을 설치합니다.
    [opc@oci-compute ~]$ sudo yum install java-11
  15. 아직 다운로드하지 않은 경우 Oracle NoSQL Database Migrator 1.5.0 바이너리를 다운로드합니다. 자세한 내용은 소프트웨어 요구 사항 검토 절을 참조하십시오.
  16. SCP를 사용하여 Oracle NoSQL Database Migrator ZIP 파일을 새 컴퓨트 인스턴스의 opc user's 홈 디렉토리로 업로드합니다.
  17. SSH를 사용하여 opc user로 컴퓨팅 인스턴스에 로그인하여 이전 단계에서 다운로드한 Oracle NoSQL Database Migrator 소프트웨어의 압축을 풉니다. 파일 내용이 /home/opc/nosql-migrator-1.5.0라는 새 디렉토리로 압축 해제됩니다. 다음과 같이 파일의 압축을 풉니다.
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  18. SCP를 사용하여 단계 10의 전용 키 PEM 파일을 이전 단계에서 Oracle NoSQL Database Migrator의 압축이 해제된 컴퓨트 인스턴스의 opc user 홈 디렉토리로 업로드합니다.
  19. SSH를 사용하여 opc user로 컴퓨트 인스턴스에 로그인하여 OCI ID 파일을 생성합니다. 다음 내용을 사용하여 /home/opc/.oci 디렉토리에 OCI ID 파일을 생성합니다.
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_10
    fingerprint=fingerprint_from_step_10
    tenancy=tenancy_OCID_from_step_10
    region=region_ID_from_step_10
    key_file=full_path_to_private_key_PEM_file_uploaded_step_18
  20. 컴퓨트 인스턴스의 opc user로 AWS 구성 및 인증서 파일을 생성합니다. 다음 내용으로 /home/opc/.aws 디렉토리에 이 파일을 추가합니다.
    [opc@oci-compute .aws]$ cat config
    [default]
    region=bucket_region_from_step_2
    [opc@oci-compute .aws]$ cat credentials
    [default]
    aws_access_key_id=aws_access_key_id_from_step_1
    aws_secret_access_key=aws_access_key_secret_from_step_1
  21. 디렉토리를 nosql-migrator-1.5.0 하위 디렉토리로 변경한 다음 Oracle NoSQL Database Cloud Service DDL(데이터 정의어) 문을 생성하여 3단계의 Amazon DynamoDB 테이블에서 수집한 속성과 유사한 속성을 가진 새 Oracle NoSQL Database Cloud Service 테이블을 생성합니다. 다음은 새 Oracle NoSQL Database Cloud Service 테이블 DDL 문 생성의 예입니다.
    [opc@oci-compute nosql-migrator-1.5.0]$ cat /home/opc/table_name.ddl 
    CREATE TABLE IF NOT EXISTS table_name (partition_key_name_from_step_3 
    type,sort_key_name_from_step_3 type, attribute_1 type, attribute_2 
    type, PRIMARY 
    KEY(SHARD(partition_key_name_from_step_3),sort_key_name_from_step_3))
  22. 컴퓨트 인스턴스에서 디렉토리를 nosql-migrator-1.5.0 하위 디렉토리로 변경합니다. 다음과 같이 소스 및 대상(싱크)에 대한 정보가 포함된 이전 구성 JSON 파일을 생성합니다.
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-dynamodb-bucket_custom-schema.json 
    {
      "source": {
        "type": "aws_s3",
        "format": "dynamodb_json",
        "s3URL": "https://bucket_name_from_step_2.s3.bucket_region_from_step_2.amazonaws.com/AWSDynamoDB/export_ID_from_step_7/data",
        "credentials": "/home/opc/.aws/credentials",
        "credentialsProfile": "default"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "https://nosql.oci_region_ID_from_step_10.oci.oraclecloud.com",
        "table": "new_Oracle_NoSQL_Database_Cloud_Service_table_name",
        "schemaInfo": {
          "schemaPath": "/home/opc/nosql-migrator-1.5.0/table_name.ddl_from_step_21",
          "readUnits": 50,
          "writeUnits": 50,
          "storageSize": 25
        },
        "compartment": "compartment_name_from_step_11",
        "includeTTL": false,
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": true,
        "requestTimeoutMs": 5000
      },
      "abortOnError": false,
      "migratorVersion": "1.5.0"
    }
  23. 다음과 같이 Oracle NoSQL Database Migrator 및 이전 단계에서 생성된 마이그레이션 구성 JSON 파일을 사용하여 데이터 마이그레이션을 실행합니다.
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_custom_schema.json
    마이그레이션 작업은 단계 21에서 정의된 사용자정의 스키마 DDL을 사용하여 새 Oracle NoSQL Database Migrator 테이블을 생성한 다음, Amazon S3 오브젝트 스토리지 버킷에서 Amazon DynamoDB 형식의 JSON 파일을 읽어 해당 파일의 데이터를 새로 생성된 테이블로 가져옵니다.