【发布时间】:2022-01-26 14:42:43
【问题描述】:
我有一个用 java 制作的应用程序,它为用户提出的每个请求多次查询模式(大约 1000 次)。 这最初是在多年前以这种方式设计的,目前代码重构对于方法的复杂性来说风险太大。 无论如何,为了利用数据库工作,我想引入一个 Ignite 层来缓存大部分基本静态的查询数据,所以我希望这些查询中的许多查询会更快,并且不再在数据库上。
我已经在服务器上正确配置了 ignite 以缓存我需要的表,一切都很好,直到我尝试在 DBEaver 或 Squirrel 上查询,我发现要在 Ignite DB 上查询的表的名称是ignite 配置称为 property name=cacheName"。
我不想将手放在代码上以逐个更改查询,因此我假设有一种方法可以使查询与 Oracle DB 上的查询保持一致。
例子
在 oracle DB 中我有
在 Ignite 架构中,我有
cacheName.
所以为了查询这个我的查询应该被转换成类似
"select * from cacheName.
似乎在 Ignite 中 cacheName 被认为是一个模式,问题是每个表都有不同的模式。我应该考虑重构所有查询还是有办法保持相同的查询格式?
我的配置是这样的
取自一张表配置
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="<TableName>Cache"/>
<property name="cacheMode" value="PARTITIONED"/>
<property name="atomicityMode" value="ATOMIC"/>
<property name="cacheStoreFactory">
<bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory">
<property name="dataSourceBean" value="dsOracle"/>
<property name="dialect">
<bean class="org.apache.ignite.cache.store.jdbc.dialect.OracleDialect">
</bean>
</property>
<property name="types">
<list>
<bean class="org.apache.ignite.cache.store.jdbc.JdbcType">
<property name="cacheName" value="<TableName>Cache"/>
<property name="keyType" value="package.obfuscated.key"/>
<property name="valueType" value="package.obfuscated.type"/>
<property name="databaseSchema" value="<DBSchemaName>"/>
<property name="databaseTable" value="<TableName>"/>
<property name="keyFields">
<list>
<bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
。 . . [表格字段列表] . .
非常感谢
【问题讨论】:
-
嗯...如果您正在寻求有关如何做重构以外的其他事情的帮助,我认为是时候重构了。
标签: mysql database oracle caching ignite