用于数据库集成的多链馈送 PlatoBlockchain 数据智能。 垂直搜索。 哎。

用于数据库集成的多链订阅源

将数据移出区块链并进入更广阔的世界

早在2015年,MultiChain首次公开发布,我们就从一个令人惊讶的方向看到了对区块链应用程序的兴趣。 尽管我们最初设计MultiChain来实现数字资产的发行,转移和保管,但越来越多的用户对将其用于面向数据的应用感兴趣。

在这些用例中,区块链的目的是实现通用信息的存储和检索,而这些信息本质上不必是财务上的。 使用区块链而不是常规数据库的动机是避免依赖于受信任的中介程序来托管和维护该数据库。 出于商业,法规或政治原因,数据库用户希望这是分布式的而不是集中的责任。

流的演变

为了回应这些反馈,我们在2016年 介绍 MultiChain流,为区块链上的常规数据的存储,索引和检索提供了一个简单的抽象。 链可以包含任意数量的流,每个流都可以被某些地址限制写入。 每个流项目都用其发布者的地址以及将来检索的可选键标记。 每个节点可以独立决定是否订阅每个流,实时索引其项以按键,发布者,时间,块或位置进行快速检索。 Streams受到MultiChain用户的热烈欢迎,并将其与其他企业区块链平台区分开来。

2017年, 扩展 支持本机JSON和Unicode文本,每个项目有多个键,每个事务有多个项目。 最后的更改允许每秒在高端硬件上发布10,000多个单独的数据项。 然后在2018年,我们增加了对 链下数据,其中只有一些数据的哈希值会在链上发布,而数据本身会在链下交付给需要它的节点。 那年晚些时候,我们发布了MultiChain 2.0 Community 智能滤波器,允许自定义JavaScript代码对流项目执行任意验证。

在2019年,我们的重点转向MultiChain 2.0 Enterprise,这是面向大型客户的MultiChain商业版本。 首先 企业演示 利用流中的链外数据来允许读取许可,加密数据传递以及对单个项目的选择性检索和清除。 与往常一样,底层的复杂性隐藏在与权限和流项目有关的一组简单API的后面。 借助流,我们的目标始终是帮助开发人员专注于其应用程序的数据,而不用担心区块链在后台运行。

数据库困境

随着MultiChain流的不断发展,我们一直面临着不断的困境。 为了读取和分析流中的数据,MultiChain是否应该沿着成为完整数据库的道路走下去? 是否应该提供JSON字段索引,优化查询和高级报告? 如果是这样,应该使用哪种数据库范式–关系(如MySQL或SQL Server),NoSQL(MongoDB或Cassandra),搜索(弹性或Solr),时间序列(InfluxDB)或内存中(SAP HANA)? 毕竟,存在适合于每种方法的区块链用例。

我们考虑的一种选择是使用外部数据库作为MultiChain的主要数据存储,而不是嵌入式LevelDB和二进制文件的当前组合。 该策略被 链芯 (已停产), 后链 (尚未公开)并且可用 作为一种选择 在Hyperledger Fabric中。 但是最终我们决定不采用这种方法,因为存在依赖于外部流程的风险。 您并不是真的希望冻结区块链节点,因为它失去了数据库连接,或者是因为有人在其数据存储上运行了复杂的查询。

要考虑的另一个因素是技术和集成不可知论。 在跨多个组织的区块链网络中,每个参与者对数据库技术都有自己的偏好。 他们将已经在适合其需求的平台上构建了应用程序,工具和工作流。 因此,在选择任何特定数据库或什至提供一些选项时,我们最终都会使一些用户不满意。 正如每个区块链参与者可以在各种Linux风格上运行其节点一样,他们应该能够与自己选择的数据库集成。

引入多链订阅源

今天,我们很高兴发布我们的数据库集成方法-MultiChain Feed。 提要是与一个或多个区块链流有关的事件的实时磁盘二进制日志,供外部流程读取。 我们还提供开源 多链进给适配器 它可以读取提要,并自动将其内容复制到Postgres,MySQL或MongoDB数据库(或一次多个)。 该适配器是用Python编写的,并具有自由许可证,因此可以轻松对其进行修改以支持其他数据库或添加数据过滤和转换。 (我们还记录了 提要文件格式 对于那些想要用另一种语言编写解析器的人。)

多链提要图

节点无需订阅流即可将其事件复制到提要。 这样可以完全绕过MultiChain的内置流索引,以节省时间和磁盘空间。 提要还反映了链下数据的检索和清除,并且可以报告链上新区块的到来。 为了节省磁盘空间,您可以精确地控制将哪些事件写入提要,以及为每个事件记录哪些字段。 此外,Feed文件每天轮换,有一个简单的清除命令可以在处理后删除文件。

为什么将MultiChain提要写入磁盘,而不是在进程之间或通过网络流式传输? 因为我们希望它们充当超可靠的复制日志,因此可以抵御数据库停机,系统崩溃,断电等问题。 通过使用磁盘文件,我们可以保证持久性,并允许异步更新目标数据库。 如果由于某种原因该数据库过载或断开连接,则MultiChain可以继续运行而不会中断,一旦一切恢复正常,数据库将追上来。

Feed入门

提要已集成到MultiChain Enterprise的最新演示/测试版中 可供下载 现在。 通过阅读以下文档的入门 多链进给适配器,或查看 与提要相关的API。 我们很乐意 听听您的意见 关于此功能以及我们将来如何扩展它。

随着提要的发布,MultiChain Enterprise 2.0版现已完成功能–请参阅 安装软件 页,以在社区和企业版本之间进行全面比较。 在接下来的几个月中,我们将完成其测试和优化,并期望在第一季度末准备投入生产。 同时,有关MultiChain Enterprise许可或定价的信息,请不要犹豫 联络方式.

请发表任何评论 在LinkedIn.

资料来源:https://www.multichain.com/blog/2020/02/multichain-feeds-for-database-integration/

时间戳记:

更多来自 Multichain