gpt4 book ai didi

corda - Corda 节点如何扩展以使用 H2 以外的数据库?

转载 作者:行者123 更新时间:2023-12-04 14:37:58 26 4
gpt4 key购买 nike

我已经用 PostgreSQL 运行 Corda。 Corda 如何扩展以与其他数据库一起使用?将数据库驱动程序添加为 Gradle 依赖项并尝试连接到其他数据库是否足够?

最佳答案

Corda 使用 Hibernate 5.x 和 HikariCP JDBC 连接池。

所有查询都由 Hibernate 生成,期望来自 finance 的一个查询模块( CashSelection 使用 JDBC PreparedStatement 和特定于每个数据库供应商的 SQL 构造)。

配置数据库

在运行时,节点在其 node.conf 中查找 JDBC 设置。文件。默认情况下,它连接到嵌入式 H2 服务器(请参阅 Corda 源代码中的文件 /node/src/main/resources/reference.conf)。

要将 Corda 与其他数据库 (*) 一起使用或使用非默认设置连接,node.conf文件需要设置节点的数据源属性:

dataSourceProperties = {
dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
dataSource.url = "jdbc:postgresql://[HOST]:[PORT]/postgres"
dataSource.user = [USER]
dataSource.password = [PASSWORD]
}
database = {
transactionIsolationLevel = READ_COMMITTED
}
jarDirs = [PATH_TO_JDBC_DRIVER_DIR]

哪里 dataSourceProperties是典型的 JDBC 设置, database条目包含 Hibernate 特定设置,以及 jarDirs是包含驱动程序的目录的路径列表(例如 jarDirs = ['/Library/postgres-lib'] )。

在 deployNodes 中配置数据库

您可以通过在 deployNodes 中传递设置来避免手动配置数据库设置。 .例如:
node {
name "O=Bank C,L=Tokyo,C=JP"
p2pPort 10010
webPort 10011
rpcSettings {
address("localhost:10036")
adminAddress("localhost:10037")
}
cordapps = ["$project.group:finance:$corda_release_version"]
rpcUsers = ext.rpcUsers
extraConfig = [
‘dataSourceProperties.dataSource.url’ : ‘jdbc:postgresql://localhost:32774/postgres’,
‘dataSourceProperties.dataSourceClassName’ : ‘org.postgresql.ds.PGSimpleDataSource’,
‘dataSourceProperties.dataSource.user’ : ‘postgres’,
‘dataSourceProperties.dataSource.password’ : ‘postgres’,
‘jarDirs’ : [ ‘/Library/Java/postgres’ ]
]
}

添加驱动

添加这些设置后,需要将 JDBC 驱动程序添加到 extraConfig.jarDirs 中指定的位置。节点部署完成后。

另一种方法是在 node/build.gradle 中添加 JDBC 驱动程序依赖项。 (就像为 PostgreSQL 所做的那样)。每当编译/构建节点时,它将包含开箱即用的驱动程序。

(*) Corda Open Source 随 H2 文件数据库一起提供,并且对 Postgres 和 Sql Server 具有实验性支持。 Corda Enterprise 已对其他数据库(包括 Sql Server、AzureSQL、Postgres 和 Oracle 数据库)提供更广泛的测试支持。尽管使用 Hibernate/JDBC,一些查询可能需要修改才能在所有支持的数据库中兼容。 Corda Enterprise 支持这种兼容性。

关于corda - Corda 节点如何扩展以使用 H2 以外的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50232016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com