すべてのプロダクト
Search
ドキュメントセンター

DataWorks:TiDB データソース

最終更新日:Jan 11, 2025

DataWorks は、オフラインモードで TiDB データソースからデータを読み取るための TiDB Reader を提供します。このトピックでは、TiDB データソースからデータを同期する機能について説明します。

サポートされている TiDB バージョン

  • バッチデータ読み取り:TiDB 7.x および TiDB 8.x データベースがサポートされています。

  • バッチデータ書き込み:TiDB データベースバージョンはサポートされていません。

  • リアルタイムデータの読み取りと書き込み:TiDB データベースバージョンはサポートされていません。

説明

TiDB は MySQL プロトコルと、MySQL 5.7 および MySQL 8.0 で一般的に使用される機能と構文と高度に互換性があります。オフラインモードでの TiDB データソースからのデータ同期は、MySQL プロトコルに基づいて実装されています。 TiDB と MySQL の互換性の比較については、MySQL Compatibility を参照してください。

サポートされているデータ型

各 TiDB バージョンのすべてのデータ型については、Data Types を参照してください。次の表は、TiDB の主要なデータ型のサポート状況を示しています。

データ型

バッチデータ読み取り用の TiDB Reader

TINYINT

サポートされています

SMALLINT

サポートされています

MEDIUMINT

サポートされています

INTEGER

サポートされています

BIGINT

サポートされています

FLOAT

サポートされています

DOUBLE

サポートされています

DECIMAL

サポートされています

CHAR

サポートされています

VARCHAR

サポートされています

JSON

サポートされています

TEXT

サポートされています

TINYTEXT

サポートされています

MEDIUMTEXT

サポートされています

LONGTEXT

サポートされています

VARBINARY

サポートされています

BINARY

サポートされています

BLOB

サポートされています

TINYBLOB

サポートされています

MEDIUMBLOB

サポートされています

LONGBLOB

サポートされています

ENUM

サポートされています

SET

サポートされています

BOOLEAN

サポートされています

BIT

サポートされています

DATE

サポートされています

DATETIME

サポートされています

TIMESTAMP

サポートされています

TIME

サポートされています

YEAR

サポートされています

データ同期前に TiDB 環境を準備する

DataWorks を使用して TiDB データソースからデータを同期する前に、TiDB 環境を準備する必要があります。これにより、データ同期タスクを構成し、TiDB データソースから期待どおりにデータを同期できるようになります。以下の情報は、TiDB データソースからのデータ同期のために TiDB 環境を準備する方法について説明しています。

準備 1:TiDB データベースのバージョンを確認する

Data Integration では、TiDB データベースのバージョンが 7.x または 8.x である必要があります。 データを同期する TiDB データベースのバージョンが要件を満たしているかどうかを確認する必要があります。次のステートメントを実行して、TiDB データベースのバージョンを確認できます。

SELECT TIDB_VERSION()\G

/*
1 行目 ***************************
TIDB_VERSION(): リリースバージョン: v8.1.1
エディション: Community
Git コミットハッシュ: 821e491a20fbab36604b36b647b5bae26a2c1418
Git ブランチ: HEAD
UTC ビルド時間: 2024-08-27 19:16:25
GoVersion: go1.21.10
Race Enabled: false
Check Table Before Drop: false
Store: tikv
1 row in set (0.00 sec)
*/

準備 2:必要な権限を持つアカウントを準備する

DataWorks が TiDB データベースにアクセスするためのアカウントを計画および作成することをお勧めします。このようなアカウントを準備するには、次の手順を実行します。

  1. オプション。アカウントを作成します。詳細については、TiDB User Account Management を参照してください。

  2. アカウントに必要な権限を付与します。

    バッチデータ読み取り:アカウントには SELECT 権限が必要です。

    次のステートメントを実行して、アカウントに権限を付与できます。または、アカウントに SUPER 権限を付与することもできます。ステートメントの データ同期用アカウント を、作成したアカウントに置き換えます。

    -- CREATE USER 'データ同期用アカウント'@'%' IDENTIFIED BY 'パスワード'; //データ同期に使用できるアカウントを作成し、パスワードを指定します。このようにして、任意のホストからアカウントとパスワードを使用してデータベースにアクセスできます。 % はホストを示します。
    GRANT SELECT ON *.* TO 'データ同期用アカウント'@'%'; // アカウントに SELECT 権限を付与します。

    *.* は、すべてのデータベースのすべてのテーブルに対する上記の権限がアカウントに付与されていることを示します。データベース内の特定のテーブルに対する上記の権限をアカウントに付与することもできます。たとえば、test データベースの user テーブルに対する上記の権限をアカウントに付与するには、次のステートメントを実行します:GRANT SELECT ON test.user TO 'データ同期用アカウント'@'%';

    説明

    REPLICATION SLAVE 権限はグローバル権限です。データベース内の特定のテーブルに対するこの権限をアカウントに付与することはできません。

データソースを追加する

データソースを追加および管理する の手順に従って、DataWorks で同期タスクを開発する前に、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールのパラメータのヒントを表示して、パラメータの意味を理解できます

付録:コードとパラメータ

コードエディタを使用してバッチ同期タスクを構成する

コードエディタを使用してバッチ同期タスクを構成する場合は、統一スクリプト形式の要件に基づいて、スクリプトに関連パラメータを構成する必要があります。詳細については、コードエディタを使用してバッチ同期タスクを構成する を参照してください。以下の情報は、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して構成する必要のあるパラメータについて説明しています。

TiDB Reader のコード

次のコードは、TiDB データソースからデータを読み取る同期タスクを構成する方法の例を示しています。

説明

JSON 例のコメントは、いくつかの主要なパラメータの定義を示すためだけに使用されます。パラメータを構成する際は、コメントを削除してください。

{
  "type": "job",
  "version": "2.0",
  "steps":
  [
    {
      "stepType": "tidb",
      "parameter":
      {
        "column":
        [
          "id",
          "name"
        ],
        "where": "",
        "splitPk": "id",
        "connection":
        [
          {
            "selectedDatabase": "test_database",
            "datasource": "test_datasource",
            "table":
            [
              "test_table"
            ]
          }
        ]
      },
      "name": "Reader", // リーダーの名前
      "category": "reader"
    },
    {
      "stepType": "odps",
      "parameter":
      {
      },
      "name": "Writer", // ライターの名前
      "category": "writer"
    }
  ],
  "setting":
  {
    "errorLimit":
    {
      "record": "0"
    },
    "speed":
    {
      "throttle": false,
      "concurrent": 3
    }
  },
  "order":
  {
    "hops":
    [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

TiDB Reader のコードのパラメータ

パラメータ

説明

必須

デフォルト値

datasource

データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディタを使用してデータソースを追加できます。

はい

デフォルト値なし

table

データを読み取るテーブルの名前。

table パラメータに対して高度な構成を行い、テーブル範囲を指定できます。例:

  • table パラメータを 'table_[0-99]' に設定します。この値は、TiDB Reader がシャーディングされたデータベースの 'table_0' から 'table_99' までのテーブルからデータを読み取ることを示します。

  • table パラメータを '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]' に設定します。この値は、TiDB Reader が 'table_000' から 'table_999' までのテーブルからデータを読み取ることを示します。この方法は、テーブル名の数値サフィックスの長さが同じ場合にのみ使用できます。

はい

デフォルト値なし

column

データを読み取る列の名前。JSON 配列で名前を指定します。デフォルト値は [ * ] で、ソーステーブルのすべての列を示します。

  • 読み取る特定の列を選択できます。

  • 列の順序を変更できます。これは、ソーステーブルのスキーマで指定された順序とは異なる順序で列を指定できることを示します。

  • 定数がサポートされています。列名は、MySQL でサポートされている SQL 構文に準拠して配置する必要があります。たとえば、["id","table","1","'test_constant'","'null'","to_char(a+1)","2.3","true"] などです。

    • id:列名。

    • table:予約キーワードを含む列の名前。

    • 1:整数定数。

    • 'test_constant':文字列定数。単一引用符 (') で囲みます。

    • null:

      • " " は空の文字列を示します。

      • null は null 値を示します。

      • 'null' は文字列 null を示します。

    • to_char(a+1):文字列の長さを計算するために使用される関数式。

    • 2.3:浮動小数点定数。

    • true:ブール値。

  • column パラメータは、データを読み取るすべての列を明示的に指定する必要があります。このパラメータを空にすることはできません。

はい

デフォルト値なし

splitPk

TiDB Reader がデータを読み取るときにデータシャーディングに使用されるフィールド。このパラメータを構成すると、このパラメータの値に基づいてデータシャーディングが実行され、並列スレッドを使用してデータを読み取ることができます。これにより、データ同期の効率が向上します。

  • ソーステーブルのプライマリキー列の名前をシャードキーとして指定することをお勧めします。このようにして、データはプライマリキー列に基づいて異なるシャードに均等に分散され、特定のシャードにのみ集中的に分散されるのを防ぎます。

  • シャードキーは、整数データ型のデータのみをシャーディングするために使用できます。サポートされていないデータ型のデータをシャーディングするためにシャードキーを使用すると、バッチ同期タスクは指定したシャードキーを無視し、単一スレッドを使用してデータを読み取ります。

  • シャードキーが指定されていない場合、データ同期タスクは単一スレッドを使用してデータを読み取ります。

いいえ

デフォルト値なし

where

WHERE 句。たとえば、このパラメータを gmt_create>$bizdate に設定して、現在の日付に生成されたデータを読み取ることができます。

  • WHERE 句を使用して増分データを読み取ることができます。 where パラメータが指定されていないか空の場合、TiDB Reader はすべてのデータを読み取ります。

  • WHERE 句は LIMIT キーワードをサポートしていません。

いいえ

デフォルト値なし