gpt4 book ai didi

java - 如何使用JAVA SQL语句在每个Apache ignite缓存中创建表?

转载 作者:行者123 更新时间:2023-11-30 06:09:37 25 4
gpt4 key购买 nike

我可以使用下面的java代码创建ignite缓存:

    Ignition.setClientMode(true);
Set<String> set = new HashSet<>();
set.add("127.0.0.1:48500..48520");

discoveryMulticastIpFinder.setAddresses(set);

TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi();
discoverySpi.setIpFinder(discoveryMulticastIpFinder);

cfg.setDiscoverySpi(discoverySpi);

Ignite ignite = Ignition.start(cfg);
cacheConfiguration = new CacheConfiguration<>(CACHENAME);
cacheConfiguration.setName(CACHENAME);
cacheConfiguration.setSqlSchema("PUBLIC");
cacheConfiguration.setAtomicityMode(CacheAtomicityMode.ATOMIC);
cache = ignite.getOrCreateCache(cacheConfiguration).withKeepBinary();

System.out.println("All Available Cache on server : "+ignite.cacheNames());

ignite.cacheNames() 正在控制台中打印我创建的所有缓存。现在我想在每个缓存中创建像 MYTABLE 这样的表。

我已经尝试过:

cache.query(new SqlFieldsQuery("CREATE TABLE IF NOT EXISTS MYTABLE( TAG VARCHAR,TIMECREATED TIMESTAMP,VALUE DOUBLE, PRIMARY KEY(TAG,TIMECREATED) )")); 

但是这个查询只为所有缓存创建一张表。我无法为上述场景编写类似于下面的查询。

SELECT * FROM "CACHENAME".MYTABLE WHERE SOME_CONDITION = 1;

我已引用[1]:Apache Ignite : How to list all tables and all Caches来自 stackoverflow 的问题,但这似乎对回答我的问题没有多大帮助。

 Collection<QueryEntity> entities = cacheConfiguration.getQueryEntities();
System.out.println("All available tables in "+CACHENAME+"cache : "+entities);

使用上面的代码我可以看到缓存名称,但在该缓存内没有创建表。

最终,我想在每个缓存中创建一个表 MYTABLE,并且我应该能够在 ignite 中使用 JAVA SQL_QUERY 方法进行查询:

 SELECT * FROM "CACHE_NAME".MYTABLE WHERE SOME_CONDITION = 1; 

我们非常重视和赞赏您的回答。

谢谢。

最佳答案

如果你想每个缓存都有一个表,你应该使用 CacheConfiguration#indexedTypes 来定义它们。或CacheConfiguration#queryEntities属性。

这样您将创建以下表格:"cacheName".TypeName

您可以通过更改QueryEntity#tableName来更改表的名称。属性。

有关详细信息,请参阅以下文档页面:https://apacheignite-sql.readme.io/docs/schema-and-indexes

关于java - 如何使用JAVA SQL语句在每个Apache ignite缓存中创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50555766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com