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
在 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