在没有数据库的情况下在 Apache Ignite 中使用 SQL 查询

Using SQL Queries in Apache Ignite without a database

我将 Apache Ignite 用作分布式缓存,其配置是我使用 Ignite Web 控制台基于现有数据库生成的——它是一个 writethrough 缓存,会定期将缓存数据持久保存到 Postgres 数据库。但是,我想在 Java 中为我的项目编写单元测试,并且没有可靠的测试数据库可以使用。

我想要测试的部分内容是我偶尔 运行 在我的 Ignite 缓存上进行的缓存查询——我想使用 sql 查询来执行此操作。但是,我不知道如何在没有数据库的情况下从我的缓存配置中保留 queryEntities。我尝试制作一个新的 xml 文件用于测试目的,它只配置我需要的缓存,并且只设置查询实体(不是数据存储或任何数据库信息),但是当我 运行 测试时我得到"Failed to initialize DB connection" 错误——即使我的配置中没有定义数据库。

有没有办法在不实际将缓存连接到数据库的情况下利用这些查询实体?如果没有,是否有一个好的方法来启动 postgres 数据库作为单元测试的一部分?

您需要检查持久性存储配置并首先禁用它以将所有内容保存在内存中。
接下来,确保您在进行测试缓存配置时没有初始化任何数据库连接(您已经说过您会照顾这个事实)。

cacheCfg.setWriteThrough(false).setReadThrough(false) 定义缓存时应该可以做到(注意缓存启动后cfg不能改变)