ApacheIgnite的多个持久性存储

ApacheIgnite的多个持久性存储,ignite,Ignite,我有一个用例,其中我必须为我的ignite集群支持多个持久性存储,例如,缓存A1应该从数据库db1启动,缓存B1应该从数据库db2启动。可以这样做吗?在ignite配置XML中,我只能提供一个持久性存储详细信息 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.sprin

我有一个用例,其中我必须为我的ignite集群支持多个持久性存储,例如,缓存A1应该从数据库db1启动,缓存B1应该从数据库db2启动。可以这样做吗?在ignite配置XML中,我只能提供一个持久性存储详细信息

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd">

<!-- Datasource for Persistence. -->
<bean name="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:roc12c" />
    <property name="username" value="test" />
    <property name="password" value="test" />
</bean>


在我的CacheStore实现中,我只能访问此数据库,对吗

我没有尝试过这个,但是如果它与其他bean配置的系统相似的话。您应该能够创建另一个具有不同名称和配置的bean。然后在
A1
B1
的缓存配置中指定不同的数据源。话虽如此,我只是从理论上猜测

也许你已经这么做了,但我不能从你的问题中看出。如果您选择以这种方式实现缓存,那么您肯定可以将两个缓存配置为具有不同的数据源。这就是我目前实现多个缓存的方式。在我使用的缓存存储中,我专门调用要转到的数据库

这是我的缓存配置

    <property name="cacheConfiguration">
        <bean class="org.apache.ignite.configuration.CacheConfiguration">
            <!-- Set a cache name. -->
            <property name="name" value="recordData"/>
            <property name="rebalanceMode" value="ASYNC"/>
            <property name="cacheMode" value="PARTITIONED"/>
            <property name="backups" value="1"/>
            <!-- Enable Off-Heap memory with max size of 10 Gigabytes (0 for unlimited). -->
            <property name="memoryMode" value="OFFHEAP_TIERED"/>
            <property name="offHeapMaxMemory" value="0"/>
            <property name="swapEnabled" value="false"/> 

            <property name="cacheStoreFactory">
                <bean class="javax.cache.configuration.FactoryBuilder" factory-method="factoryOf">
                    <constructor-arg value="com.company.util.MyDataStore"/>
                </bean>
            </property>
            <property name="readThrough" value="true"/>
            <property name="writeThrough"  value="true"/>

        </bean>
    </property>


缓存存储是针对每个缓存配置的,因此您只需将不同的数据源注入不同的存储。您展示的只是一个独立的数据源bean,它甚至不是
IgniteConfiguration
的一部分。您可以有多个具有不同ID的数据源bean。

您可以添加从中获得该示例的文档吗?@Carlos这是Ignite站点提供的示例程序Ignite-Config.xml的一部分。我将把这个“dataSource”bean注入到CacheJdbcPojoStoreFactory对象中,这个工厂将使用CacheConfiguration.setCacheStoreFactory方法在我的CacheConfiguration对象中设置。实际上,我遵循的是自动持久化技术,我们可以避免为每个缓存[链接]实现CacheStore。