ApacheIgnite瘦JDBC驱动程序是否与Atomicity=TRANSACTIONAL的缓存一起工作



我已经阅读了几个小时的文档,但找不到明确的答案。Apache Ignite和Grid Gain文档指出,对于缓存,我可以在此处使用ATOMIC、TRANSACTIONAL或TRANSACTIONAL_SNAPSHOT对于TRANSACTIONAL,它指出

"在这种模式下,保证了关键值的事务一致性仅API操作";

任何地方都没有提到JDBC。

因此,我通过JDBC连接到GridGain集群,并且我在由这样的SQL语句创建的缓存上通过JDBC连接使用INSERT/UPDATE/DELETE语句。我的缓存是TRANSACTIONAL

CREATE TABLE IF NOT EXISTS FOO(
ID NUMBER(10,0),
NAME VARCHAR2(100),
PRIMARY KEY (ID)
) WITH "TEMPLATE=PARTITIONED,ATOMICITY=TRANSACTIONAL";

我的JDBC用法是这样的。在这里,我禁用了自动提交,运行了一些语句,然后手动提交。

connect.setAutoCommit(false);
PreparedStatement st1.executeUpdate();  
PreparedStatement st2.executeQuery();
...//other prepared statements executed
connect.commit();

我已经对集群中的两个数据节点进行了一些测试,我认为没有问题。因此,根据定义,JDBC连接必须使用悲观锁,就像Key-Value API一样。我的假设正确吗?我的JDBC使用是否安全

Ignite当前不支持SQL事务。

您可以使用SQL/JDBC来使用表,但例如,如果您进行了一次大的更新或需要原子地更改两条记录,则可能会记录一些(但不是全部(更新。

如果需要事务,则需要使用键值API,而不是SQL/JDBC。

最新更新