- nebula 版本:3.4.1
- 部署方式:分布式
- 安装方式:源码编译
- 是否上生产环境:Y
目前有一个需求是针对某个Tag(假设是person)。有一个属性名为birthday.原来schema设计的时候类型为timestamp,需要修改为datetime类型。
但根据文档描述,无法直接修改。
仅允许修改FIXED_STRING和INT类型的长度为更大的长度,不允许减少长度。
仅允许修改FIXED_STRING类型为STRING类型、修改FLOAT类型为DOUBLE类型。
想通过先删除prop再添加add回去。根据文档描述和测试,不能通过这种方式
确保新增的属性名不与已存在或被删除的属性名同名,否则新增属性会失败。
请问还有其他方法可以实现同一Tag重建同名属性名需求吗。谢谢
导出数据,再将修改schema后数据重新导入。---->企业版的导出数据功能,你值得拥有
。
这里背后的逻辑是:
- 由于无法准确判断数据库里是否已经有数据了,为了避免对已经入图的数据的影响,所以禁止了向下调整
- 由于当前的prop内部保存是通过名字保存的,而删除属性以后数据是软删除的,所以删除属性以后再建同名属性,可能会导致脏数据的存在。因此做了禁止;
另外一个逻辑是:
我们认为,作为生产环境,Schema变更是一个相对严肃的事情,应该避免这种行为。开发验证的事情应该在开发环境完成。
回到你这个问题本身:
目前可行的方式应该只有:
- 换属性名;(友情提醒,我们是区分大小写的)
- 删除Tag再建同名Tag和属性,重新导这个Tag的数据(这个可能要验证下)
- 新建Space重新导整个Sapce数据(相对比较麻烦)
1 个赞
system
关闭
4
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。