Apache Ignite JDBC瘦客户端不适用于现有缓存

时间:2017-09-11 14:53:46

标签: ignite

我创建了一个Ignite缓存"联系"并添加了#34; Person"反对它。 当我使用Ignite JDBC Client模式时,我能够查询此缓存。但是当我实现JDBC瘦客户端时,它表示表Person不存在。 我用这种方式尝试了查询:

Select * from Person

Select * from contact.Person

两者都不适用于瘦客户端。我正在使用Ignite 2.1。 感谢您提供有关如何使用瘦客户端查询现有缓存的帮助。 谢谢。

default-config.xml中的缓存配置

    <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
        <!-- Enabling Apache Ignite Persistent Store. -->
    <property name="persistentStoreConfiguration">
            <bean class="org.apache.ignite.configuration.PersistentStoreConfiguration"/>
        </property>

        <property name="binaryConfiguration">
            <bean class="org.apache.ignite.configuration.BinaryConfiguration">
                <property name="compactFooter" value="false"/>
            </bean>
        </property>

        <property name="memoryConfiguration">
            <bean class="org.apache.ignite.configuration.MemoryConfiguration">
                <!-- Setting the page size to 4 KB -->
                <property name="pageSize" value="#{4 * 1024}"/>
            </bean>
        </property>
        <!-- Explicitly configure TCP discovery SPI to provide a list of initial nodes. -->
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
                        <property name="addresses">
                            <list>
                                <!-- In distributed environment, replace with actual host IP address. -->
                                <value>127.0.0.1:55500..55502</value>
                            </list>
                        </property>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>
</beans>

代码服务器端的缓存配置

CacheConfiguration<Long, Person> cc = new CacheConfiguration<>(cacheName);            
    cc.setCacheMode(CacheMode.REPLICATED);
    cc.setRebalanceMode(CacheRebalanceMode.ASYNC);
    cc.setIndexedTypes(Long.class, Person.class);
    cache = ignite.getOrCreateCache(cc);

瘦客户端JDBC网址

 Class.forName("org.apache.ignite.IgniteJdbcThinDriver");
            // Open the JDBC connection.
            Connection conn = DriverManager.getConnection("jdbc:ignite:thin://192.168.1.111:10800");

            Statement st = conn.createStatement();

1 个答案:

答案 0 :(得分:2)

如果要使用SQL查询现有缓存中的数据,则应在缓存配置中指定SQL架构。在创建缓存之前添加以下代码:

boolContainer.SomeValue

请注意,您已配置持久性,因此当您执行cc.setSqlSchema("PUBLIC"); 时,如果已保留具有此名称的缓存,则不会应用新配置。例如,您应该删除持久性数据或改为使用ignite.getOrCreateCache(cc);方法。