6.11. 基于 JDBC 字符串的缓存存储
基于 JDBC 字符串的缓存存储 JdbcStringBasedStore
,使用 JDBC 驱动程序在底层数据库中加载和存储值。
基于 JDBC 字符串的缓存存储:
- 在表格中,将每个条目存储在其自己的行中,以增加并发负载的吞吐量。
-
使用简单的单对一映射,利用
key-to-string-mapper
接口将每个键映射到String
对象。
Data Grid 提供处理原语类型的默认实施DefaultTwoWayKey2StringMapper
。
除了用于存储缓存条目的 data 表外,存储还会创建一个用于存储元数据的 _META
表。此表用于确保任何现有数据库内容与当前的 Data Grid 版本和配置兼容。
默认情况下,Data Grid 共享不存储,这意味着集群中的每个节点上的所有节点都写入底层存储。如果您希望操作只写入底层数据库一次,您必须将 JDBC 存储配置为共享。
分段
JdbcStringBasedStore
默认使用分段,并要求数据库表中的列表示条目所属的片段。
6.11.1. 配置基于 JDBC 字符串的缓存存储 复制链接链接已复制到粘贴板!
使用可以连接到数据库的基于 JDBC 字符串的缓存存储配置 Data Grid 缓存。
先决条件
-
远程缓存:将数据库驱动程序复制到 Data Grid Server 安装中的
server/lib
目录。 嵌入式缓存:将
infinispan-cachestore-jdbc
依赖项添加到pom
文件中。<dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-cachestore-jdbc</artifactId> </dependency>
<dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-cachestore-jdbc</artifactId> </dependency>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
使用以下方法之一创建基于 JDBC 字符串的缓存存储配置:
声明性地添加
persistence
元素或字段,然后使用以下 schema 命名空间添加string-keyed-jdbc-store
:xmlns="urn:infinispan:config:store:jdbc:15.0"
xmlns="urn:infinispan:config:store:jdbc:15.0"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以编程方式,将以下方法添加到
ConfigurationBuilder
中:persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
使用 dialect 属性或
dialect
() 根据情况,配置基于 JDBC 字符串的缓存存储的任何属性。
例如,指定缓存存储是否使用
shared
属性或shared ()
方法与多个缓存实例共享。- 添加 JDBC 连接工厂,以便 Data Grid 可以连接到数据库。
- 添加存储缓存条目的数据库表。
使用不当的数据类型配置 string-keyed-jdbc-store
可能会导致加载或存储缓存条目时出现异常。如需更多信息,以及作为 Data Grid 版本一部分测试的数据类型列表,请参阅为 Data Grid string-keyed-jdbc-store persistence (Login required)测试的数据库设置。
基于 JDBC 字符串的缓存存储配置
XML
JSON
YAML
ConfigurationBuilder