Skip to content

JDBC驱动

Ignite 内置了 JDBC 驱动,可以使用标准 SQL 语句(如 SELECTINSERTUPDATEDELETE)直接从 JDBC 端操作数据。驱动的类名为org.apache.ignite.jdbc.IgniteJdbcDriver

当前该驱动的实现不支持以下功能:

  • SSL/TLS 连接;
  • 多个端点;
  • 多语句请求;
  • CREATE TABLEALTER TABLEWITHMERGE命令。

1.配置

JDBC 驱动使用客户端连接器来与集群交互。客户端连接器的配置方法,请参见客户端连接器配置的相关章节。

Maven 环境中 JDBC 驱动的导入方式:

xml
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-jdbc</artifactId>
    <version>3.0.0</version>
</dependency>

下面是配置 JDBC 连接的示例:

java
Connection conn = DriverManager.getConnection("jdbc:ignite:thin://127.0.0.1:10800");

该驱动会接入集群中的某个节点,并将所有请求转发给该节点执行。该节点执行 SQL 的分布式处理并对结果进行聚合,然后将最终结果返回给客户端应用。

JDBC 驱动的连接串可以在?分隔符后面添加可选的键-值对列表作为参数,键和值由=符号分隔,多个属性见用&;分隔。分隔符不能混用,要么是&要么是;

jdbc:ignite:thin://host[:port][,host[:port][/schema][[?parameter1=value1][&parameter2=value2],...]]
jdbc:ignite:thin://host[:port][,host[:port][/schema][[?parameter1=value1][;parameter2=value2],...]]
  • host:是必需的,定义要接入的集群节点的主机地址;

  • port:监听的端口,如果省略此参数,则默认使用10800

  • schema:要访问的模式名,默认是PUBLIC。此名称应与 SQL ANSI-99 标准相对应。不带引号的标识符不区分大小写,带引号的标识符区分大小写。当使用分号格式时,也可以将模式定义为名称为 schema 的参数;

  • parameters:是可选参数,现在支持如下的参数:

    • connectionTimeZone:客户端连接时区 ID。客户端可以使用此属性来更改服务端上会话的时区,影响未指定时区的查询中日期的解释。如果未设置,则将使用客户端系统的时区默认值;
    • queryTimeout:等待Statement对象执行的秒数,0 表示没有限制,默认值为0
    • connectionTimeout:驱动等待服务端响应的毫秒数,0 表示没有限制,默认值为0
    • reconnectThrottlingPeriod:重连间隔(毫秒),0 表示没有限制,默认值为30_000
    • reconnectThrottlingRetries:重连次数,0 表示没有限制,默认值为3
    • username:用于对集群进行基本身份验证的用户名;
    • password:用于对集群进行基本身份验证的密码;
    • sslEnabled:是否启用 SSL,可能的值:truefalse ,默认值:false
    • trustStorePath:客户端信任库的路径;
    • trustStorePassword:信任库密码;
    • keyStorePath:客户端密钥库的路径;
    • keyStorePassword:密钥库的密码;
    • clientAuth:SSL 客户端身份验证,可选值:NONEOPTIONALREQUIRE
    • ciphers:逗号分隔的 SSL 密码列表。

1.1.参数优先级

如果使用不同的方式传递相同的参数,JDBC 驱动将按以下顺序确定优先级:

  1. Connection对象中传递的 API 参数;
  2. 带该参数的连接字符串的最后一个实例;
  3. 连接期间传递的Properties对象。

2.执行事务

JDBC 驱动可以执行commitrollback事务,更多信息请参见执行事务的相关章节。

以下是提交事务的方法:

java
// Open the JDBC connection.
Connection conn = DriverManager.getConnection("jdbc:ignite:thin://127.0.0.1:10800");

// Commit a transaction
conn.commit();

也可以使用setAutoCommit()方法将 Ignite 配置为自动提交事务。

以下是回滚事务的方法:

java
conn.rollback();

18624049226