Corda OS 4.4在Cordapp部署之间迁移数据

Corda OS 4.4在Cordapp部署之间迁移数据,corda,Corda,我有一个项目,需要多次部署corda节点,从开发环境到预生产环境再到生产环境。每个环境都有自己的数据存储在节点上,但当然这些数据必须由管理员手动重新输入。交付指日可待,我们现在正试图弄清楚如何从本质上创造某种方式,让我们能够处理CD类型的情况。也就是说,我们希望为cordapps提供一些更新,但是在数据正在使用的“实时”情况下 我想知道是否有必要进行数据迁移以促进这些更新?在这些部署之间不太可能有corda版本更新,但可能会有架构和状态更改等 我可能错过了一种情况,但即使是一种解决方案,例如转储

我有一个项目,需要多次部署corda节点,从开发环境到预生产环境再到生产环境。每个环境都有自己的数据存储在节点上,但当然这些数据必须由管理员手动重新输入。交付指日可待,我们现在正试图弄清楚如何从本质上创造某种方式,让我们能够处理CD类型的情况。也就是说,我们希望为cordapps提供一些更新,但是在数据正在使用的“实时”情况下

我想知道是否有必要进行数据迁移以促进这些更新?在这些部署之间不太可能有corda版本更新,但可能会有架构和状态更改等

我可能错过了一种情况,但即使是一种解决方案,例如转储数据库,然后运行模式脚本或其他东西,然后导入数据库,也是可行的

我们在Corda OS 4.4上运行这个,使用H2数据库


编辑:如果答案可以在不向后兼容的模式更改(例如删除数据)的情况下给出,那将不胜感激。

Manish已经在评论中对此进行了详细分析,我想说的是,只需看看数据库的外观,并确保了解模式迁移

另外,请注意,您有一个参数,您应该将其添加到cordapps以进行模式迁移

节点故障{
projectCordapp{
deploy=false
}
cordapp项目(“:合同”)
cordapp项目(“:工作流”)
runSchemaMigration=true
rpcUsers=[[用户:“用户1”,“密码”:“测试”,“权限”:[“所有”]]
}
资料来源:

有关架构迁移的链接:

数据库表上的链接:


我希望您不要在pre-prod或prod-env上使用H2。假设您使用的是postgres,您将关闭节点以进行架构更新和其他与数据库相关的更改或corda升级。数据可以保留在每个depoyment的节点上。上面的问题似乎很广泛。嗨,曼尼什,谢谢你的评论。我想具体的问题是,在部署期间保留数据是否存在任何“陷阱”或细微差别,特别是与构建/重建节点有关的数据?假设我使用postgres,如果我为了重新部署而关闭节点,我将关闭旧节点,然后我可能会执行一些模式更新(从我的阅读资料中提取脚本),然后通过替换任何jar文件(节点可执行文件)和Cordapp文件,使用新构建(比方说模式更改或类似的内容)打开新节点。在这种情况下,我应该希望保留我的数据?如果在表架构更改后调出相同的节点,那么您的节点将保留旧数据。检查此链接可能有助于[corda resetting node](),因此我认为这实际上更多地属于db维护,而不是corda特定的应用程序。schema是通用的这一事实意味着SQL查询和基本上对齐db和schema就足以确保从开发到生产的任何迁移都可以进行。感谢您的回复!谢谢大卫的回复。我发现在我的特殊情况下,这对我特别有帮助。在我们的例子中,我们运行的是OS 4.4,它对运行模式的任何基于corda的功能的访问都是有限的,因此我认为基本上是由管理员自己生成和运行任何升级脚本。不过,谢谢。