首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EOS 区块链数据实时异构到 MongoDB

这是「区块链技术指北」的第 38 篇文章。

0x00 背景

更新:从 EOSIO 1.1.0 开始,已经默认支持 MongoDB,所以本文提供的方法仅做参考。

执行 脚本编译 nodeos 会默认安装 mongodb,但是从 Dawn 4.0 开始, 插件不再生效,详情请参考 #3030。#4304 PR 重新支持 MongoDB,本文讲解如何将链上数据实时同步到 MongoDB。

0x01 部署

部署的思路如下:

编译支持 mongodbplugin 的 nodeos

配置 MongoDB

启动 MongoDB

创建数据库

启动 nodeos,同步主网数据

查看 MongoDB,确认数据

接下来我们逐步讲解。

由于 EOSIO 代码库有 分支,所以可以使用 git 自动将支持 mongodbplugin 插件的代码合并,详细命令如下:

如果 nodeos 编译成功,MongoDB 自动安装,路径在$USER/opt/mongodb。执行 ,如果有如下的输出,表示 MongoDB 插件编译成功。

接下来我们配置 MongoDB。

mongodb.conf 配置文件内容如下:

接着启动 MongoDB,并且创建 eos 数据库。

然后配置 EOS 主网 fullnode。

修改 config.ini 相关配置,添加如下参数:

最后执行 start.sh,同步主网数据。

0x02 测试

我们执行 登录到 MongoDB,可以对同步的数据进行校验。

0x03 小结

之前介绍了将 EOS 主网数据同步到 MySQL,本文讲解了另一种同步到文档型数据库的方法。MySQL 和 MongoDB 最大的区别在于,MySQL 是传统的关系型数据库,支持 SQL 标准,而 MongoDB 是文档型数据库。MySQL 天生适用于结构化数据以及需要使用事务的场景,天生支持 SQL 标准,对开发者比较友好。

MongoDB 适合如下场景:[1]

表结构不明确且数据不断变大,MongoDB 是非结构化文档数据库,扩展字段很容易且不会影响原有数据

更高的写入负载,MongoDB 侧重高数据写入的性能,而非事务安全

数据量很大或者将来会变得很大,MongoDB 内建了 Sharding、数据分片的特性,容易水平扩展

高可用性,MongoDB 自带高可用,自动主从切换(副本集)

而 MongoDB 不支持事务、不支持 JOIN,所以涉及事务和复杂查询的场景不适合 MySQL。

关于 MongoDB 和 MySQL 的对比,可以点击 此处 查看。

0x04 参考

「区块链技术指北」同名知识星球,点击加入。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181118G0E4GS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券