在 RDBMS 系统中,即使表中已有数据,我也可以添加新列。我想知道在存储类对象时使用 Ignite 持久存储执行此操作的建议方法是什么?
如果我有以下包含大量数据的类(class):
public class Person implements Serializable
{
@QuerySqlField
String firstName;
@QuerySqlField
String lastName;
}
稍后我可能想向此类添加新字段,例如
public class Person implements Serializable
{
@QuerySqlField
String firstName;
@QuerySqlField
String lastName;
@QuerySqlField
Date birthday;
}
我可以毫无问题地放置和获取此类的旧版本和新版本吗?当我从持久存储中读取旧版本的类时,新字段值会发生什么情况?
当旧版本的数据中没有生日列时,SQL 查询将如何工作?
感谢您的任何建议。
最佳答案
是的,在客户端更新类定义后,您可以透明地放置和获取对象。唯一的要求是不要将此类部署在服务器节点的本地类路径上。
但是,在这种情况下,SQL 不会自动选择此选项,并且不会处理注释。要在运行时更改 SQL 模式,您需要使用 DDL 命令(ALTER TABLE、CREATE IMDEX 等)。更多详细信息请参见:https://apacheignite-sql.readme.io/docs/ddl
关于java - Apache Ignite 持久存储类版本的推荐方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044421/