쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Amazon Neptune을 AWS Database Migration Service의 대상으로 사용

포커스 모드
Amazon Neptune을 AWS Database Migration Service의 대상으로 사용 - AWS 데이터베이스 마이그레이션 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Neptune은 빠르고 안정적인 종합 관리형 그래프 데이터베이스 서비스로, 고도로 연결된 데이터 세트를 사용하는 애플리케이션을 쉽게 빌드하고 실행할 수 있습니다. Neptune의 핵심은 특별한 용도의 고성능 그래프 데이터베이스 엔진입니다. 이 엔진은 수십억 개의 관계를 저장하고 몇 밀리초의 지연 시간으로 그래프를 쿼리하도록 최적화되었습니다. Neptune은 인기 있는 그래프 쿼리 언어인 Apache TinkerPop Gremlin과 W3C의 SPARQL을 지원합니다. Amazon Neptune에 관한 자세한 내용은 Amazon Neptune 사용 설명서Amazon Neptune이란 무엇인가? 섹션을 참조하세요.

Neptune과 같은 그래프 데이터베이스가 없더라도 관계형 데이터베이스에서 고도로 연결된 데이터를 모델링할 수 있습니다. 데이터에 동적 연결이 있을 가능성이 있기 때문에 이러한 데이터 소스를 사용하는 애플리케이션은 연결된 데이터 쿼리를 SQL로 모델링해야 합니다. 이 방법을 사용하려면 그래프 쿼리를 SQL로 변환하기 위해 추가 계층을 작성해야 합니다. 또한 관계형 데이터베이스에는 스키마 엄격성이 있습니다. 변경되는 연결을 모델링하기 위해 스키마를 변경하면 가동 중지가 발생하고 새 스키마를 지원하기 위해 쿼리 변환을 추가로 유지 관리해야 합니다. 쿼리 성능은 애플리케이션을 설계하는 동안 고려해야 할 또 하나의 큰 제약 조건입니다.

그래프 데이터베이스는 이러한 상황을 크게 단순화할 수 있습니다. 스키마 없이 서식 있는 그래프 쿼리 계층(Gremlin 또는 SPARQL) 및 그래프 쿼리에 최적화된 인덱스는 유연성과 성능을 향상시킵니다. Amazon Neptune 그래프 데이터베이스에는 유휴 시 암호화, 보안 승인 계층, 기본 백업, 다중 AZ 지원, 읽기 전용 복제 지원 등의 엔터프라이즈 기능도 있습니다.

AWS DMS를 사용하면 고도로 연결된 그래프를 모델링하는 관계형 데이터를 지원되는 모든 SQL 데이터베이스의 DMS 소스 엔드포인트에서 Neptune 대상 엔드포인트로 마이그레이션할 수 있습니다.

자세한 내용은 다음을 참조하십시오.

대상으로서 Amazon Neptune으로 마이그레이션 개요

AWS 대상으로 마이그레이션을 시작하기 전에 계정에 다음 리소스를 생성합니다.

  • 대상 엔드포인트에 대한 Neptune 클러스터.

  • 소스 엔드포인트에 대해 AWS DMS에서 지원하는 SQL 관계형 데이터베이스.

  • 대상 엔드포인트용 Amazon S3 버킷. Neptune 클러스터와 동일한 AWS 리전에 이 S3 버킷을 생성합니다. AWS DMS는 이 S3 버킷을 Neptune 데이터베이스에 대량 로드하는 대상 데이터에 대한 중간 파일 스토리지로 사용합니다. Amazon S3 버킷 생성에 관한 자세한 내용은 Amazon Simple Storage Service 사용 설명서버킷 생성 섹션을 참조하세요.

  • Neptune 클러스터와 동일한 VPC에 있는 S3에 대한 가상 프라이빗 클라우드(VPC) 엔드포인트.

  • IAM 정책을 포함하는 AWS Identity and Access Management(IAM) 역할. 이 정책은 대상 엔드포인트에 대한 S3 버킷에 GetObject, PutObject, DeleteObjectListObject 권한을 지정해야 합니다. 이 역할은 대상 S3 버킷과 Neptune 데이터베이스 모두에 대한 IAM 액세스 권한을 가진 AWS DMS 및 Neptune 모두에 위임됩니다. 자세한 내용은 Amazon Neptune에 대상으로 액세스하기 위한 IAM 서비스 역할 생성 섹션을 참조하세요.

이러한 리소스를 확보한 후 Neptune 대상으로의 마이그레이션을 설정하고 시작하는 방법은 콘솔 또는 DMS API를 사용하는 전체 로드 마이그레이션과 유사합니다. 그러나 Neptune 대상으로 마이그레이션하려면 몇 가지 고유한 단계가 필요합니다.

AWS DMS 관계형 데이터베이스를 Neptune으로 마이그레이션하려면
  1. 복제 인스턴스 생성에 설명된 대로 복제 인스턴스를 생성합니다.

  2. AWS DMS에서 소스 엔드포인트에 대해 지원하는 SQL 관계형 데이터베이스를 만들고 테스트합니다.

  3. Neptune 데이터베이스의 대상 엔드포인트를 만들고 테스트합니다.

    대상 엔드포인트를 Neptune 데이터베이스에 연결하려면 Neptune 클러스터 엔드포인트 또는 Neptune 라이터 인스턴스 엔드포인트에 대한 서버 이름을 지정합니다. 또한 AWS DMS에 대한 S3 버킷 폴더를 지정하여 대량 로드할 중간 파일을 Neptune 데이터베이스에 저장합니다.

    마이그레이션하는 동안 AWS DMS에서는 마이그레이션된 모든 대상 데이터를 사용자가 지정한 최대 파일 크기까지 이 S3 버킷 폴더에 저장합니다. 이 파일 스토리지가 최대 크기에 도달하면 AWS DMS는 저장된 S3 데이터를 대상 데이터베이스에 대량으로 로드합니다. 그러면 폴더를 지워서 이후에 대상 데이터베이스에 로드할 추가 대상 데이터를 저장할 수 있습니다. 이러한 설정 지정에 관한 자세한 내용은 대상으로서 Amazon Neptune에 대한 엔드포인트 설정 지정 단원을 참조하십시오.

  4. 1~3단계에서 만든 리소스를 사용하여 전체 로드 복제 작업을 생성한 후 다음을 수행합니다.

    1. 평소와 같이 작업 테이블 매핑을 사용하여 적절한 선택 및 변환 규칙을 사용하여 관계형 데이터베이스에서 마이그레이션할 특정 소스 스키마, 테이블 및 뷰를 식별합니다. 자세한 내용은 작업 설정을 지정하기 위한 테이블 매핑 사용 섹션을 참조하세요.

    2. 다음 중 하나를 선택하여 소스 테이블 및 뷰에서 대상 데이터베이스 그래프로의 매핑 규칙을 지정하여 Neptune 대상 매핑을 지정합니다.

      • Gremlin JSON — Gremlin JSON을 사용하여 Neptune 데이터베이스를 로드하는 방법에 관한 자세한 내용은 Amazon Neptune 사용 설명서Gremlin 로드 데이터 형식을 참조하세요.

      • SPARQL RDB에서 R2RML(Resource Description Framework Mapping Language)로 – SPARQL R2RML 사용에 관한 자세한 내용은 W3C 사양 R2RML: RDB-RDF 매핑 언어를 참조하십시오.

    3. 다음 중 하나를 수행하세요.

      • AWS DMS 콘솔을 사용하여 데이터베이스 마이그레이션 작업 생성 페이지의 그래프 매핑 규칙을 사용하여 그래프 매핑 옵션을 지정합니다.

      • AWS DMS API를 사용하면서 CreateReplicationTask API 직접 호출의 TaskData 요청 파라미터를 사용하여 이러한 옵션을 지정합니다.

      Gremlin JSON 및 SPARQL R2RML을 사용하여 그래프 매핑 규칙을 지정하는 방법에 관한 자세한 내용과 예제는 Amazon Neptune에 대한 Gremlin 및 R2RML을 대상으로 사용하여 그래프 매핑 규칙 지정 단원을 참조하십시오.

  5. 마이그레이션 작업에 대한 복제를 시작합니다.

대상으로서 Amazon Neptune에 대한 엔드포인트 설정 지정

대상 엔드포인트를 만들거나 수정하려면 콘솔이나 CreateEndpoint 또는 ModifyEndpoint API 작업을 사용할 수 있습니다.

AWS DMS 콘솔 내 Neptune 대상의 경우, 엔드포인트 생성 또는 엔드포인트 수정 콘솔 페이지에서 엔드포인트별 설정을 지정합니다. CreateEndpoint, ModifyEndpoint의 경우 NeptuneSettings 옵션에 대한 요청 파라미터를 지정합니다. 다음 예에서는 CLI를 사용하여 이 작업을 수행하는 방법을 보여줍니다.

dms create-endpoint --endpoint-identifier my-neptune-target-endpoint --endpoint-type target --engine-name neptune --server-name my-neptune-db.cluster-cspckvklbvgf.us-east-1.neptune.amazonaws.com --port 8192 --neptune-settings '{"ServiceAccessRoleArn":"arn:aws:iam::123456789012:role/myNeptuneRole", "S3BucketName":"my-bucket", "S3BucketFolder":"my-bucket-folder", "ErrorRetryDuration":57, "MaxFileSize":100, "MaxRetryCount": 10, "IAMAuthEnabled":false}‘

여기서 CLI --server-name 옵션은 Neptune 클러스터 라이터 엔드포인트의 서버 이름을 지정합니다. 또는 Neptune 라이터 인스턴스 엔드포인트에 대한 서버 이름을 지정할 수 있습니다.

--neptune-settings 옵션 요청 파라미터는 다음과 같습니다.

  • ServiceAccessRoleArn – (필수) Neptune 대상 엔드포인트에 대해 생성한 서비스 역할의 Amazon 리소스 이름(ARN)입니다. 자세한 내용은 Amazon Neptune에 대상으로 액세스하기 위한 IAM 서비스 역할 생성 섹션을 참조하세요.

  • S3BucketName – (필수) DMS가 마이그레이션된 그래프 데이터를 Neptune 대상 데이터베이스에 대량으로 로드하기 전에 .csv 파일에 임시로 저장할 수 있는 S3 버킷의 이름입니다. DMS는 이 .csv 파일에 저장하기 전에 SQL 소스 데이터를 그래프 데이터에 매핑합니다.

  • S3BucketFolder – (필수) DMS가 S3BucketName에 의해 지정된 S3 버킷에 마이그레이션된 그래프 데이터를 저장할 때 사용할 폴더 경로입니다.

  • ErrorRetryDuration – (옵션) DMS는 이 시간(밀리초) 동안 기다렸다가 마이그레이션된 그래프 데이터를 Neptune 대상 데이터베이스에 대량 로드하고자 재시도한 다음 오류를 발생시킵니다. 기본값은 250입니다.

  • MaxFileSize – (옵션) DMS가 Neptune 대상 데이터베이스에 데이터를 대량으로 로드하기 전에 .csv 파일에 저장되어 있던 마이그레이션된 그래프 데이터의 최대 크기(KB)입니다. 기본값은 1,048,576KB(1GB)입니다. 성공하면 DMS는 버킷을 지우고 마이그레이션된 그래프 데이터의 다음 배치를 저장할 준비가 됩니다.

  • MaxRetryCount – (옵션) DMS는 이 횟수만큼 Neptune 대상 데이터베이스로 마이그레이션된 그래프 데이터의 대량 로드를 재시도한 뒤에 오류를 발생시킵니다. 기본값은 5입니다.

  • IAMAuthEnabled – (옵션) 이 엔드포인트에 대해 IAM 권한 부여를 활성화하려면 이 파라미터를 true로 설정하고 ServiceAccessRoleArn에서 지정한 서비스 역할에 적절한 IAM 정책 문서를 연결합니다. 기본값은 false입니다.

Amazon Neptune에 대상으로 액세스하기 위한 IAM 서비스 역할 생성

Neptune에 대상으로 액세스하려면 IAM을 사용하여 서비스 역할을 만듭니다. Neptune 엔드포인트 구성에 따라 이 역할에 IAM 정책의 일부 또는 전부를 연결하고 다음에 설명된 문서를 신뢰합니다. Neptune 엔드포인트를 생성할 때 이 서비스 역할의 ARN을 제공합니다. 이렇게 하면 Neptune과 그에 연결된 Amazon S3 버킷 모두에 액세스할 수 있는 권한을 AWS DMS 및 Amazon Neptune이 수임할 수 있습니다.

Neptune 엔드포인트 구성에서 NeptuneSettingsIAMAuthEnabled 파라미터를 true로 설정한 경우, 다음과 같은 IAM 정책을 서비스 역할에 연결합니다. IAMAuthEnabledfalse로 설정하면 이 정책을 무시할 수 있습니다.

// Policy to access Neptune { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "neptune-db:*", "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-CLG7H7FHK54AZGHEH6MNS55JKM/*" } ] }

앞의 IAM 정책은 Resource에서 지정한 Neptune 대상 클러스터에 대한 전체 액세스를 허용합니다.

다음과 같은 IAM 정책을 서비스 역할에 연결합니다. 이 정책을 통해 DMS는 Neptune 대상 데이터베이스에 대량 로드하기 위해 생성한 S3 버킷에 마이그레이션된 그래프 데이터를 임시로 저장할 수 있습니다.

//Policy to access S3 bucket { "Version": "2012-10-17", "Statement": [{ "Sid": "ListObjectsInBucket0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::my-bucket" ] }, { "Sid": "AllObjectActions", "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::my-bucket/" ] }, { "Sid": "ListObjectsInBucket1", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/" ] } ] }

앞의 IAM 정책을 사용하면 계정에서 Neptune 대상에 대해 생성된 S3 버킷(arn:aws:s3:::my-bucket)의 콘텐츠를 쿼리할 수 있습니다. 또한 계정에서 모든 버킷 파일 및 폴더(arn:aws:s3:::my-bucket/)의 콘텐츠에 대해 완벽하게 작동할 수 있습니다.

신뢰 관계를 편집하고 다음 IAM 역할을 서비스 역할에 연결하여 AWS DMS 및 Amazon Neptune 데이터베이스 서비스가 역할을 수임할 수 있도록 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "neptune", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Neptune 대상 엔드포인트에 대해 이 서비스 역할을 지정하는 방법에 관한 자세한 내용은 대상으로서 Amazon Neptune에 대한 엔드포인트 설정 지정 단원을 참조하십시오.

Amazon Neptune에 대한 Gremlin 및 R2RML을 대상으로 사용하여 그래프 매핑 규칙 지정

생성하는 그래프 매핑 규칙은 SQL 관계형 데이터베이스 소스에서 추출된 데이터를 Neptune 데이터베이스 클러스터 대상으로 로드하는 방법을 지정합니다. 이러한 매핑 규칙의 형식은 규칙이 Apache TinkerPop Greglin을 사용하여 속성-그래프 데이터를 로드하는지 또는 R2RML을 사용하여 RDF(Resource Description Framework) 데이터를 로드하는지 여부에 따라 다릅니다. 다음에서는 이러한 형식에 대한 정보와 확인할 위치를 찾을 수 있습니다.

콘솔 또는 DMS API를 사용하여 마이그레이션 작업을 생성할 때 이러한 매핑 규칙을 지정할 수 있습니다.

콘솔을 사용하면서 데이터베이스 마이그레이션 작업 생성 페이지의 그래프 매핑 규칙을 사용하여 이러한 그래프 매핑 규칙을 지정합니다. 그래프 매핑 규칙에서 제공된 편집기를 사용하여 매핑 규칙을 직접 입력하고 편집할 수 있습니다. 또는 적절한 그래프 매핑 형식으로 매핑 규칙이 포함된 파일을 찾아볼 수 있습니다.

API를 사용하여 CreateReplicationTask API 직접 호출의 TaskData 요청 파라미터를 사용하여 이러한 옵션을 지정합니다. 적절한 그래프 매핑 형식의 매핑 규칙이 포함된 파일의 경로로 TaskData를 설정합니다.

Gremlin을 사용하여 속성-그래프 데이터를 생성하기 위한 그래프 매핑 규칙

Gremlin을 사용하여 속성-그래프 데이터를 생성하고 소스 데이터에서 생성할 각 그래프 엔터티에 대한 매핑 규칙이 있는 JSON 객체를 지정합니다. 이 JSON의 형식은 특별히 Amazon Neptune 대량 로드를 위해 정의됩니다. 다음 템플릿에서는 이 객체의 각 규칙이 어떻게 표시되는지 보여줍니다.

{ "rules": [ { "rule_id": "(an identifier for this rule)", "rule_name": "(a name for this rule)", "table_name": "(the name of the table or view being loaded)", "vertex_definitions": [ { "vertex_id_template": "{col1}", "vertex_label": "(the vertex to create)", "vertex_definition_id": "(an identifier for this vertex)", "vertex_properties": [ { "property_name": "(name of the property)", "property_value_template": "{col2} or text", "property_value_type": "(data type of the property)" } ] } ] }, { "rule_id": "(an identifier for this rule)", "rule_name": "(a name for this rule)", "table_name": "(the name of the table or view being loaded)", "edge_definitions": [ { "from_vertex": { "vertex_id_template": "{col1}", "vertex_definition_id": "(an identifier for the vertex referenced above)" }, "to_vertex": { "vertex_id_template": "{col3}", "vertex_definition_id": "(an identifier for the vertex referenced above)" }, "edge_id_template": { "label": "(the edge label to add)", "template": "{col1}_{col3}" }, "edge_properties":[ { "property_name": "(the property to add)", "property_value_template": "{col4} or text", "property_value_type": "(data type like String, int, double)" } ] } ] } ] }

버텍스 레이블이 있으면 여기에 버텍스가 만들어지고 있음을 의미합니다. 없는 경우, 버텍스가 다른 소스에 의해 생성된다는 것을 의미하며 이 정의는 버텍스 속성만 추가하는 것입니다. 전체 관계형 데이터베이스 소스에 대한 매핑을 지정하는 데 필요한 만큼 버텍스 및 엣지 정의를 지정합니다.

employee 테이블에 대한 샘플 규칙은 다음과 같습니다.

{ "rules": [ { "rule_id": "1", "rule_name": "vertex_mapping_rule_from_nodes", "table_name": "nodes", "vertex_definitions": [ { "vertex_id_template": "{emp_id}", "vertex_label": "employee", "vertex_definition_id": "1", "vertex_properties": [ { "property_name": "name", "property_value_template": "{emp_name}", "property_value_type": "String" } ] } ] }, { "rule_id": "2", "rule_name": "edge_mapping_rule_from_emp", "table_name": "nodes", "edge_definitions": [ { "from_vertex": { "vertex_id_template": "{emp_id}", "vertex_definition_id": "1" }, "to_vertex": { "vertex_id_template": "{mgr_id}", "vertex_definition_id": "1" }, "edge_id_template": { "label": "reportsTo", "template": "{emp_id}_{mgr_id}" }, "edge_properties":[ { "property_name": "team", "property_value_template": "{team}", "property_value_type": "String" } ] } ] } ] }

여기서, 버텍스 및 엣지 정의는 직원 ID(EmpID)의 employee 노드와 관리자 ID(managerId)의 employee 노드에서 보고 관계를 매핑합니다.

Gremlin JSON을 사용하여 그래프 매핑 규칙을 생성하는 방법에 관한 자세한 내용은 Amazon Neptune 사용 설명서Gremlin 로드 데이터 형식을 참조하십시오.

RDF/SPARQL 데이터 생성을 위한 그래프 매핑 규칙

SPARQL을 사용하여 쿼리할 RDF 데이터를 로드하는 경우 R2RML로 그래프 매핑 규칙을 작성합니다. R2RML은 RDF에 관계형 데이터를 매핑하기 위한 표준 W3C 언어입니다. R2RML 파일에서 triples 맵(예: 다음 <#TriplesMap1>)은 논리 테이블의 각 행을 0개 이상의 RDF triples로 변환하는 규칙을 지정합니다. 주제 맵(예: 다음 rr:subjectMap)은 트리플 맵에 의해 생성된 RDF triples의 주제를 생성하기 위한 규칙을 지정합니다. 조건자-객체 맵(예: 다음 rr:predicateObjectMap)은 논리 테이블의 각 논리 테이블 행에 대해 하나 이상의 조건자-객체 쌍을 만드는 함수입니다.

nodes 테이블에 대한 간단한 예는 다음과 같습니다.

@prefix rr: <http://www.w3.org/ns/r2rml#>. @prefix ex: <http://example.com/ns#>. <#TriplesMap1> rr:logicalTable [ rr:tableName "nodes" ]; rr:subjectMap [ rr:template "http://data.example.com/employee/{id}"; rr:class ex:Employee; ]; rr:predicateObjectMap [ rr:predicate ex:name; rr:objectMap [ rr:column "label" ]; ]

앞의 예에서 매핑은 직원 테이블에서 매핑된 그래프 노드를 정의합니다.

Student 테이블에 대한 또 다른 간단한 예는 다음과 같습니다.

@prefix rr: <http://www.w3.org/ns/r2rml#>. @prefix ex: <http://example.com/#>. @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix xsd: <http://www.w3.org/2001/XMLSchema#>. <#TriplesMap2> rr:logicalTable [ rr:tableName "Student" ]; rr:subjectMap [ rr:template "http://example.com/{ID}{Name}"; rr:class foaf:Person ]; rr:predicateObjectMap [ rr:predicate ex:id ; rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ] ]; rr:predicateObjectMap [ rr:predicate foaf:name ; rr:objectMap [ rr:column "Name" ] ].

앞의 예에서 매핑은 Student 테이블의 사람 사이의 친구 관계를 매핑하는 그래프 노드를 정의합니다.

SPARQL R2RML을 사용하여 그래프 매핑 규칙을 생성하는 방법에 관한 자세한 내용은 W3C 사양 R2RML: RDB-RDF 매핑 언어를 참조하십시오.

대상으로서 Amazon Neptune으로 Gremlin 및 R2RML을 마이그레이션하기 위한 데이터 형식

AWS DMS는 두 가지 방법 중 하나로 SQL 소스 엔드포인트에서 Neptune 대상으로 데이터 형식 매핑을 수행합니다. 사용하는 방법은 Neptune 데이터베이스를 로드하는 데 사용하는 그래프 매핑 형식에 따라 다릅니다.

  • Apache TinkerPop Gremlin, 마이그레이션 데이터의 JSON 표현을 사용.

  • W3C의 SPARQL, 마이그레이션 데이터의 R2RML 표현을 사용.

이러한 두 그래프 매핑 형식에 관한 자세한 내용은 Amazon Neptune에 대한 Gremlin 및 R2RML을 대상으로 사용하여 그래프 매핑 규칙 지정 단원을 참조하십시오.

다음에서는 각 형식에 대한 데이터 형식 매핑에 대한 설명을 찾을 수 있습니다.

SQL 소스를 Gremlin 대상 데이터 형식 매핑으로

다음 표에서는 SQL 소스에서 Gremlin 형식 대상으로의 데이터 형식 매핑을 보여줍니다.

AWS DMS는 나열되지 않은 SQL 소스 데이터 형식을 Gremlin String에 매핑합니다.

SQL 소스 데이터 형식

Gremlin 대상 데이터 형식

NUMERIC(및 변형) Double
DECIMAL
TINYINT Byte
SMALLINT Short
INT, INTEGER Int
BIGINT Long
FLOAT Float
DOUBLE PRECISION
REAL Double
BIT Boolean
BOOLEAN
DATE Date
TIME
TIMESTAMP
CHARACTER(및 변형) String

Neptune을 로드하기 위한 Gremlin 데이터 형식에 관한 자세한 내용은 Neptune 사용 설명서Gremlin 데이터 형식을 참조하십시오.

SQL 소스를 R2RML(RDF) 대상 데이터 형식 매핑으로

다음 표에서는 SQL 소스에서 R2RML 형식 대상으로의 데이터 형식 매핑을 보여줍니다.

나열된 모든 RDF 데이터 형식은 RDF 리터럴을 제외하고 대소문자를 구분합니다. AWS DMS는 나열되지 않은 SQL 소스 데이터 형식을 RDF 리터럴에 매핑합니다.

RDF 리터럴은 다양한 리터럴 어휘 형태와 데이터 형식 중 하나입니다. 자세한 내용은 W3C 사양 리소스 설명 프레임워크 (RDF): 개념 및 추상 구문RDF 리터럴을 참조하십시오.

SQL 소스 데이터 형식

R2RML(RDF) 대상 데이터 형식

BINARY(및 변형) xsd:hexBinary
NUMERIC(및 변형) xsd:decimal
DECIMAL
TINYINT xsd:integer
SMALLINT
INT, INTEGER
BIGINT
FLOAT xsd:double
DOUBLE PRECISION
REAL
BIT xsd:boolean
BOOLEAN
DATE xsd:date
TIME xsd:time
TIMESTAMP xsd:dateTime
CHARACTER(및 변형) RDF 리터럴

Neptune을 로드하기 위한 RDF 데이터 형식 및 SQL 소스 데이터 형식으로의 매핑에 관한 자세한 내용은 W3C 사양 R2RML: RDB에서 RDF로 매핑 언어데이터 형식 변환을 참조하십시오.

Amazon Neptune을 대상으로 사용 시 제한 사항

Neptune을 대상으로 사용할 때에는 다음 제한 사항이 적용됩니다.

  • AWS DMS는 현재 Neptune 대상으로의 마이그레이션에 대해서만 전체 로드 작업을 지원합니다. Neptune 대상으로의 CDC(데이터 캡처 변경) 마이그레이션은 지원되지 않습니다.

  • 다음 예와 같이 마이그레이션 작업을 시작하기 전에 대상 Neptune 데이터베이스에서 모든 데이터를 수동으로 지워야 합니다.

    그래프 내의 모든 데이터(버텍스 및 엣지)를 삭제하려면 다음 Gremlin 명령을 실행합니다.

    gremlin> g.V().drop().iterate()

    'customer' 레이블이 있는 버텍스를 삭제하려면 다음 Gremlin 명령을 실행합니다.

    gremlin> g.V().hasLabel('customer').drop()
    참고

    대용량 데이터 세트를 삭제하려면 약간의 시간이 걸릴 수 있습니다. 필요하다면 제한을 두어 drop()을 반복할 수도 있습니다(예: limit(1000)).

    'rated' 레이블이 있는 엣지를 삭제하려면 다음 Gremlin 명령을 실행합니다.

    gremlin> g.E().hasLabel('rated').drop()
    참고

    대용량 데이터 세트를 삭제하려면 약간의 시간이 걸릴 수 있습니다. 필요하다면 제한을 두어 drop()을 반복할 수도 있습니다(예: limit(1000)).

  • DMS API 연산 DescribeTableStatistics는 Neptune 그래프 데이터 구조의 속성으로 인해 주어진 테이블에 관한 부정확한 결과를 반환할 수 있습니다.

    마이그레이션하는 동안 AWS DMS에서는 각 소스 테이블을 스캔하고 그래프 매핑을 사용하여 소스 데이터를 Neptune 그래프로 변환합니다. 변환된 데이터는 먼저 대상 엔드포인트에 지정된 S3 버킷 폴더에 저장됩니다. 소스가 검색되고 이 중간 S3 데이터가 성공적으로 생성되면 DescribeTableStatistics는 데이터가 Neptune 대상 데이터베이스에 성공적으로 로드되었다고 가정합니다. 그러나 이것이 항상 사실인 것은 아닙니다. 지정된 테이블에 대해 데이터가 올바르게 로드되었는지 확인하려면 해당 테이블에 대한 마이그레이션의 양측에서 count() 반환 값을 비교합니다.

    다음 예에서는 AWS DMS가 소스 데이터베이스에서 customer 테이블을 로드했습니다. 여기에서 대상 Neptune 데이터베이스 그래프에 'customer' 레이블이 지정됩니다. 그러면 이 레이블이 대상 데이터베이스에 확실하게 기록됩니다. 이렇게 하려면 소스 데이터베이스에서 사용할 수 있는 customer 행 수를 작업이 완료된 후 Neptune 대상 데이터베이스에 로드된 'customer' 레이블이 지정된 행 수와 비교합니다.

    SQL을 사용하여 소스 데이터베이스에서 사용 가능한 고객 행 수를 가져오려면 다음을 실행합니다.

    select count(*) from customer;

    Gremlin을 사용하여 대상 데이터베이스 그래프에 로드된 'customer' 레이블이 지정된 행 수를 얻으려면 다음을 실행하십시오.

    gremlin> g.V().hasLabel('customer').count()
  • 현재 단일 테이블이 로드되지 않으면 전체 작업이 실패합니다. 관계형 데이터베이스 대상과는 달리 Neptune의 데이터는 고도로 연결되어 있으므로 대부분의 경우 작업을 다시 시작할 수 없습니다. 이러한 유형의 데이터 로드 실패로 인해 작업을 성공적으로 재개할 수 없는 경우, 로드하지 못한 테이블을 로드하는 새 작업을 생성합니다. 이 새 작업을 실행하기 전에 Neptune 대상에서 부분적으로 로드된 테이블을 수동으로 지웁니다.

    참고

    장애를 복구할 수 있는 경우(예: 네트워크 전송 오류) Neptune 대상으로의 마이그레이션에 실패한 작업을 재개할 수 있습니다.

  • AWS DMS는 R2RML에 대한 대부분의 표준을 지원합니다. 그러나 AWS DMS에서는 역 표현식, 조인 및 뷰를 비롯한 특정 R2RML 표준을 지원하지 않습니다. R2RML 뷰의 차선책은 소스 데이터베이스에 해당 사용자 지정 SQL 뷰를 만드는 것입니다. 마이그레이션 작업에서 테이블 매핑을 사용하여 뷰를 입력으로 선택합니다. 그런 다음, 테이블에 뷰를 매핑하면 R2RML이 이를 사용하여 그래프 데이터를 생성합니다.

  • 지원되지 않는 SQL 데이터 형식을 사용하여 소스 데이터를 마이그레이션하면 결과 대상 데이터의 정밀도가 손실될 수 있습니다. 자세한 내용은 대상으로서 Amazon Neptune으로 Gremlin 및 R2RML을 마이그레이션하기 위한 데이터 형식 섹션을 참조하세요.

  • AWS DMS는 LOB 데이터를 Neptune 대상으로 마이그레이션하는 것을 지원하지 않습니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2024, Amazon Web Services, Inc. 또는 계열사. All rights reserved.