Java ApacheIgnite持久存储类版本的推荐方法
在RDBMS系统中,即使表中已有数据,我也可以添加新列。我想知道在存储类对象时,使用Ignite persistent store执行此操作的建议方法是什么 如果我有一个包含大量数据的类:Java ApacheIgnite持久存储类版本的推荐方法,java,database,ignite,persistent,Java,Database,Ignite,Persistent,在RDBMS系统中,即使表中已有数据,我也可以添加新列。我想知道在存储类对象时,使用Ignite persistent store执行此操作的建议方法是什么 如果我有一个包含大量数据的类: public class Person implements Serializable { @QuerySqlField String firstName; @QuerySqlField String lastName; } 稍后我可能会想在这个类中添加一个新字段,比如 public cl
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命令(ALTERTABLE、CREATEIMDEX等)。更多详情请点击此处:谢谢。不在服务器节点上部署该类意味着服务器将使用该类的旧版本,或者它们在任何时候都不应该有任何此类定义?你能解释一下原因吗?@DonTequila没有部署该类意味着服务器节点上根本没有任何版本的类。Ignite使用特殊的二进制格式存储数据,允许这样做:再次感谢您的回答,但我仍然感到困惑。服务器节点不需要这些类来处理它们和计算机作业吗?你说的是纯数据库服务器节点吗?因此,您建议将DB服务器节点与计算服务器节点分开?在compute中,您可以使用
BinaryObject
和withKeepBinary()
(在同一页中介绍)。