DataWorks は、HybridDB for MySQL データソースからデータを読み書きするための HybridDB for MySQL Reader と HybridDB for MySQL Writer を提供しています。このトピックでは、HybridDB for MySQL データソースとのデータ同期機能について説明します。
制限事項
バッチ同期の際にビューのデータを読み取ることができます。
HybridDB for MySQL Reader は、テーブルとビューを読み取ることができます。 HybridDB for MySQL Reader を使用してテーブルからデータを読み取る場合は、テーブル内のすべてまたは一部の列を順番に指定したり、列の順序を変更したり、定数フィールドを指定したり、now()などの HybridDB for MySQL 関数を構成したりできます。
データ型マッピング
次の表に、HybridDB for MySQL Reader または HybridDB for MySQL Writer がデータ型を変換する際に基づくデータ型マッピングを示します。
カテゴリ | HybridDB for MySQL データ型 |
整数 | INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT、および YEAR |
浮動小数点 | FLOAT、DOUBLE、および DECIMAL |
文字列 | VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT、および LONGTEXT |
日付と時刻 | DATE、DATETIME、TIMESTAMP、および TIME |
ブール値 | BOOL |
バイナリ | TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB、および VARBINARY |
上記の表にリストされていないデータ型はサポートされていません。
HybridDB for MySQL Reader は、TINYINT(1)を整数データ型として処理します。
データソースを追加する
DataWorks で同期タスクを開発する前に、データソースを追加および管理するの手順に従って、必要なデータソースを DataWorks に追加する必要があります。 データソースを追加する際に、DataWorks コンソールのパラメータのヒントを表示して、パラメータの意味を理解することができます。
データ同期タスクを開発する
同期タスクのエントリポイントと構成手順については、以下の構成ガイドを参照してください。
単一テーブルのデータ同期を設定するバッチ同期タスクを構成する
構成手順の詳細については、「コードレス UI を使用してバッチ同期タスクを構成する」および「コードエディタを使用してバッチ同期タスクを構成する」をご参照ください。
コードエディタを使用してバッチ同期タスクを構成する際に構成されるすべてのパラメータと実行されるコードについては、「付録:コードとパラメータ」をご参照ください。
データベース内のすべてのデータのバッチ同期を実装するための同期設定を構成する
構成手順の詳細については、「Data Integration で同期タスクを構成する」をご参照ください。
付録:コードとパラメータ
コードエディタを使用してバッチ同期タスクを構成する
コードエディタを使用してバッチ同期タスクを構成する場合は、統一スクリプト形式の要件に基づいて、スクリプトに関連パラメータを構成する必要があります。 詳細については、「コードエディタを使用してバッチ同期タスクを構成する」をご参照ください。 次の情報では、コードエディタを使用してバッチ同期タスクを構成する際にデータソースに構成する必要があるパラメータについて説明します。
HybridDB for MySQL Reader のコード
シャードされていないテーブルからデータを読み取る HybridDB for MySQL Reader のサンプルコード:
{
"type": "job",
"steps": [
{
"parameter": {
"datasource": "px_aliyun_hymysql",// データソースの名前。
"column": [// データを書き込む列の名前。
"id",
"name",
"sex",
"salary",
"age",
"pt"
],
"where": "id=10001",// WHERE 句。
"splitPk": "id",// シャードキー。
"table": "person"// ソーステーブルの名前。
},
"name": "Reader",
"category": "reader"
},
{
"parameter": {}
],
"version": "2.0",// バージョン番号。
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {// ダーティデータレコードの最大許容数。
"record": ""
},
"speed": {
"concurrent": 7,// 並列スレッドの最大数。
"throttle": true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効になっていることを示し、値 true はスロットリングが有効になっていることを示します。 mbps パラメータは、throttle パラメータが true に設定されている場合にのみ有効になります。
"mbps": 1 // 最大伝送速度。単位:MB/s。
}
}
}HybridDB for MySQL Reader のコードのパラメータ
パラメータ | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディタを使用してデータソースを追加できます。 | はい | デフォルト値なし |
table | データを読み取るテーブルの名前。各同期タスクは、1 つのテーブルにのみデータを同期するために使用できます。 | はい | デフォルト値なし |
column | データを読み取る列の名前。JSON 配列で名前を指定します。デフォルト値は [*] で、ソーステーブルのすべての列を示します。
| はい | デフォルト値なし |
splitPk | HybridDB for MySQL Reader がデータを読み取るときにデータシャーディングに使用されるフィールド。このパラメータを構成すると、ソーステーブルはこのパラメータの値に基づいてシャードされます。Data Integration は、並列スレッドを実行してデータを読み取ります。これにより、データ同期の効率が向上します。
| いいえ | デフォルト値なし |
where | WHERE 句。たとえば、このパラメータを
| いいえ | デフォルト値なし |
querySql(高度なパラメータ。コードエディタでのみ使用可能) | 絞り込んだデータフィルタリングに使用される SQL ステートメント。このパラメータを指定すると、HybridDB for MySQL Reader はこのパラメータの値のみに基づいてデータをフィルタリングします。たとえば、複数のテーブルを結合してデータ同期を行う場合は、このパラメータを | いいえ | デフォルト値なし |
singleOrMulti(シャードテーブルでのみ使用可能) | ソーステーブルがシャードテーブルであることを指定します。コードレス UI からコードエディタに切り替えると、 | はい | multi |
HybridDB for MySQL Writer のコード
{
"type": "job",
"steps": [
{
"parameter": {},
{
"parameter": {
"postSql": [],// 同期タスクの実行後に実行する SQL ステートメント。
"datasource": "px_aliyun_hy***",// データソースの名前。
"column": [// 列の名前。
"id",
"name",
"sex",
"salary",
"age",
"pt"
],
"writeMode": "insert",// 書き込みモード。
"batchSize": 256,// 一度に書き込むデータレコードの数。
"encoding": "UTF-8",// エンコーディング形式。
"table": "person_copy",// デスティネーションテーブルの名前。
"preSql": []// 同期タスクの実行前に実行する SQL ステートメント。
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",// バージョン番号。
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {// ダーティデータレコードの最大許容数。
"record": ""
},
"speed": {
"concurrent": 7,// 並列スレッドの最大数。
"throttle": true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効になっていることを示し、値 true はスロットリングが有効になっていることを示します。 mbps パラメータは、throttle パラメータが true に設定されている場合にのみ有効になります。
"mbps": 1,// 最大伝送速度。単位:MB/s。
}
}
}HybridDB for MySQL Writer のコードのパラメータ
パラメータ | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディタを使用してデータソースを追加できます。 | はい | デフォルト値なし |
table | データを書き込むテーブルの名前。 | はい | デフォルト値なし |
writeMode | 書き込みモード。有効な値:
| いいえ | insert |
column | データを書き込む列の名前。 | はい | デフォルト値なし |
preSql | バッチ同期タスクの実行前に実行する SQL ステートメント。たとえば、このパラメータを古いデータを削除するために使用される SQL ステートメントに設定できます。コードレス UI では 1 つの SQL ステートメントのみを実行でき、コードエディタでは複数の SQL ステートメントを実行できます。 | いいえ | デフォルト値なし |
postSql | バッチ同期タスクの実行後に実行する SQL ステートメント。たとえば、このパラメータをタイムスタンプを追加するために使用される SQL ステートメントに設定できます。コードレス UI では 1 つの SQL ステートメントのみを実行でき、コードエディタでは複数の SQL ステートメントを実行できます。 | いいえ | デフォルト値なし |
batchSize | 一度に書き込むデータレコードの数。ビジネス要件に基づいて、このパラメータを適切な値に設定します。これにより、Data Integration と HybridDB for MySQL の間の相互作用が大幅に削減され、スループットが向上します。このパラメータを過度に大きな値に設定すると、データ同期の際にメモリ不足(OOM)エラーが発生する可能性があります。 | いいえ | 1,024 |