class 版本的 Apache Ignite 持久存储推荐方式

Apache Ignite persistent store recommended way for class versions

在 RDBMS 系统中,即使 table 中已有数据,我也可以添加新列。我想知道在存储 class 个对象时使用 Ignite 持久存储执行此操作的建议方法是什么?

如果我有以下 class 和大量数据:

public class Person implements Serializable
{
  @QuerySqlField
  String firstName;

  @QuerySqlField
  String lastName;
}

稍后我可能想向这个 class 添加一个新字段,比如

public class Person implements Serializable
{
  @QuerySqlField
  String firstName;

  @QuerySqlField
  String lastName;

  @QuerySqlField
  Date birthday;
}

我可以毫无问题地放置和获取这个 class 的旧版本和新版本吗?当我从持久存储中读取 class 的旧版本时,新字段值会发生什么变化?

当生日列在旧版本数据中不可用时,SQL 查询将如何工作?

感谢您的任何建议。

是的,您可以在客户端更新 class 定义后透明地放置和获取对象。唯一的要求是不要在服务器节点的本地 class 路径上部署此 class。

但是,

SQL 不会自动拾取它,并且在这种情况下不会处理注释。要在运行时更改 SQL 架构,您需要使用 DDL 命令(ALTER TABLE、CREATE IMDEX 等)。此处有更多详细信息:https://apacheignite-sql.readme.io/docs/ddl