如果我们尝试在SQL Server中托管Corda节点数据库,是否可以将所有这些主机托管在单个数据库中?如果是的话,该怎么做以及会产生什么影响。
能否将在部署节点时生成的内置H2数据库存储在系统中的本地位置,以使数据成为永久性数据,并且在下一个版本中不会丢失?
答案 0 :(得分:1)
共享H2数据库
从Corda 3开始,每个节点默认都会启动其自己的H2数据库。
但是,您可以将多个节点指向单个独立的H2数据库,如下所示:
java -jar ./h2/bin/h2-1.4.196.jar -webAllowOthers -tcpAllowOthers
)node.conf
节点配置文件中,设置dataSource.url = "jdbc:h2:tcp://localhost:9092/~/nodeUniqueDatabaseName"
,其中nodeUniqueDatabaseName
对于该节点是唯一的对于每个nodeUniqueDatabaseName
,H2都会在用户的主目录中创建文件nodeUniqueDatabaseName.mv.db
。
您还可以设置特定的绝对路径(例如dataSource.url = "jdbc:h2:tcp://localhost:9092/~/Users/szymonsztuka/IdeaProjects/corda3/nodeUniqueDatabaseName"
)。这将在Users/szymonsztuka/IdeaProjects/corda3/
下创建一个数据库文件。
请注意,由于h2服务器以-webAllowOthers -tcpAllowOthers
启动,因此这种方法并不安全,这意味着任何人都可以登录和修改数据库。
跨节点构建维护数据
重新运行deployNodes
时会丢弃H2数据库,因为您被认为正在创建一组全新的节点。如果只想更改已安装的CorDapps,则可以关闭节点,更新其CorDapps(通过按照here所述创建新的CorDapp JAR,并将CorDapp JAR复制到其cordapps
文件夹中)并重新启动该节点。新的CorDapps将被安装,但旧的节点数据仍将存在。