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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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 への移行の概要

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

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

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

  • ターゲットエンドポイントの Amazon S3 バケット。同じ S3 バケットを作成します。AWSNeptune クラスターとしてのリージョン。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と Neptune は、ターゲット S3 バケットと Neptune データベースの両方への IAM アクセスを持つ Neptune です。詳細については、「ターゲットとして Amazon Neptune にアクセスするための IAM サービスロールの作成」を参照してください。

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

を移行するにはAWS DMSNeptune へのリレーショナルデータベース

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

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

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

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

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

  4. 手順 1 ~ 3 で作成したリソースを使用してフルロードレプリケーションタスクを作成し、次の手順を実行します。

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

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

      • Gremlin JSON — Gremlin JSON を使用して Neptune データベースをロードする方法については、を参照してください。Gremlin ロードデータ形式Amazon Neptune ユーザーガイド

      • SPARQL RDB からリソース記述フレームワークマッピング言語 (R2RML) — SPARQL R2RML の使用方法については、W3C 仕様を参照してください。R2RML: RDB から RDF へのマッピング言語

    3. 以下の いずれかを 実行します。

      • の使用AWS DMSコンソール、を使用してグラフマッピングオプションを指定します。グラフマッピングのルールデータベース移行タスクの作成ページで.

      • AWS DMS API を使用して、CreateReplicationTask API コールの TaskData リクエストパラメータを使用してこれらのオプションを指定します。

      Gremlin JSON および SPARQL R2RML を使用してグラフマッピングルールを指定する方法の詳細と例については、「ターゲットとしての用の 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 がによって指定された S3 バケットに移行されたグラフデータを保存するフォルダパス。S3BucketName

  • 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 バケットの両方にアクセスするためのアクセス許可を引き受けることができます。

設定するとIAMAuthEnabledのパラメータNeptuneSettingstrueNeptune エンドポイント設定で、サービスロールに次のような 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 ポリシーは、によって指定された Neptune ターゲットクラスターへのフルアクセスを許可します。Resource

サービスロールに次のような 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 ポリシーでは、S3 バケットの内容をアカウントからクエリできます (arn:aws:s3:::my-bucket) はNeptune ターゲット用に作成されました。また、アカウントはすべてのバケットファイルとフォルダ (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 のエンドポイント設定の指定

ターゲットとしての用の 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 ロードデータ形式Amazon 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 つのグラフマッピング形式の詳細については、「ターゲットとしての用の 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 データ型の詳細については、「」を参照してください。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 リテラル

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()
    注記

    大きなデータセットをドロップするには時間がかかる場合があります。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ラベルが割り当てられているソースデータベースのテーブル'customer'ターゲットNeptune データベースグラフです。このラベルがターゲットデータベースに書き込まれることを確認できます。これを行うには、次の数を比較します。customerソースデータベースから使用可能な行。'customer'タスクの完了後に Neptune ターゲットデータベースにロードされたラベル付き行。

    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 移行のデータ型」を参照してください。

  • AWS DMSでは、LOB データを Neptune ターゲットに移行することはサポートされていません。