在Corda开放文档中,我阅读以下内容:
使用Java持久性API(JPA)作为注释来指定ORM映射,并且每次在事务中将状态记录在节点的本地Vault中时,节点都会自动将ORM映射转换为数据库表行。
当前,该节点包括H2数据库的实例,但是任何支持JDBC的数据库都是候选对象,并且该节点将来将通过其JDBC驱动程序支持一系列数据库实现。大部分节点内部状态也保留在那里。
我可以使用JDBC用SQL替换h2 DB吗?
据我了解,FinalityFlow用于使用h2 DB在本地Vault中记录交易。 如果我实现了自定义Flow以记录在SQL DB中,则必须避免FinalityFlow调用吗?
答案 0 :(得分:1)
是的,可以使用非H2的SQL数据库运行节点。实际上,开源社区为PostgreSQL和SQLServer提供了支持。请参阅设置说明here。但是,请注意,Corda连续集成管道不会运行这些数据库的单元测试或集成测试,因此使用它们时需要您自担风险。
请注意,在两种情况下,您都可以通过配置文件将节点配置为使用备用数据库,并且节点将其所有数据存储在此备用数据库中(事务,状态,标识等)。您不应该直接通过流访问数据库来执行此操作,而是可以依靠标准ServiceHub
操作和类似FinalityFlow
的标准流。