Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheIgnite持久存储类版本的推荐方法_Java_Database_Ignite_Persistent - Fatal编程技术网

Java ApacheIgnite持久存储类版本的推荐方法

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

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

如果我有一个包含大量数据的类:

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()
(在同一页中介绍)。