在遗留 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"
。如果您对所有缓存都这样做,您将永远不需要明确指定它们的模式(如果这是您的问题)。
我有一个遗留 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"
。如果您对所有缓存都这样做,您将永远不需要明确指定它们的模式(如果这是您的问题)。