Driverまたは ORM を選択してください
注記:
TiDB は、ドライバーと ORM に対して次の 2 つのサポート レベルを提供します。
- Full : TiDB がツールのほとんどの機能と互換性があり、新しいバージョンとの互換性が維持されていることを示します。 PingCAP は、最新バージョンTiDB がサポートするサードパーティ ツールとの互換性テストを定期的に実施します。
- 互換性: 対応するサードパーティ ツールが MySQL に適合しており、TiDB が MySQL プロトコルと高い互換性があるため、TiDB はツールのほとんどの機能を使用できることを示します。ただし、PingCAP はツールのすべての機能について完全なテストを完了していないため、予期しない動作が発生する可能性があります。
詳細については、 TiDB がサポートするサードパーティ ツールを参照してください。
TiDB は MySQL プロトコルと高い互換性がありますが、一部の機能は MySQL と互換性がありません。互換性の違いの完全なリストについては、 MySQL の互換性を参照してください。
Java
このセクションでは、 Javaでドライバーと ORM フレームワークを使用する方法について説明します。
Javaドライバー
- MySQL-JDBC
- TiDB-JDBC
サポートレベル:フル
MySQL ドキュメントに従って、 Java JDBC ドライバーをダウンロードして構成できます。 TiDB v6.3.0 以降では MySQL Connector/J 8.0.33 以降を使用することをお勧めします。
ヒント:
8.0.32 より前の Connector/J 8.0 バージョンにはバグあり、v6.3.0 より前の TiDB バージョンを使用するとスレッドがハングする可能性があります。この問題を回避するには、MySQL Connector/J 8.0.32 以降のバージョン、または TiDB JDBC ( 「TiDB-JDBC」タブを参照) を使用することをお勧めします。
完全なアプリケーションを構築する方法の例については、 TiDB と JDBC を使用してシンプルな CRUD アプリを構築するを参照してください。
サポートレベル:フル
TiDB-JDBCは、MySQL 8.0.29 に基づいてカスタマイズされたJavaドライバーです。 MySQL 正式バージョン 8.0.29 に基づいてコンパイルされた TiDB-JDBC は、オリジナルの JDBC の準備モードにおけるマルチパラメータおよびマルチフィールド EOF のバグを修正し、自動 TiCDC スナップショット メンテナンスや SM3 認証プラグインなどの機能を追加します。
SM3 に基づく認証は、TiDB の TiDB-JDBC でのみサポートされています。
Maven を使用する場合は、次の内容をpom.xml
ファイルの<dependencies></dependencies>
セクションに追加します。
<dependency>
<groupId>io.github.lastincisor</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29-tidb-1.0.0</version>
</dependency>
SM3 認証を有効にする必要がある場合は、 pom.xml
ファイルの<dependencies></dependencies>
セクションに次の内容を追加します。
<dependency>
<groupId>io.github.lastincisor</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29-tidb-1.0.0</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.67</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.67</version>
</dependency>
Gradle を使用する場合は、次の内容をdependencies
に追加します。
implementation group: 'io.github.lastincisor', name: 'mysql-connector-java', version: '8.0.29-tidb-1.0.0'
implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.67'
implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.67'
Java ORM フレームワーク
注記:
現在、Hibernate はネストされたトランザクションはサポートされていませんを実行します。
v6.2.0 以降、TiDB はセーブポイントをサポートします。
@Transactional
でPropagation.NESTED
トランザクション伝播オプションを使用するには、つまり@Transactional(propagation = Propagation.NESTED)
を設定するには、TiDB が v6.2.0 以降であることを確認してください。
- Hibernate
- MyBatis
サポートレベル:フル
アプリケーションのさまざまな依存関係間の複雑な関係を手動で管理することを避けるために、 グラドルまたはメイビンを使用して、間接的な依存関係を含むアプリケーションのすべての依存関係を取得できます。 Hibernate 6.0.0.Beta2
以降のみが TiDB ダイアレクトをサポートしていることに注意してください。
Maven を使用している場合は、以下を<dependencies></dependencies>
に追加します。
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.0.0.CR2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
Gradle を使用している場合は、次をdependencies
に追加します。
implementation 'org.hibernate:hibernate-core:6.0.0.CR2'
implementation 'mysql:mysql-connector-java:5.1.49'
- Hibernate を使用してネイティブJavaによって TiDB アプリケーションを構築する例については、 TiDB と Hibernate を使用してシンプルな CRUD アプリを構築するを参照してください。
- Spring Data JPA または Hibernate を使用して Spring で TiDB アプリケーションを構築する例については、 Spring Boot を使用して TiDB アプリを構築するを参照してください。
さらに、 TiDB ダイアレクトをHibernate 構成ファイル : org.hibernate.dialect.TiDBDialect
で指定する必要があります。これは Hibernate 6.0.0.Beta2
以降でのみサポートされます。 Hibernate
バージョンが6.0.0.Beta2
より前の場合は、まずそれをアップグレードしてください。
注記:
バージョン
Hibernate
をアップグレードできない場合は、代わりにMySQL 5.7ダイアレクトorg.hibernate.dialect.MySQL57Dialect
を使用してください。ただし、この設定により、予期しない結果が発生したり、 TiDB 固有の機能 ( シーケンスなど) が欠如したりする可能性があります。
サポートレベル:フル
アプリケーションのさまざまな依存関係間の複雑な関係を手動で管理することを避けるために、 グラドルまたはメイビンを使用して、間接的な依存関係を含むアプリケーションのすべての依存関係を取得できます。
Maven を使用している場合は、次の行を<dependencies></dependencies>
に追加します。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
Gradle を使用している場合は、次の行をdependencies
に追加します。
implementation 'org.mybatis:mybatis:3.5.9'
implementation 'mysql:mysql-connector-java:5.1.49'
MyBatis を使用して TiDB アプリケーションを構築する例については、 TiDB と MyBatis を使用してシンプルな CRUD アプリを構築するを参照してください。
Javaクライアントのロード バランシング
tidb-ロードバランス
サポートレベル:フル
tidb-ロードバランスはアプリケーション側の負荷分散コンポーネントです。 tidb-loadbalance を使用すると、TiDBサーバーのノード情報を自動的に維持し、tidb-loadbalance ポリシーを使用してクライアント上で JDBC 接続を分散できます。クライアント アプリケーションと TiDBサーバーの間で直接 JDBC 接続を使用すると、負荷分散コンポーネントを使用するよりも高いパフォーマンスが得られます。
現在、 tidb-loadbalance は、ラウンドロビン、ランダム、および重みのポリシーをサポートしています。
注記:
tidb-loadbalance はmysql-コネクタ-jとともに使用する必要があります。
Maven を使用する場合は、 pom.xml
ファイルの<dependencies></dependencies>
の要素本体に次の内容を追加します。
<dependency>
<groupId>io.github.lastincisor</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29-tidb-1.0.0</version>
</dependency>
<dependency>
<groupId>io.github.lastincisor</groupId>
<artifactId>tidb-loadbalance</artifactId>
<version>0.0.5</version>
</dependency>
Gradle を使用する場合は、次の内容をdependencies
に追加します。
implementation group: 'io.github.lastincisor', name: 'mysql-connector-java', version: '8.0.29-tidb-1.0.0'
implementation group: 'io.github.lastincisor', name: 'tidb-loadbalance', version: '0.0.5'
Golang
このセクションでは、 Golangでドライバーと ORM フレームワークを使用する方法について説明します。
Golangドライバー
go-sql-ドライバー/mysql
サポートレベル:フル
Golangドライバーをダウンロードして構成するには、 go-sql-driver/mysql ドキュメントを参照してください。
完全なアプリケーションを構築する方法の例については、 Go-MySQL-Driver を使用して TiDB に接続するを参照してください。
Golang ORM フレームワーク
ゴーム
サポートレベル:フル
GORM は、 Golangの人気のある ORM フレームワークです。アプリケーション内のすべての依存関係を取得するには、 go get
コマンドを使用できます。
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
GORM を使用して TiDB アプリケーションを構築する例については、 GORM を使用して TiDB に接続するを参照してください。
パイソン
このセクションでは、Python でドライバーと ORM フレームワークを使用する方法について説明します。
Python ドライバー
- PyMySQL
- mysqlclient
- MySQL Connector/Python
サポートレベル:互換性あり
PyMySQL ドキュメントに従ってドライバーをダウンロードして設定できます。 PyMySQL 1.0.2 以降のバージョンを使用することをお勧めします。
PyMySQL を使用して TiDB アプリケーションを構築する例については、 PyMySQL を使用して TiDB に接続するを参照してください。
サポートレベル:互換性あり
mysqlクライアントのドキュメントに従ってドライバーをダウンロードして設定できます。 mysqlclient 2.1.1 以降のバージョンを使用することをお勧めします。
mysqlclient を使用して TiDB アプリケーションを構築する例については、 mysqlclient を使用して TiDB に接続するを参照してください。
サポートレベル:互換性あり
MySQL コネクタ/Python ドキュメントに従ってドライバーをダウンロードして構成できます。 Connector/Python 8.0.31 以降のバージョンを使用することをお勧めします。
MySQL コネクタ/Python を使用して TiDB アプリケーションを構築する例については、 MySQL コネクタ/Python を使用して TiDB に接続するを参照してください。
Python ORM フレームワーク
- Django
- SQLAlchemy
- peewee
サポートレベル:フル
ジャンゴは人気のある Python Web フレームワークです。 TiDB と Django の間の互換性の問題を解決するために、PingCAP は TiDB 方言django-tidb
を提供します。インストールするには、 django-tidb
ドキュメントが表示されます。
Django を使用して TiDB アプリケーションを構築する例については、 Django を使用して TiDB に接続するを参照してください。
サポートレベル:フル
SQLアルケミーは、Python の人気のある ORM フレームワークです。アプリケーション内のすべての依存関係を取得するには、 pip install SQLAlchemy==1.4.44
コマンドを使用します。 SQLAlchemy 1.4.44 以降のバージョンを使用することをお勧めします。
SQLAlchemy を使用して TiDB アプリケーションを構築する例については、 SQLAlchemy を使用して TiDB に接続するを参照してください。
サポートレベル:互換性あり
ピーピーは、Python の人気のある ORM フレームワークです。アプリケーション内のすべての依存関係を取得するには、 pip install peewee==3.15.4
コマンドを使用します。 peewee 3.15.4 以降のバージョンを使用することをお勧めします。
peewee を使用して TiDB アプリケーションを構築する例については、 peewee で TiDB に接続するを参照してください。