在遗留 java sql 项目中集成 apache ignite 加入问题

Integrating apache ignite in legacy java sql based project joins issue

我有一个遗留 java 项目,其中有 1000 多个 table 和很多 SQL 个查询。

为了获得更好的查询性能,我正在研究内存数据库中的 apache ignite,我不想使用第 3 方持久性机制,后者基于我在我的成功实现的缓存(CacheStore) POC,不幸的是我有很多复杂的查询,有很多连接,在这种情况下,我必须使用缓存存储名称更新我的查询,如示例

    private static void select(IgniteCache<Long, Person> personCache, String msg) {
        String sql =
            "select p.id, concat(p.firstName, ' ', p.lastName), o.name, p.resume, p.salary " +
            "from Person as p, \"" + ORG_CACHE + "\".Organization as o " +
            "where p.orgId = o.id";

        List<List<?>> res = personCache.query(new SqlFieldsQuery(sql).setDistributedJoins(true)).getAll();

        print(msg);

        for (Object next : res)
            System.out.println(">>>     " + next);
    }

我真的希望避免这种情况,并使用原生 SQL。

是否有任何其他可能的解决方案来使用第 3 方持久性和缓存实现连接

谢谢

创建缓存时,可以将其sqlSchema设置为"PUBLIC"。如果您对所有缓存都这样做,您将永远不需要明确指定它们的模式(如果这是您的问题)。