DM (Dameng) データソースはデータハブとして機能します。DM データベースとの間でデータを読み書きするための双方向チャネルを提供し、大量データの高速処理を可能にします。このトピックでは、DataWorks における DM データソースのデータ同期機能について説明します。
制限事項
オフライン同期は、ビューからのデータ読み取りをサポートしています。
DM Reader と DM Writer は、サーバーレスリソースグループ (推奨) および データ統合専用リソースグループ をサポートしています。
サポートされるフィールドタイプ
DM Reader と DM Writer は、数値や文字など、ほとんどの一般的なリレーショナルデータベースのデータ型をサポートしています。ただし、一部の型はサポートされていません。ご利用のデータベースに応じて、データ型を確認し、選択してください。
次の表に、DM Reader が変換できる DM データ型を示します。
カテゴリ | DM データ型 |
整数 | INT、TINYINT、SMALLINT、BIGINT |
浮動小数点 | REAL、FLOAT、DOUBLE、NUMBER、DECIMAL |
文字列 | CHAR、VARCHAR、LONGVARCHAR、TEXT |
日付と時刻 | DATE、DATETIME、TIMESTAMP、TIME |
ブール値 | BIT |
バイナリ | BINARY、VARBINARY、BLOB |
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際、各パラメーターの意味については、DataWorks コンソールのパラメーターの説明で確認できます。
データ同期タスクの開発
同期タスクの設定のエントリポイントと手順については、以下の設定ガイドをご参照ください。
単一テーブルのオフライン同期タスクの設定
詳細については、「コードレス UI でタスクを設定」および「コードエディタでタスクを設定」をご参照ください。
コードエディタのすべてのパラメーターとスクリプト例については、「付録:スクリプト例とパラメーターの説明」をご参照ください。
データベース全体のオフライン読み取り同期タスクの設定
詳細については、「データベース全体のリアルタイム同期タスクを設定」をご参照ください。
付録:スクリプト例とパラメーターの説明
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでタスクを設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Reader スクリプトの例
{
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle":true,// throttle が false に設定されている場合、mbps パラメーターは有効にならず、レート制限は適用されません。throttle が true に設定されている場合、レート制限が適用されます。
"concurrent":1, // 同時実行ジョブ数。
"mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
}
},
"steps": [
{
"category": "reader",
"name": "Reader",
"parameter": {
"datasource": "dm_datasource",
"table": "table",
"column": [
"*"
],
"preSql": [
"delete from XXX;"
],
"fetchSize": 2048
},
"stepType": "dm"
},
{
"category": "writer",
"name": "Writer",
"parameter": {},
"stepType": "stream"
}
],
"type": "job",
"version": "2.0"
}Reader スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | DM データソースの名前。DM データソースの設定方法の詳細については、「DM データソースの設定」をご参照ください。 | はい | なし |
table | 同期元のテーブル。 | はい | なし |
column | 同期する列。JSON 配列を使用して列を指定します。デフォルトでは、すべての列が同期されます。例: `["*"]`。
| はい | なし |
splitPk | DM Reader がデータを抽出する際に splitPk パラメーターを指定すると、splitPk が表すフィールドを使用してデータパーティショニングを行うことを意味します。これにより、データ同期システムは同時実行タスクを開始してデータを同期し、効率を高めます。
| いいえ | 空 |
where | フィルター条件。DM Reader は、指定された column、table、where パラメーターに基づいて SQL 文を構築し、その文を使用してデータを抽出します。たとえば、テスト目的で where 条件を `limit 10` に設定できます。 ビジネスシナリオでは、当日生成されたデータを同期したい場合があります。この場合、where 条件を
| いいえ | なし |
querySql | 一部のビジネスシナリオでは、where パラメーターだけではフィルター条件を定義するのに不十分な場合があります。このパラメーターを使用して、フィルタリング用のカスタム SQL 文を指定できます。このパラメーターを指定すると、データ同期システムは column と table パラメーターを無視し、カスタム SQL 文を使用してデータをフィルタリングします。 たとえば、複数テーブルの結合後にデータを同期するには、 | いいえ | なし |
fetchSize | このパラメーターは、データベースサーバーから各バッチで取得するレコード数を指定します。値を大きくすると、データ同期システムとサーバー間のネットワーク対話の回数が減り、データ取得のパフォーマンスが向上する可能性があります。 説明 fetchSize の値が 2048 を超えると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 | いいえ | 1,024 |
Writer スクリプトの例
{
"type": "job",
"steps": [
{
"stepType": "oracle",
"parameter": {
"datasource": "aaa",
"column": [
"PROD_ID",
"name"
],
"where": "",
"splitPk": "",
"encoding": "UTF-8",
"table": "PENGXI.SALES"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "dm",
"parameter": {
"datasource": "dm_datasource",
"table": "table",
"column": [
"id",
"name"
],
"preSql": [
"delete from XXX;"
]
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"throttle":true,// throttle が false に設定されている場合、mbps パラメーターは有効にならず、レート制限は適用されません。throttle が true に設定されている場合、レート制限が適用されます。
"concurrent":2, // 同時実行ジョブ数。
"mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
}
}
}
Writer スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | DM データソースの名前。DM データソースの設定方法の詳細については、「DM データソースの設定」をご参照ください。 | はい | なし |
table | 宛先テーブルの名前。テーブルのスキーマがデータソース設定で指定されたユーザー名と異なる場合は、テーブル名を | はい | なし |
column | 宛先テーブルでデータを書き込む列。複数の列名はカンマ (,) で区切ります。 説明 デフォルトの列設定は使用しないでください。 | はい | なし |
preSql | データ同期タスクが開始される前に実行される SQL 文。1 つの SQL 文のみがサポートされます。たとえば、このパラメーターを使用して古いデータをパージできます。 説明 複数の SQL 文を指定した場合、トランザクションはサポートされません。 | いいえ | なし |
postSql | データ同期タスクが完了した後に実行される SQL 文。1 つの SQL 文のみがサポートされます。たとえば、このパラメーターを使用してタイムスタンプを追加できます。 説明 複数の SQL 文を指定した場合、トランザクションはサポートされません。 | いいえ | なし |
batchSize | 各バッチで書き込むレコード数。値を大きくすると、データ統合と DM (Dameng) データベース間のネットワーク対話の回数が大幅に減少し、全体のスループットが向上する可能性があります。ただし、この値が大きすぎると、データ統合プロセスで OOM エラーが発生する可能性があります。 | いいえ | 1024 |