Graph Database (GDB) データソースを使用すると、Graph Database からデータを読み取り、および Graph Database にデータを書き込むことができます。本トピックでは、DataWorks における Graph Database (GDB) のデータ同期機能について説明します。
制限事項
オフライン読み取り | オフライン書き込み |
|
|
データソースの追加
DataWorks で同期タスクを開発する前に、データソース管理 の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際には、DataWorks コンソールで パラメーターの説明を表示して、各パラメーターの意味を確認してください。
データ同期タスクの開発
同期タスクの開始位置および構成手順については、以下の構成ガイドをご参照ください。
単一テーブル向けオフライン同期タスクの構成ガイド
詳細については、「コードレス UI 構成」および「コードエディタ構成」をご参照ください。
コードエディタのパラメーターおよびスクリプトデモについては、「付録:スクリプトデモおよびパラメーターの説明」をご参照ください。
付録:スクリプトデモおよびパラメーターの説明
コードエディタを使用したバッチ同期タスクの構成
コードエディタを使用してバッチ同期タスクを構成する場合、統一されたスクリプト形式要件に基づき、関連するパラメーターをスクリプト内に設定する必要があります。詳細については、「コードエディタによるタスクの構成」をご参照ください。以下に、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Reader スクリプトデモ
GDB へのデータ書き込みを目的としたデータ同期ジョブを構成する場合、ポイントとエッジをそれぞれ個別に構成する必要があります。
ポイント構成の例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // エラーとなるレコード数。許容されるダーティデータレコードの最大数を示します。 }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,/// throttle が false の場合、mbps パラメーターは無効となり、レート制限が適用されません。throttle が true の場合、レートが制限されます。 "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。 } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", // GDB インスタンスのエンドポイント。 "port": 8182, // GDB インスタンスのポート。 "username": "gdb", // GDB インスタンスのユーザー名。 "password": "gdb", // GDB インスタンスのユーザー名に対応するパスワード。 "labelType": "VERTEX", // ラベルの種類。VERTEX はポイントを示します。 "labels": ["label1", "label2"], // ラベル名のリスト。空のリストは、すべてのポイントをエクスポートすることを意味します。 "column": [ { "name": "id", // フィールド名。 "type": "string", // フィールド型。 "columnType": "primaryKey" // フィールド分類。ポイントのプライマリキー ID を示します。GDB では、この型は STRING です。 }, { "name": "label", // フィールド名。 "type": "string", // フィールド型。 "columnType": "primaryLabel" // フィールド分類。ポイントのラベル名を示します。GDB では、この型は STRING です。 }, { "name": "age", // プロパティフィールド名。 "type": "int", // プロパティフィールド型。 "columnType": "vertexProperty" // フィールド分類。ポイントのプロパティを示します。GDB では、これは基本型のプロパティです。 } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }エッジ構成の例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // エラーとなるレコード数。許容されるダーティデータレコードの最大数を示します。 }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,// throttle が false の場合、mbps パラメーターは無効となり、レート制限が適用されません。throttle が true の場合、レートが制限されます。 "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。 } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", // GDB インスタンスのエンドポイント。 "port": 8182, // GDB インスタンスのポート。 "username": "gdb", // GDB インスタンスのユーザー名。 "password": "gdb", // GDB インスタンスのユーザー名に対応するパスワード。 "labelType": "EDGE", // ラベルの種類。EDGE はエッジを示します。 "labels": ["label1", "label2"], // ラベル名のリスト。空のリストは、すべてのエッジをエクスポートすることを意味します。 "column": [ { "name": "id", // フィールド名。 "type": "string", // フィールド型。 "columnType": "primaryKey" // フィールド分類。エッジのプライマリキー ID を示します。GDB では、この型は STRING です。 }, { "name": "label", // フィールド名。 "type": "string", // フィールド型。 "columnType": "primaryLabel" // フィールド分類。エッジのラベル名を示します。GDB では、この型は STRING です。 }, { "name": "srcId", // フィールド名。 "type": "string", // フィールド型。 "columnType": "srcPrimaryKey" // フィールド分類。エッジのソースポイントの ID を示します。GDB では、この型は STRING です。 }, { "name": "srcLabel", // フィールド名。 "type": "string", // フィールド型。 "columnType": "srcPrimaryLabel" // フィールド分類。エッジのソースポイントのラベル名を示します。GDB では、この型は STRING です。 }, { "name": "dstId", // フィールド名。 "type": "string", // フィールド型。 "columnType": "dstPrimaryKey" // フィールド分類。エッジの宛先ポイントの ID を示します。GDB では、この型は STRING です。 }, { "name": "dstLabel", // フィールド名。 "type": "string", // フィールド型。 "columnType": "dstPrimaryLabel" // フィールド分類。エッジの宛先ポイントのラベル名を示します。GDB では、この型は STRING です。 }, { "name": "weight", // プロパティフィールド名。 "type": "double", // プロパティフィールド型。 "columnType": "edgeProperty" // フィールド分類。エッジのプロパティを示します。 } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }
Reader スクリプトパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
host | GDB インスタンスに接続するために使用するドメイン名です。Graph Database コンソール で、インスタンス横の 管理 をクリックすると、内部エンドポイント(host)を確認できます。 | はい | なし |
port | GDB インスタンスに接続するために使用するポートです。 | はい | 8182 |
username | GDB インスタンスのアカウント名です。 | はい | なし |
password | GDB インスタンスアカウントのパスワードです。 | はい | なし |
labels | タイプ名(ポイントまたはエッジの名前)です。複数の名前を持つデータを読み取ることができます。配列形式(例:`["label1", "label2"]`)で指定します。 | はい | なし |
labelType | データのラベルの種類です。
| はい | なし |
column | ポイントまたはエッジのフィールドマッピング構成です。 | はい | なし |
column -> name | ポイントまたはエッジのマッピングにおけるフィールド名です。プロパティを読み取る場合に必須です。プロパティ名を指定します。 | はい | なし |
column -> type | ポイントまたはエッジのマッピングにおけるフィールド値の型です。
| はい | なし |
column -> columnType | GDB のポイントまたはエッジデータのマッピングフィールドです。以下の列挙値を含みます。
| はい | なし |
Writer スクリプトデモ
ポイント構成の例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // エラーとなるレコード数。許容されるダーティデータレコードの最大数を示します。 }, "speed":{ "throttle":true,// throttle が false の場合、mbps パラメーターは無効となり、レート制限が適用されません。throttle が true の場合、レートが制限されます。 "concurrent":3, // ジョブの同時実行数。 "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。 } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "column":[ "*" ], "datasource":"_ODPS", "emptyAsNull":true, "guid":"", "isCompress":false, "partition":[], "table":"" }, "stepType":"odps" }, { "category":"writer", "name":"Writer", "parameter": { "datasource": "testGDB", // データソースの名前。 "label": "person", // ラベル名(ポイント名)。 "srcLabel": "", // ポイント型の場合、このフィールドは無視できます。 "dstLabel": "", // ポイント型の場合、このフィールドは無視できます。 "labelType": "VERTEX", // ラベルの種類。「VERTEX」はポイントを示します。 "writeMode": "INSERT", // インポート時の重複 ID の処理方法。 "idTransRule": "labelPrefix", // ポイントのプライマリキーの変換ルール。 "srcIdTransRule": "none", // ポイント型の場合、このフィールドは無視できます。 "dstIdTransRule": "none", // ポイント型の場合、このフィールドは無視できます。 "column": [ { "name": "id", // フィールド名。 "value": "#{0}", // #{0} はソースの最初のフィールドの値を示します。連結もサポートされています。0 はソースカラムのインデックスです。 "type": "string", // フィールド型。 "columnType": "primaryKey" // フィールド分類。primaryKey はプライマリキーを示します。 }, // ポイントのプライマリキー。フィールド名は id で、型は STRING である必要があります。このレコードは必須です。 { "name": "person_age", "value": "#{1}", // #{1} はソースの 2 番目のフィールドの値を示します。連結もサポートされています。 "type": "int", "columnType": "vertexProperty" // フィールド分類。vertexProperty はポイントのプロパティを示します。 }, // ポイントのプロパティ。INT、LONG、FLOAT、DOUBLE、BOOLEAN、STRING 型をサポートします。 { "name": "person_credit", "value": "#{2}", // #{2} はソースの 3 番目のフィールドの値を示します。連結もサポートされています。 "type": "string", "columnType": "vertexProperty" }, // ポイントのプロパティ。 ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }エッジ構成の例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // エラーとなるレコード数。許容されるダーティデータレコードの最大数を示します。 }, "jvmOption":"", "speed":{ "throttle":true,// throttle が false の場合、mbps パラメーターは無効となり、レート制限が適用されません。throttle が true の場合、レートが制限されます。 "concurrent":3, // ジョブの同時実行数。 "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。 } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "column":[ "*" ], "datasource":"_ODPS", "emptyAsNull":true, "guid":"", "isCompress":false, "partition":[], "table":"" }, "stepType":"odps" }, { "category":"writer", "name":"Writer", "parameter": { "datasource": "testGDB", // データソースの名前。 "label": "use", // ラベル名(エッジ名)。 "labelType": "EDGE", // ラベルの種類。EDGE はエッジを示します。 "srcLabel": "person", // ソースポイントの名前。 "dstLabel": "software", // 宛先ポイントの名前。 "writeMode": "INSERT", // インポート時の重複 ID の処理方法。 "idTransRule": "labelPrefix", // エッジのプライマリキーの変換ルール。 "srcIdTransRule": "labelPrefix", // ソースポイントのプライマリキーの変換ルール。 "dstIdTransRule": "labelPrefix", // 宛先ポイントのプライマリキーの変換ルール。 "column": [ { "name": "id", // フィールド名。 "value": "#{0}", // #{0} はソースの最初のフィールドの値を示します。連結もサポートされています。 "type": "string", // フィールド型。 "columnType": "primaryKey" // フィールド分類。primaryKey はこのフィールドがプライマリキーであることを示します。 }, // エッジのプライマリキー。フィールド名は id で、型は STRING である必要があります。このレコードは任意です。 { "name": "id", "value": "#{1}", // 連結もサポートされています。マッピングルールはポイントをインポートする際に使用したものと整合している必要があります。 "type": "string", "columnType": "srcPrimaryKey" // フィールド分類。srcPrimaryKey はソースポイントのプライマリキーを示します。 }, // ソースポイントのプライマリキー。フィールド名は id で、型は STRING である必要があります。このレコードは必須です。 { "name": "id", "value": "#{2}", // 連結もサポートされています。マッピングルールはポイントをインポートする際に使用したものと整合している必要があります。 "type": "string", "columnType": "dstPrimaryKey" // フィールド分類。dstPrimaryKey は宛先ポイントのプライマリキーを示します。 }, // 宛先ポイントのプライマリキー。フィールド名は id で、型は STRING である必要があります。このレコードは必須です。 { "name": "person_use_software_time", "value": "#{3}", // 連結もサポートされています。 "type": "long", "columnType": "edgeProperty" // フィールド分類。edgeProperty はエッジのプロパティを示します。 }, // エッジのプロパティ。INT、LONG、FLOAT、DOUBLE、BOOLEAN、STRING 型をサポートします。 { "name": "person_regist_software_name", "value": "#{4}", // 連結もサポートされています。 "type": "string", "columnType": "edgeProperty" }, // エッジのプロパティ。 { "name": "id", "value": "#{5}", // 連結もサポートされています。 "type": "long", "columnType": "edgeProperty" }, // エッジのプロパティ。フィールド名は id です。プライマリキー ID とは異なり、これは通常のプロパティであり、任意です。 ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }
Writer スクリプトパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前です。コードエディタではデータソースの追加がサポートされています。この設定項目の値は、追加したデータソースの名前と一致している必要があります。 | はい | なし |
label | タイプ名(ポイントまたはエッジの名前)です。 ラベルはソースカラムから読み取ることができます。たとえば、`#{0}` は最初のカラムをラベル名として使用することを意味します。ソースカラムのインデックスは 0 から始まります。 | はい | なし |
labelType | ラベルの種類です。
| はい | なし |
srcLabel |
| いいえ | なし |
dstLabel |
| いいえ | なし |
writeMode | インポート時の重複 ID の処理モードです。
| はい | INSERT |
idTransRule | プライマリキー ID の変換ルールです。
| はい | none |
srcIdTransRule | label がエッジの場合、このパラメーターはソースポイントのプライマリキー ID の変換ルールを指定します。
| label がエッジの場合に必須 | none |
dstIdTransRule | label がエッジの場合、このパラメーターは宛先ポイントのプライマリキー ID の変換ルールを指定します。
| label がエッジの場合に必須 | none |
column | ポイントまたはエッジのフィールドマッピング構成です。
プロパティの例 | はい | なし |