gpt4 book ai didi

java - 自定义模型的缓存/持久化的最佳方法

转载 作者:行者123 更新时间:2023-12-02 09:17:38 25 4
gpt4 key购买 nike

我对 Ignite 还很陌生并正在尝试它。我的用例是我有一个需要缓存/保留的模型。这不是传统的 pojo 模型,而且我想保持存储和模型解耦。所以我不能在传统意义上使用它来注释 pojo 中适当的键/索引。并且需要能够对缓存的数据执行查询。

到目前为止,根据我读过的内容和我的用例,我看到的唯一选项是:

  1. 走完整的 SQL 路线,即使用 Batch Exec 通过 jdbc 创建表、插入、删除、选择。

  2. 将其存储为 BinaryObject,即

IgniteCache<BinaryObject, BinaryObject>

但是这样,我不确定是否可以获得查询支持。因为它会存储为 blob/byte[]。

所以我正在寻找的是,是否还有其他我可能错过的选择?对于 #1,有没有办法使用 jdbc/SQL 和锁定,因为我使用的是atomicity=transactional。

对于#2,有没有办法可以为其添加查询支持。我看了https://github.com/dmagda/ignite_world_demo/blob/master/src/main/java/demo/keyvalue/KeyValueBinaryDataProcessing.java但它不包括查询。

更新给可能遇到此问题的人。

尝试过二进制方法并且有效。引用链接确实使用了 pojo (不完全是我想要的)。但进一步看,要点是为 QueryEntity 设置 valueType,它不需要是类名,只需在放置期间的对象创建期间以及类似的查询期间将值映射到引用即可。

queryEntity.setValueType("employee");

//this can be now referenced while creating an object
ignite.binary().builder("employee");

// similarly used while querying
SqlFieldsQuery sqlQuery = new SqlFieldsQuery("select * from employee");

最佳答案

您可以将其存储为 BinaryObject,并且可以通过将某些字段指定为 map to SQL via QueryEntities 来获得有限的查询支持。 .

然后,您可以通过执行如下查询来获取整个键/值

SELECT _key, _val FROM pojo WHERE name = ?;

请注意,您需要使用 Native SQL API,而 JDBC 不行。

关于java - 自定义模型的缓存/持久化的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58886916/

25 4 0