SQL和H2数据库连接到R3 Corda中的节点数据库

时间:2018-10-01 06:17:47

标签: corda

如果我们尝试在SQL Server中托管Corda节点数据库,是否可以将所有这些主机托管在单个数据库中?如果是的话,该怎么做以及会产生什么影响。

能否将在部署节点时生成的内置H2数据库存储在系统中的本地位置,以使数据成为永久性数据,并且在下一个版本中不会丢失?

1 个答案:

答案 0 :(得分:1)

共享H2数据库

从Corda 3开始,每个节点默认都会启动其自己的H2数据库。

但是,您可以将多个节点指向单个独立的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将被安装,但旧的节点数据仍将存在。