Demux 介绍:由 EOSIO 区块链进行链下验证的确定性数据库
导读:EOSIO 于 昨日(20180731)在 Medium 上对 Block.one 新开发出的 Demux 发文介绍(原文) ,本文为EOS sw/eden 瑞典社区对原文的翻译。
译者:平兄
概念明晰:
Deterministic Database:本文翻译为确定性数据库。对于需要处理的事务,确定性数据库会在全局确定好事务的顺序,并按照这个顺序执行。
在数据库存储过程中,deterministic 也表示每次执行存储过程时,相同的输入会得到相同的输出。
EOSIO 区块链平台最主要的优势之一是易于开发高可用性、可扩展性、灵活性的 DApps。为了实现这个目标,在 Block.one 官网上,我们很兴奋地宣布推出 Demux,为 EOSIO 社区开发的一个新的开源开发工具,可用于简化复杂的DAPP开发。
Demux 的设计灵感来自于 Facebook 的 Flux 架构模式和 Redux ,构建一个后台基础架构模式用于获取区块链事件,以便对基于 EOSIO 区块链的应用程序的可查询数据库进行确定性地更新。
这暗示,该架构能够让开发者使用传统的数据库,如 MongoDB 或者 Postgres SQL,也意味着存储在这些传统数据库的数据仍然可通过区块链进行验证。这无疑是两全其美的架构:即拥有传统数据库的灵活性和速度,也保留着区块链的信任和不可篡改的属性。
存储和检索索引数据是开发者几十年来常用的事。搜索,排序、筛选等功能在传统数据库环境中都很容易实现,但在区块链这种分布式总账数据库中,这些功能都是缺失的,区块链节点的查询接口本来就很有限。
在构建更复杂的 DAPPs 时,当你想直接从区块链中检索数据时,你可能会陷入一系列问题。
用于检索索引数据的查询接口是有限的。复杂的数据需求可能意味着你要么必须进行大量的查询然后在 DAPP 中进行数据处理,要么你必须在区块链上存储额外的分类数据。
另外,扩大你的查询负载也意味着需要访问更多的区块链终端节点,这样成本可能也会更贵。
Demux 通过将存储和查询减荷引流到你的首选数据库(MongoDB,Postgres 等)来解决这些问题。当有区块链事件发生时,你所选的数据库会由 Updater 函数进行更新,Updater 会确定性地处理一系列 Action 对象。接下来你的前端 DAPP 就可以通过合适的 API (例如 REST 或者 GraphQL)从首选数据库中进行检索,从而减少与区块链的直接交互的频数。这样也有助于开发者限制需要存储在内存(RAM)中的数据量,降低应用程序的运营成本,同时提高它们的架构效率。
发布版本的完整细节可以在 官方 GitHub 仓库 中查阅。示例库 demux-js 作为 Demux 架构的 NodeJS 实现的一个参考。
开发技术推广部将继续为您带来最新的功能。我们在 Block.one 的开发团队致力于提升在 EOSIO 上的开发者体验。若想获得更多的更新消息,请继续关注我们的社交频道,并确保订阅我们在 EOSIO 开发者门户网站上的邮件列表 。
谢谢!
Block.one 开发技术推广部