与r3 corda中节点数据库的SQL和H2数据库连接

与r3 corda中节点数据库的SQL和H2数据库连接,corda,Corda,如果我们试图在SQL server中托管一个节点数据库,那么我们可以在单个数据库中托管所有节点数据库吗?如果是,如何做,其影响是什么 部署节点时生成的内置H2数据库是否可以本地存储在系统中,以使数据成为永久数据,并且不会在下一次构建中丢失 共享H2数据库 从Corda 3开始,默认情况下,每个节点都会启动自己的H2数据库 但是,您可以将多个节点指向一个单独的H2数据库,如下所示: 启动一个独立的H2实例(例如,java-jar./H2/bin/H2-1.4.196.jar-webAllowOt

如果我们试图在SQL server中托管一个节点数据库,那么我们可以在单个数据库中托管所有节点数据库吗?如果是,如何做,其影响是什么


部署节点时生成的内置H2数据库是否可以本地存储在系统中,以使数据成为永久数据,并且不会在下一次构建中丢失

共享H2数据库

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

但是,您可以将多个节点指向一个单独的H2数据库,如下所示:

  • 启动一个独立的H2实例(例如,
    java-jar./H2/bin/H2-1.4.196.jar-webAllowOthers-tcpAllowOthers
  • node.conf
    node配置文件中,设置
    dataSource.url=“jdbc:h2:tcp://localhost:9092/~/nodeUniqueDatabaseName“
    ,其中
    nodeUniqueDatabaseName
    是该节点唯一的
对于每个
nodeUniqueDatabaseName
,H2将在用户的主目录中创建一个文件
nodeUniqueDatabaseName.mv.db

您还可以设置特定的绝对路径(例如
dataSource.url=“jdbc:h2:tcp://localhost:9092/~/Users/szymonstuka/IdeaProjects/corda3/nodeUniqueDatabaseName“
)。这将在
Users/szymonstuka/IdeaProjects/corda3/
下创建一个数据库文件

请注意,这种方法不安全,因为h2服务器是用
-webAllowOthers-tcpallowoothers
启动的,这意味着任何人都可以登录和修改数据库

跨节点构建维护数据


重新运行
deployNodes
时,H2数据库将被丢弃,因为您将被视为正在创建一组全新的节点。如果您只想更改已安装的CorDapps,则可以关闭节点,更新其CorDapps(按照说明创建新的CorDapps JAR并将CorDapps JAR复制到其
CorDapps
文件夹中),然后重新启动节点。将安装新的CorDapps,但旧的节点数据仍将存在。

早上好。您的问题更多的是关于服务器数据库配置的,而StackOverflow更特别的是关于编程的。我将把您的问题转发到ServerFault论坛。@Joel..节点配置具有“database”属性,该属性允许提及架构名称。所以,如果我们创建单独的模式,并将每个节点指向单独的模式,我认为有可能在单个SQL server中托管所有节点数据库。我的意思是,从技术上看,这是可能的。它们可能不会覆盖彼此的表。就用例而言,它可能没有意义。我的理解正确吗?抱歉,我错了。您可以将单个独立H2数据库用于多个节点。以上说明:)