Apache Ignite:是从内存还是从磁盘读取数据?

时间:2019-06-19 06:26:25

标签: spring-boot ignite

我需要了解以下Ignite配置是否将从内存或磁盘提供数据。

点燃配置:

<property name="dataStorageConfiguration">
    <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
        <property name="defaultDataRegionConfiguration">
            <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
                <property name="persistenceEnabled" value="true"/>
            </bean>
        </property>
    </bean>
</property>

Java代码:

ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800");
try (IgniteClient client = Ignition.startClient(cfg)) {
    ClientCache<Long, SensorsWaiting> cache = client.cache("SQL_PUBLIC_FOO");
    FieldsQueryCursor<List<?>> query = cache.query(new SqlFieldsQuery("select * from foo"));
}

问题的背景: 我期望大量查询,并且需要从内存中提供结果。同时,我需要将数据存储到磁盘,以防Ignite Server崩溃或需要重新启动。

  • 我的理解是否正确,在这种情况下,我的数据是通过内存提供的?
  • 如果我使用JDBC驱动程序怎么办?还是一样吗?缓存和jdbc驱动程序有什么区别?

1 个答案:

答案 0 :(得分:1)

如果它在内存中,它将从内存中提供,否则它将从磁盘中拉出。 (如果您的数据量超过内存或群集启动时,此区别很重要。)

不同的API都访问相同的数据。无论您使用的是JCache(获取,放置),SqlFieldsQuery还是JDBC / ODBC,都是一样的。