选择 Driver 或 ORM
TiDB 与 MySQL 协议高度兼容,但某些功能与 MySQL 不兼容。完整的兼容性差异列表,请参见 MySQL Compatibility。
Java
本节介绍在 Java 中如何使用驱动程序和 ORM 框架。
Java 驱动程序
Support level: Full
你可以按照 MySQL 文档 下载并配置 Java JDBC 驱动程序。建议使用与 TiDB v6.3.0 及以上版本兼容的最新 GA 版本的 MySQL Connector/J。
关于如何构建完整应用的示例,请参见 Build a simple CRUD app with TiDB and JDBC。
Support level: Full
TiDB-JDBC 是基于 MySQL 8.0.29 定制的 Java 驱动程序。该驱动基于 MySQL 官方版本 8.0.29 编译,修复了原生 JDBC 在 prepare 模式下多参数和多字段 EOF 的 bug,并新增了自动维护 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 认证,请在 <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 框架
Support level: Full
为了避免手动管理应用中不同依赖之间的复杂关系,你可以使用 Gradle 或 Maven 获取所有依赖(包括间接依赖)。注意,只有 Hibernate 6.0.0.Beta2
及以上版本支持 TiDB 方言。
如果你使用 Maven,请在 <dependencies></dependencies>
中添加:
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.2.3.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
如果你使用 Gradle,请在 dependencies
中添加:
implementation 'org.hibernate:hibernate-core:6.2.3.Final'
implementation 'mysql:mysql-connector-java:8.0.33'
- 关于使用 Hibernate 通过原生 Java 构建 TiDB 应用的示例,请参见 Build a simple CRUD app with TiDB and Hibernate。
- 关于使用 Spring Data JPA 或 Hibernate 通过 Spring 构建 TiDB 应用的示例,请参见 Build a TiDB app using Spring Boot。
此外,你还需要在你的 Hibernate 配置文件 中指定 TiDB 方言:org.hibernate.dialect.TiDBDialect
,该配置仅在 Hibernate 6.0.0.Beta2
及以上版本支持。如果你的 Hibernate 版本早于 6.0.0.Beta2
,请先升级。
Support level: Full
为了避免手动管理应用中不同依赖之间的复杂关系,你可以使用 Gradle 或 Maven 获取所有依赖(包括间接依赖)。
如果你使用 Maven,请在 <dependencies></dependencies>
中添加:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
如果你使用 Gradle,请在 dependencies
中添加:
implementation 'org.mybatis:mybatis:3.5.13'
implementation 'mysql:mysql-connector-java:8.0.33'
关于使用 MyBatis 构建 TiDB 应用的示例,请参见 Build a simple CRUD app with TiDB and MyBatis。
Java 客户端负载均衡
tidb-loadbalance
Support level: Full
tidb-loadbalance 是应用端的负载均衡组件。使用 tidb-loadbalance,可以自动维护 TiDB 服务器的节点信息,并根据策略在客户端分发 JDBC 连接。直接使用客户端应用与 TiDB 服务器的 JDBC 连接,性能优于使用负载均衡组件。
目前,tidb-loadbalance 支持的策略包括:roundrobin、random 和 weight。
如果你使用 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-driver/mysql
Support level: Full
要下载并配置 Golang 驱动程序,请参考 go-sql-driver/mysql 文档。
关于如何构建完整应用的示例,请参见 Connect to TiDB with Go-MySQL-Driver。
Golang ORM 框架
GORM
Support level: Full
GORM 是 Golang 中流行的 ORM 框架。要获取所有依赖,可以使用 go get
命令。
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
关于使用 GORM 构建 TiDB 应用的示例,请参见 Connect to TiDB with GORM。
Python
本节介绍在 Python 中如何使用驱动程序和 ORM 框架。
Python 驱动程序
Support level: Compatible
你可以按照 PyMySQL 文档 下载并配置驱动程序。建议使用 PyMySQL 1.0.2 及以上版本。
关于如何使用 PyMySQL 构建 TiDB 应用的示例,请参见 Connect to TiDB with PyMySQL。
Support level: Compatible
你可以按照 mysqlclient 文档 下载并配置驱动程序。建议使用 mysqlclient 2.1.1 及以上版本。
关于如何使用 mysqlclient 构建 TiDB 应用的示例,请参见 Connect to TiDB with mysqlclient。
Support level: Compatible
你可以按照 MySQL Connector/Python 文档 下载并配置驱动程序。建议使用 Connector/Python 8.0.31 及以上版本。
关于如何使用 MySQL Connector/Python 构建 TiDB 应用的示例,请参见 Connect to TiDB with MySQL Connector/Python。
Python ORM 框架
Support level: Full
django 是流行的 Python Web 框架。为解决 TiDB 与 Django 之间的兼容性问题,PingCAP 提供了 TiDB 方言 django-tidb
。你可以参考 django-tidb 安装指南。
关于使用 Django 构建 TiDB 应用的示例,请参见 Connect to TiDB with Django。
Support level: Full
SQLAlchemy 是流行的 Python ORM 框架。要获取所有依赖,可以使用 pip install SQLAlchemy==1.4.44
命令。建议使用 SQLAlchemy 1.4.44 及以上版本。
关于使用 SQLAlchemy 构建 TiDB 应用的示例,请参见 Connect to TiDB with SQLAlchemy。
Support level: Compatible
peewee 是流行的 Python ORM 框架。要获取所有依赖,可以使用 pip install peewee==3.15.4
命令。建议使用 peewee 3.15.4 及以上版本。
关于使用 peewee 构建 TiDB 应用的示例,请参见 Connect to TiDB with peewee。
在确定了驱动程序或 ORM 后,你可以 连接到你的 TiDB 集群。