翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Database Migration Service のターゲットとしての Amazon Neptune の使用
Amazon Neptune は、高速で信頼性に優れたフルマネージド型のグラフデータベースサービスです。Amazon Neptune を使用すると、高度に接続されたデータセットを使用するアプリケーションを容易に構築して実行できます。Neptune の中核をなすのは、専用の高パフォーマンスグラフデータベースエンジンです。このエンジンは、数 10 億の関係を保存し、ミリ秒のレイテンシーでグラフをクエリするために最適化されています。Neptune は、人気の高いグラフクエリ言語 Apache TinkerPop Gremlin と W3C の SPARQL をサポートしています。Amazon Neptune の詳細については、「Amazon Neptune ユーザーガイド」の「What is Amazon Neptune?」を参照してください。
Neptune のようなグラフデータベースを使用しない場合、リレーショナルデータベースで高度に接続されたデータをモデル化することになります。データには動的接続がある可能性があるため、そのようなデータソースを使用するアプリケーションは、接続されたデータクエリを SQL でモデル化する必要があります。この方法の場合、グラフクエリの SQL への変換に追加のレイヤーを構築する必要があります。また、リレーショナルデータベースは、スキーマが柔軟でないという点があります。接続をモデル変更するためにスキーマを変更すると、新しいスキーマをサポートするためにダウンタイムとクエリ変換の追加のメンテナンスが必要になります。クエリのパフォーマンスも、アプリケーションの設計の際に考慮すべき大きな制約です。
グラフデータベースを使用すると、このような状況が大幅に簡素化されます。スキーマが不要なため、豊富なグラフクエリレイヤー (Gremlin または SPARQL) とグラフクエリ向けに最適化されたインデックスにより、柔軟性とパフォーマンスが向上します。Amazon Neptune グラフデータベースは、保存時の暗号化、安全な認証レイヤー、デフォルトのバックアップ、マルチ AZ サポート、リードレプリカのサポートなどのエンタープライズ向け機能も提供します。
AWS DMS を使用すると、高度に接続されたグラフをモデル化するリレーショナルデータを、サポートされている任意の SQL データベースの DMS ソースエンドポイントから Neptune ターゲットエンドポイントに移行できます。
詳細については、次を参照してください。
トピック
ターゲットとしての Amazon Neptune への移行の概要
Neptune ターゲットへの移行を開始する前に、AWS アカウントに次のリソースを作成します。
-
ターゲットエンドポイントの Neptune クラスター
-
ソースエンドポイント用の AWS DMS がサポートする SQL リレーショナルデータベース
-
ターゲットエンドポイントの Amazon S3 バケット。この S3 バケットは Neptune クラスターと同じ AWS リージョンに作成します。AWS DMS は、この S3 バケットを、Neptuneデータベースに一括ロードするターゲットデータの中間ファイル ストレージとして使用します。S3 バケットの作成の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットを作成する」を参照。
-
Neptune クラスターと同じ VPC 内の S3 の 仮想プライベートクラウド (VPC) エンドポイント
-
IAM ポリシーを持つ AWS Identity and Access Management (IAM) ロール。このポリシーでは、ターゲットエンドポイントの S3 バケットに対する、
GetObject
、PutObject
、DeleteObject
、ListObject
アクセス許可を指定する必要があります。このロールは、ターゲットS3 バケットと Neptuneデータベースの両方への IAM アクセスを持つ AWS DMS と Neptune の両方で引き受けられます。詳細については、「Amazon Neptune にターゲットとしてアクセスするための IAM サービスロールの作成」を参照してください。
上記のリソースを取得した後、Neptune ターゲットへの移行のセットアップと開始は、コンソールまたは DMS API を使用したフルロード移行と同様です。ただし、Neptune ターゲットへの移行にはいくつか独自のステップが必要です。
AWS DMS リレーショナルデータベースを Neptune に移行するには
-
「レプリケーション インスタンスの作成」の説明に従って、レプリケーションインスタンスを作成します。
-
AWS DMS でサポートされるソースエンドポイントの SQL リレーショナルデータベースを作成して、テストします。
-
Neptune データベースのターゲットエンドポイントを作成してテストします。
ターゲットエンドポイントを Neptuneデータベースに接続するには、 Neptune クラスターエンドポイントまたは Neptune ライターインスタンスエンドポイントのサーバー名を指定します。また、Neptune データベースに一括ロードする際の中間ファイルを保存するために、AWS DMS の S3 バケットフォルダも指定します。
移行中、AWS DMS は、指定した最大ファイルサイズに達するまで、移行するすべてのターゲットデータをこの S3 バケットフォルダに保存します。このファイルストレージが最大サイズに達すると、AWS DMS は保存した S3 データをターゲットデータベースに一括ロードします。DMS はフォルダを消去して、後でターゲットデータベースにロードするために、追加のターゲットデータの保存を有効にします。上記の設定の指定の詳細については、「ターゲットとしての Amazon Neptune のエンドポイント設定の指定」を参照してください。
-
ステップ 1~ 3 で作成したリソースを使用してフルロードレプリケーションタスクを作成し、次を実行します。
-
通常のタスクテーブルマッピングを使用して、適切な選択ルールと変換ルールでリレーショナルデータベースから移行する特定のソーススキーマ、テーブルおよびビューを指定します。詳細については、「テーブルマッピングを使用して、タスクの設定を指定する」を参照してください。
-
次のいずれかを選択してターゲットマッピングを指定し、ソーステーブルとビューから Neptune ターゲットデータベースグラフへのマッピングルールを指定します。
-
Gremlin JSON – Gremlin JSON を使用して Neptune データベースをロードする方法については、「Amazon Neptune ユーザーガイド」の「Gremlin load data format」を参照してください。
-
SPARQL RDB からリソース記述フレームワークへのマッピング言語 (R2RML) – SPARQL R2RML の使用方法については、W3C 仕様「R2RML: RDB to RDF mapping language
」を参照してください。
-
-
次のいずれかを実行します。
-
AWS DMS コンソールを使用して、[データベース移行タスクの作成] ページで [グラフマッピングルール] を使用してグラフマッピングオプションを指定します。
-
AWS DMS API を使用して、
CreateReplicationTask
API コールのTaskData
リクエストパラメータを使用してこれらのオプションを指定します。
Gremlin JSON と SPARQL R2RML を使用してグラフマッピングルールを指定する詳細と例については、「Amazon Neptune の Gremlin と R2RML をターゲットとして使用するグラフマッピングルールの指定」を参照してください。
-
-
-
移行タスクのレプリケーションを開始します。
ターゲットとしての 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
– (必須) Neptune ターゲットデータベースに一括ロードする前に、移行グラフデータを DMS が .csv ファイルに一時的に保存できる S3 バケット名。DMS は、これらの .csv ファイルに保存する前に SQL ソースデータをグラフデータにマップします。 -
S3BucketFolder
– (必須) DMS がS3BucketName
で指定された S3 バケットに移行されたグラフデータを保存するフォルダのパス -
ErrorRetryDuration
– エラーが発生する前に、移行されたグラフデータの Neptune ターゲットデータベースへの一括ロードを再試行するために DMS が待機するミリ秒数。デフォルトは 250 です。 -
MaxFileSize
– (オプション) DMS が Neptune ターゲットデータベースにデータを一括ロードする前に、.csv ファイルに保存される移行されたグラフデータの KB 単位の最大サイズ。デフォルトは 1,048,576 KB (1 GB) です。正常に完了すると、DMS はバケットを消去して、移行したグラフデータの次のバッチを保存する準備を整えます。 -
MaxRetryCount
– (オプション) エラーが発生する前に、DMS が移行されたグラフデータの Neptune ターゲットデータベースへの一括ロードを再試行する回数。デフォルトは 5 です。 -
IAMAuthEnabled
– (オプション) このエンドポイントに対して IAM 認証を有効にする場合は、このパラメータをtrue
に設定して、ServiceAccessRoleArn
で指定されたサービスロールに適切な IAM ポリシードキュメントをアタッチします。デフォルトはfalse
です。
Amazon Neptune にターゲットとしてアクセスするための IAM サービスロールの作成
Neptune にターゲットとしてアクセスするには、IAM を使用してサービスロールを作成します。Neptune エンドポイントの設定に応じて、次の IAM ポリシーと信頼ドキュメントの一部またはすべてをこのロールにアタッチします。Neptune エンドポイントを作成する際は、このサービスロールの ARN を指定します。これにより AWS DMS と Amazon Neptune は、Neptune と関連付けられた Amazon S3 バケットの両方にアクセスするアクセス許可を引き受けることができます。
Neptune エンドポイント設定で、NeptuneSettings
の IAMAuthEnabled
パラメータを true
に設定した場合は、サービスロールに次のような IAM ポリシーをアタッチします。IAMAuthEnabled
を false
に設定すると、このポリシーを無視できます。
// 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 を使用する場合は、TaskData
API コールの CreateReplicationTask
リクエストパラメータを使用してこのようなオプションを指定します。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 load data format」を参照してください。
RDF/SPARQL データを生成するためのグラフマッピングルール
SPARQL を使用してクエリする RDF データをロードする場合は、R2RML でグラフマッピングルールを記述します。R2RML は、リレーショナルデータを RDF にマップするための標準の W3C 言語です。R2RML ファイルで、トリプルマップ (以下の <#TriplesMap1>
など) は、論理テーブルの各行を 0 個以上の RDF トリプルに変換するためのルールを指定します。サブジェクトマップ (次の rr:subjectMap
のいずれか) は、トリプルマップによって生成される RDF トリプルのサブジェクトを生成するためのルールを指定します。述語オブジェクトマップ (次の 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 to RDF mapping language
ターゲットの Amazon Neptune に移行する Gremlin と R2RML のデータ型
AWS DMS は、2 つの方法のいずれかで、SQL ソースエンドポイントから Neptune ターゲットへのデータ型マッピングを実行します。どちらの方法を使用するかは、Neptune データベースのロードに使用するグラフマッピング形式によって異なります。
-
Apache TinkerPop Gremlin。移行データの JSON 表現を使用します。
-
W3C の SPARQL。移行データの R2RML 表現を使用します。
上記 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 |
Neptune をロードするための Gremlinデータ型の詳細については、「Neptune ユーザー ガイド」の「Gremlinデータ型」を参照してください。
SQL ソースからターゲットの R2RML (RDF) へのデータ型マッピング
次の表は、SQL ソースから R2RML 形式のターゲットへのデータ型のマッピングを説明しています。
RDF リテラルを除き、リストされているすべての RDFデータ型は大文字と小文字が区別されます。AWS DMS は、リストされていない SQL ソースデータ型を RDF リテラルにマップします。
RDF リテラルは、さまざまなリテラルの語彙形式とデータ型の 1 つです。詳細については、W3C 仕様の「Resource Description Framework (RDF): Concepts and Abstract Syntax」の「RDF literals
ソースの 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 to RDF Mapping Language」の「Datatype conversions
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()
-
現時点では、単一のテーブルのロードに失敗すると、タスク全体が失敗します。リレーショナルデータベース ターゲットとは異なり、Neptune のデータは高度に接続されているため、多くの場合タスクを再開できません。このようなタイプのデータロードの失敗が原因でタスクを正常に再開できない場合は、ロードに失敗したテーブルをロードする新しいタスクを作成します。この新しいタスクを実行する前に、部分的にロードされたテーブルを Neptune ターゲットから手動でクリアします。
注記
失敗が回復可能な場合 (ネットワーク転送エラーなど) は、Neptune ターゲットへの移行に失敗したタスクを再開できます。
-
AWS DMS は、R2RML のほとんどの標準をサポートしています。ただし、AWS DMS 逆数式、結合、ビューなどの特定の R2RML 標準はサポートしていません。R2RML ビューについては、ソースデータベースに対応するカスタム SQL ビューを作成することが回避策です。移行タスクでテーブルマッピングを使用して、ビューを入力として選択します。次に、ビューをテーブルにマップすると、R2RML が使用して、グラフデータが生成されます。
-
サポートされていない SQL データ型を使用してソースデータを移行すると、ターゲットデータの精度の低下につながる可能性があります。詳細については、「ターゲットの Amazon Neptune に移行する Gremlin と R2RML のデータ型」を参照してください。
-
AWS DMS は、LOB データの Neptune ターゲットへの移行をサポートしていません。