PolarDB-X 2.0 データソースは、PolarDB-X 2.0 からデータを読み取り、PolarDB-X 2.0 にデータを書き込むための双方向チャンネルを提供します。このトピックでは、DataWorks が PolarDB-X 2.0 に対してサポートするデータ同期機能について説明します。
制限事項
PolarDB-X 2.0 データソースは、サーバーレス リソースグループ (推奨) および Data Integration 専用リソースグループをサポートしています。
サポートされているバージョン
オフラインでの読み取りと書き込み: PolarDB-X 2.0 がサポートされています。オフライン同期を使用して、ビューからデータを読み取ることができます。
サポートされているフィールドタイプ
PolarDB-X 2.0 のフィールドタイプの一覧については、「データ型」をご参照ください。次の表に、サポートされている主要なフィールドタイプを示します。
フィールドタイプ | オフライン読み取り (PolarDB-X 2.0 Reader) | オフライン書き込み (PolarDB-X 2.0 Writer) |
TINYINT | サポート | サポート |
SMALLINT | サポート | サポート |
INTEGER | サポート | サポート |
BIGINT | サポート | サポート |
FLOAT | サポート | サポート |
DOUBLE | サポート | サポート |
DECIMAL/NUMBERIC | サポート | サポート |
REAL | サポートされていません | サポートされていません |
VARCHAR | サポート | サポート |
JSON | サポート | サポート |
TEXT | サポート | サポート |
MEDIUMTEXT | サポート | サポート |
LONGTEXT | サポート | サポート |
VARBINARY | サポート | サポート |
BINARY | サポート | サポート |
TINYBLOB | サポート | サポート |
MEDIUMBLOB | サポート | サポート |
LONGBLOB | サポート | サポート |
ENUM | サポート | サポート |
SET | サポート | サポート |
BOOLEAN | サポート | サポート |
BIT | サポート | サポート |
DATE | サポート | サポート |
DATETIME | サポート | サポート |
TIMESTAMP | サポート | サポート |
TIME | サポート | サポート |
YEAR | サポート | サポート |
LINESTRING | サポートされていません | サポートされていません |
POLYGON | サポートされていません | サポートされていません |
MULTIPOINT | サポートされていません | サポートされていません |
MULTILINESTRING | サポートされていません | サポートされていません |
MULTIPOLYGON | サポートされていません | サポートされていません |
GEOMETRYCOLLECTION | サポートされていません | サポートされていません |
データ同期の前提条件
DataWorks でデータを同期する前に、このセクションで説明されているように PolarDB-X 2.0 環境を準備する必要があります。これにより、データ同期タスクが期待どおりに実行されます。以下のセクションでは、必要な準備について説明します。
PolarDB-X バージョンの確認
PolarDB-X 1.0 の場合は、DRDS データソースを使用します。PolarDB-X 2.0 の場合は、このデータソースを使用します。
アカウント権限の構成
DataWorks がデータソースにアクセスできるように、DataWorks 専用の PolarDB-X 2.0 アカウントを作成します。次の手順に従ってください。
(オプション) PolarDB-X 2.0 コンソールに移動して、アカウントを作成します。すでにアカウントをお持ちの場合は、このステップをスキップします。
権限を構成します。
オフライン同期シナリオの場合:
オフラインタスクで PolarDB-X 2.0 からデータを読み取るには、アカウントがソーステーブルに対する読み取り (SELECT) 権限を持っている必要があります。
オフラインタスクで PolarDB-X 2.0 にデータを書き込むには、アカウントが宛先テーブルに対する書き込み (INSERT, DELETE, UPDATE) 権限を持っている必要があります。
リアルタイム同期シナリオ (全データベース) の場合:
特権アカウント: デフォルトでは、特権アカウントはリアルタイム同期のためにバイナリログ (binlog) データを読み取ることができます。
標準アカウント: 特権アカウントを使用して、指定されたデータベースに対する SELECT、REPLICATION SLAVE、および REPLICATION CLIENT 権限を標準アカウントに付与します。
-- 同期アカウントを作成し、パスワードを設定します。これにより、アカウントは任意のホストからデータベースにログインできます。パーセント記号 (%) は任意のホストを表します。
-- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'password';
-- データベースに対する SELECT、REPLICATION SLAVE、および REPLICATION CLIENT 権限を同期アカウントに付与します。
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%'; データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、パラメーターの意味を理解できます。
データ同期タスクの開発: PolarDB-X 2.0 同期プロセスガイド
同期タスクのエントリポイントと構成手順については、以下の構成ガイドをご参照ください。
単一テーブルのオフライン同期タスク構成ガイド
手順については、「コードエディタでオフライン同期タスクを構成する」をご参照ください。
コードエディタのすべてのパラメーターとスクリプト例については、「付録: スクリプトデモとパラメーターの説明」をご参照ください。
付録: スクリプトデモとパラメーターの説明
コードエディタを使用したバッチ同期タスクの構成
コードエディタを使用してバッチ同期タスクを構成する場合は、統一されたスクリプト形式要件に基づいて、スクリプト内の関連パラメーターを構成する必要があります。詳細については、「コードエディタでタスクを構成する」をご参照ください。以下に、コードエディタを使用してバッチ同期タスクを構成する際にデータソースに対して構成する必要があるパラメーターについて説明します。
リーダースクリプトデモ
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"polardbx20",// プラグイン名。
"parameter":{
"connection": [
{
"datasource":"",
"table": [
"t1"
]
}
],
"column": [
"c1",
"c2",
"'const'"
],
"where": "",
"splitPk": "",
"checkSlave": "true",
"slaveDelayLimit": "300"
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// エラーレコード数。
},
"speed":{
"throttle":true,// throttle が false に設定されている場合、mbps パラメーターは有効にならず、レート制限は適用されません。throttle が true に設定されている場合、レート制限が適用されます。
"concurrent":1,// 同時ジョブ数。
"mbps":"12"// レート制限。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}リーダースクリプトパラメーター
スクリプトパラメーター名 | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。この名前は、[データソース管理] ページで作成した PolarDB-X 2.0 データソースの名前と同じである必要があります。 | はい | なし |
table | 同期するテーブルの名前。単一テーブルのみがサポートされています。 | はい | なし |
column | 構成されたテーブルから同期するカラム。JSON 配列を使用してカラムを記述します。デフォルトでは、すべてのカラムが使用されます。例: [*]。
| はい | なし |
splitPk | PolarDB-X 2.0 Reader を使用してデータを抽出する場合、splitPk パラメーターをデータパーティショニングに使用できます。これにより、同時データ同期が可能になり、効率が向上します。
| いいえ | なし |
where | フィルター条件。多くのビジネスシナリオでは、現在の日のデータのみを同期したい場合があります。これを行うには、where 条件を
| いいえ | なし |
checkSlave | プライマリインスタンスと読み取り専用インスタンス間のレプリケーションの遅延をチェックします。データソースが PolarDB-X 2.0 読み取り専用インスタンスである場合、レプリケーションの遅延によるデータ損失を防ぐために、タスク開始前にこのチェックが実行されます。 | いいえ | true |
slaveDelayLimit | プライマリインスタンスと読み取り専用インスタンス間の許容される最大レプリケーション遅延 (秒単位)。実際の遅延がこの値を超えると、タスクは失敗します。これにより、レプリケーションの遅延によるデータ損失が防止されます。 | いいえ | 30 |
ライタースクリプトデモ
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"PolarDB-X 2.0",// プラグイン名。
"parameter":{
"postSql":[],// データインポート後に実行される SQL 文。
"datasource":"",// データソース。
"column":[// カラム名。
"id",
"value"
],
"writeMode":"insert",// 書き込みモード。insert または replace に設定できます。
"batchSize":1024,// 単一バッチで送信されるレコード数。
"table":"",// テーブル名。
"preSql":[
"delete from XXX;" // データインポート前に実行される SQL 文。
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{// エラーレコード数。
"record":"0"
},
"speed":{
"throttle":true,// throttle が false に設定されている場合、mbps パラメーターは有効にならず、レート制限は適用されません。throttle が true に設定されている場合、レート制限が適用されます。
"concurrent":1, // 同時ジョブ数。
"mbps":"12"// レート制限。これは、アップストリームまたはダウンストリームデータベースへの過度な読み取り/書き込み負荷を防ぐために、最大同期レートを制御します。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}ライタースクリプトパラメーター
スクリプトパラメーター名 | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。この名前は、[データソース管理] ページで作成した PolarDB-X 2.0 データソースの名前と同じである必要があります。 | はい | なし |
table | 同期するテーブルの名前。 | はい | なし |
writeMode | インポートモード。次のモードがサポートされています: insert into および replace into。
| いいえ | insert |
column | データを書き込む宛先テーブルのカラム。カラム名をコンマ (,) で区切ります。例: "column": ["id", "name", "age"]。すべてのカラムに順番にデータを書き込むには、アスタリスク (*) を使用します。例: "column": ["*"]。 | はい | なし |
preSql | データ同期タスクの実行前に実行される SQL 文。コードレス UI では、1つの SQL 文のみが許可されます。コードエディタでは、複数の SQL 文がサポートされています。たとえば、タスク実行前にテーブルから古いデータをクリアするには: 説明 複数の SQL 文に対してトランザクションはサポートされていません。 | いいえ | なし |
postSql | データ同期タスクの実行後に実行される SQL 文。コードレス UI では、1つの SQL 文のみが許可されます。コードエディタでは、複数の SQL 文がサポートされています。たとえば、タイムスタンプを追加するには: 説明 複数の SQL 文に対してトランザクションはサポートされていません。 | いいえ | なし |
batchSize | 単一バッチで送信されるレコード数。値が大きいほど、データ同期システムと PolarDB-X 2.0 間のネットワークインタラクションを大幅に削減でき、全体的なスループットが向上します。ただし、この値が大きすぎると、メモリオーバーフローが発生する可能性があります。 | いいえ | 256 |