AWS Database Migration Service のターゲットとしての Amazon Neptune の使用 - AWS Database Migration Service

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

AWS Database Migration Service のターゲットとしての Amazon Neptune の使用

Amazon Neptune は、高速で信頼性の高い、完全マネージド型のグラフデータベースサービスであり、高度に接続されたデータセットを扱うアプリケーションの構築と実行が容易になります。Neptune の中核は、専用の高パフォーマンスなグラフデータベースエンジンです。このエンジンは、何十億ものリレーションシップを保存し、ミリ秒のレイテンシーでグラフをクエリするように最適化されています。Neptune は、一般的なグラフクエリ言語 Apache TinkerPop Gremlin と W3C の SPARQL をサポートしています。詳細については、 Amazon Neptune、を参照 内容 Amazon Neptune?アマゾン Neptune ユーザーガイド

Neptune などのグラフデータベースがなければ、リレーショナルデータベースで高接続データをモデル化している可能性があります。データに動的接続がある可能性があるため、このようなデータソースを使用するアプリケーションは SQL で接続されたデータクエリをモデル化する必要があります。この方法では、グラフクエリを SQL に変換するために余分なレイヤーを記述する必要があります。また、リレーショナルデータベースにはスキーマの剛性があります。接続を変更するスキーマのすべての変更には、新しいスキーマをサポートするために、ダウンタイムおよびクエリ変換の追加メンテナンスが必要になります。アプリケーションの設計時に考慮すべき別の大きな制約は、クエリのパフォーマンスです。

グラフデータベースは、このような状況を大幅に簡素化することができます。スキーマから解放され、豊富なグラフクエリレイヤー (Gremlin または SPARQL) とグラフクエリ用に最適化されたインデックスにより、柔軟性とパフォーマンスが向上します。Amazon Neptune グラフデータベースには、保存時の暗号化、安全な認証レイヤー、デフォルトバックアップ、マルチ AZ サポート、リードレプリカサポートなどのエンタープライズ機能もあります。

AWS DMS を使用すると、高度に接続されたグラフをモデル化するリレーショナルデータを、サポートされている任意の SQL データベースの DMS ソースエンドポイントから Neptune ターゲットエンドポイントに移行できます。

詳細については、以下を参照してください。

ターゲットとしての Amazon Neptune への移行の概要

Neptune ターゲットへの移行を開始する前に、AWS アカウントに次のリソースを作成します。

  • ターゲットエンドポイントの Neptune クラスター。

  • AWS DMS でサポートされるソースエンドポイントの SQL リレーショナルデータベース。

  • ターゲットエンドポイントの Amazon S3 バケット。Neptune クラスターと同じ AWS リージョンにこの S3 バケットを作成します。AWS DMS は、この S3 バケットを Neptune データベースに一括ロードするターゲットデータの中間ファイルストレージとして使用します。S3バケットの作成についての詳細は、「 バケットの作成Amazon Simple Storage Service 入門ガイド.

  • Neptune クラスターと同じ VPC 内の S3 の Virtual Private Cloud (VPC) エンドポイント。

  • IAM ポリシーを含む AWS Identity and Access Management (IAM) ロール。このポリシーでは、ターゲットエンドポイントの S3 バケットに対する、GetObjectPutObjectDeleteObject および ListObject アクセス許可を指定する必要があります。このロールは AWS DMS と、ターゲット S3 バケットと Neptune データベースの両方への IAM アクセスのある、Neptune の両方によって引き継がれます。詳細については、ターゲットとして Amazon Neptune にアクセスするための IAM サービスロールの作成 を参照してください。

これらのリソースを取得したら、Neptune ターゲットへの移行の設定と開始は、コンソールまたは DMS API を使用した全ロードの移行と同様です。ただし、Neptune ターゲットへの移行には固有のステップが必要です。

AWS DMS リレーショナルデータベースの Neptune への移行

  1. レプリケーションインスタンスの作成 の説明に従って、レプリケーションインスタンスを作成します。

  2. AWS DMS でサポートされるソースエンドポイントの SQL リレーショナルデータベースを作成し、テストします。

  3. Neptune データベースのターゲットエンドポイントを作成してテストします。

    ターゲットエンドポイントを Neptune データベースに接続するには、Neptune クラスターエンドポイントまたは Neptune ライターインスタンスエンドポイントのサーバー名を指定します。また、Neptune データベースに一括ロードするための中間ファイルを保存するために、AWS DMS の S3 バケットフォルダを指定します。

    移行中、AWS DMS は、指定した最大ファイルサイズまで、移行されたすべてのターゲットデータをこの S3 バケットフォルダに保存します。このファイルストレージが最大サイズに達すると、保存された S3 データが AWS DMS によりターゲットデータベースに一括ロードされます。フォルダをクリアして、後でターゲットデータベースにロードするために、追加ターゲットデータの保存を有効にします。これらの設定の指定の詳細については、「ターゲットとしての Amazon Neptune エンドポイント設定の指定」を参照してください。

  4. ステップ 1~3 で作成したリソースを使用して全ロードのレプリケーションタスクを作成し、以下を実行します。

    1. 通常のタスクテーブルマッピングを使用して、適切な選択ルールと変換ルールを使用して、リレーショナルデータベースから移行する特定のソーススキーマ、テーブルおよびビューを指定します。詳細については、テーブルマッピングを使用して、タスクの設定を指定する を参照してください。

    2. 次のいずれかを選択して、ターゲットマッピングを指定します。ソーステーブルおよびビューから Neptune ターゲットデータベースグラフへのマッピングルールを指定します。

      • グレムリンJSON – Gremlin JSONを使用して Neptune データベース、を参照 Gremlinロードデータ形式アマゾン Neptune ユーザーガイド.

      • SPARQL RDBからリソース説明フレームワークマッピング言語(R2RML) – 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 オペレーションを使用します。

について Neptune ターゲット( AWS DMS コンソール、指定 エンドポイント固有の設定 上の エンドポイントの作成 または エンドポイントの変更 コンソールページ。CreateEndpointModifyEndpoint に、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,576 KB (1 GB) です。成功すると、DMS はバケットをクリアし、移行されたグラフデータの次のバッチを保存する準備が整います。

  • MaxRetryCount – (オプション) エラーを発生させる前に、DMS が移行されたグラフデータの Neptune ターゲットデータベースへの一括ロードを再試行する回数。デフォルトは 5 です。

  • IAMAuthEnabled – (オプション)このエンドポイントに対してIAM認証を有効にする場合は、このパラメータを true 適切なIAMポリシー文書を、 ServiceAccessRoleArn。 デフォルトは false.

ターゲットとして Amazon Neptune にアクセスするための IAM サービスロールの作成

ターゲットとして Neptune にアクセスするには、IAM を使用してサービスロールを作成します。Neptune エンドポイントの設定に応じて、以下で説明する IAM ポリシーと信頼ドキュメントの一部またはすべてをこのロールにアタッチします。Neptune エンドポイントを作成するときに、このサービスロールの ARN を指定します。これにより AWS DMS および Amazon Neptune は、Neptune と関連付けられた Amazon S3 バケットの両方にアクセスするためのアクセス許可を引き受けることができます。

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 Gremlin を使用してプロパティグラフデータをロードするか、R2RML を使用してリソース記述フレームワーク (RDF) データをロードするかによって異なります。以下で、これらの形式に関する情報と詳細を確認できます。

これらのマッピングルールは、コンソールまたは 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 を使用したグラフマッピングルールの作成の詳細については、以下を参照してください。 Gremlinロードデータ形式アマゾン Neptune ユーザーガイド.

RDF/SPARQL データ生成のためのグラフマッピングルール

SPARQL を使用してクエリする RDF データをロードする場合は、R2RML にグラフマッピングルールを記述します。R2RML は、リレーショナルデータを RDF にマッピングするための標準の W3C 言語です。R2RML ファイルで、トリプルマップ (以下の <#TriplesMap1> など) は、論理テーブルの各行を 0 個以上の RDF トリプルに変換するルールを指定します。サブジェクトマップ (以下の rr:subjectMap のいずれか) は、トリプルマップによって生成された RDF トリプルのサブジェクトを生成するためのルールを指定します。述語オブジェクトマップ (以下の rr:predicateObjectMap のいずれか) は、論理テーブルの論理テーブル行ごとに 1 つ以上の述語オブジェクトのペアを作成する関数です。

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 ターゲットへのデータ型マッピングを 2 つの方法のいずれかで実行します。どちらの方法を使用するかは、Neptune データベースのロードに使用しているグラフマッピング形式によって異なります。

  • 移行データの JSON 形式を使用する、Apache TinkerPop Gremlin。

  • 移行データの R2RML 形式を使用する W3C の SPARQL。

これら 2 つのグラフマッピング形式の詳細については、「ターゲットとしての 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

ロードする Glemlin データタイプの詳細については、 Neptune、を参照 GremlinデータタイプNeptune ユーザーガイド.

SQL ソースから R2RML (RDF) ターゲットへのデータ型マッピング

次の表に、SQL ソースから R2RML 形式のターゲットへのデータ型マッピングを示します。

リストされているすべての RDF データ型は、RDF リテラルを除き、大文字と小文字が区別されます。AWS DMS は、リストされていない SQL ソースデータ型を RDF リテラルにマッピングします。

RDF リテラルは、さまざまなリテラル辞書形式およびデータ型の 1 つです。詳細については、以下を参照してください。 RDFリテラル W3C仕様で リソース説明フレームワーク(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 リテラル

ロードするRDFデータ・タイプの詳細については、 Neptune 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()
    注記

    大きなデータセットをドロップするには時間がかかる場合があります。limit(1000) などの制限を使用して、drop() を反復処理することができます。

    'rated' ラベルのあるエッジをドロップするには、以下の Gremlin コマンドを実行します。

    gremlin> g.E().hasLabel('rated').drop()
    注記

    大きなデータセットをドロップするには時間がかかる場合があります。limit(1000) などの制限を使用して、drop() を反復処理することができます。

  • DMS API オペレーション DescribeTableStatistics は、Neptune グラフデータ構造の性質上、特定のテーブルについて不正確な結果を返すことがあります。

    移行中に、AWS DMS は各ソーステーブルをスキャンし、グラフマッピングを使用してソースデータを Neptune グラフに変換します。変換されたデータは、まずターゲットエンドポイントに指定された S3 バケットフォルダに保存されます。ソースがスキャンされ、この中間の S3 データが正常に生成された場合、DescribeTableStatistics はデータが Neptune ターゲットデータベースに正常にロードされたと見なします。しかし、これは常に正しいとは限りません。特定のテーブルのデータが正しくロードされたことを確認するには、そのテーブルの移行の両端の count() の戻り値を比較します。

    次の例では、AWS DMS がソースデータベースから customer テーブルをロードしています。このテーブルには、ターゲット Neptune データベースグラフのラベル 'customer' が割り当てられています。このラベルがターゲットデータベースに書き込まれることを確認できます。これを行うには、ソースデータベースから使用可能な customer 行の数と、タスクの完了後に Neptune ターゲットデータベースにロードされた 'customer' ラベル付きの行の数を比較します。

    SQL を使用してソースデータベースから使用可能な customer 行の数を取得するには、次のコマンドを実行します。

    select count(*) from customer;

    Gremlin を使用してターゲットデータベースグラフにロードされた 'customer' ラベル付きの行の数を取得するには、次のコマンドを実行します。

    gremlin> g.V().hasLabel('customer').count()
  • 現在、1 つのテーブルの読み込みに失敗すると、タスク全体が失敗します。リレーショナルデータベースターゲットとは異なり、Neptune のデータは高度に接続されているため、多くの場合、タスクを再開することは不可能です。このタイプのデータロードの失敗のためにタスクが正常に再開できない場合は、ロードに失敗したテーブルをロードする新しいタスクを作成します。この新しいタスクを実行する前に、部分的にロードされたテーブルを Neptune ターゲットから手動でクリアします。

    注記

    失敗が回復可能な場合 (ネットワーク転送エラーなど)、Neptune ターゲットへの移行に失敗したタスクを再開できます。

  • AWS DMS は、ほとんどの R2RML の標準をサポートしています。ただし、AWS DMS は、Inverse 式、結合、ビューなど、特定の R2RML 標準をサポートしていません。R2RML ビューの回避策は、ソースデータベースに対応するカスタム SQL ビューを作成することです。移行タスクで、テーブルマッピングを使用してビューを入力として選択します。次に、ビューをテーブルにマップすると、R2RML によって消費され、グラフデータが生成されます。

  • サポートされていない SQL データ型を使用してソースデータを移行すると、結果のターゲットデータの精度が低下する可能性があります。詳細については、ターゲットとしての Amazon Neptune への Gremlin および R2RML 移行のデータ型 を参照してください。