JDBC驱动
Ignite 内置了 JDBC 驱动,可以使用标准 SQL 语句(如 SELECT
、INSERT
、UPDATE
、DELETE
)直接从 JDBC 端操作数据。驱动的类名为org.apache.ignite.jdbc.IgniteJdbcDriver
。
当前该驱动的实现不支持以下功能:
- SSL/TLS 连接;
- 多个端点;
- 多语句请求;
CREATE TABLE
、ALTER TABLE
、WITH
和MERGE
命令。
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][¶meter2=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
,可能的值:true
、false
,默认值:false
;trustStorePath
:客户端信任库的路径;trustStorePassword
:信任库密码;keyStorePath
:客户端密钥库的路径;keyStorePassword
:密钥库的密码;clientAuth
:SSL 客户端身份验证,可选值:NONE
、OPTIONAL
、REQUIRE
;ciphers
:逗号分隔的 SSL 密码列表。
1.1.参数优先级
如果使用不同的方式传递相同的参数,JDBC 驱动将按以下顺序确定优先级:
- 在
Connection
对象中传递的 API 参数; - 带该参数的连接字符串的最后一个实例;
- 连接期间传递的
Properties
对象。
2.执行事务
JDBC 驱动可以执行commit
和rollback
事务,更多信息请参见执行事务的相关章节。
以下是提交事务的方法:
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