用 PostgreSQL 来存储以太坊上的所有交易 transaction,如何分表分库?

2023-02-27 15:57:26 +08:00
 dw2693734d

第一,是硬盘存储空间,大概需要多大

第二,能够快速返回某一个 token 的 transaction 记录,不到 1s

虽然有第三方的服务,比如 dune.com ,但是用着始终不方便。

2336 次点击
所在节点    以太坊
15 条回复
unnamedhao
2023-02-27 19:51:08 +08:00
几年前全节点数据就大几百 G 了,存库应该只多不少吧。
另外为了把数据灌到库里,除了库还得部署一套节点?
stabc
2023-02-27 19:54:50 +08:00
这种场景 NOSQL 更适合
cxh116
2023-02-27 20:40:01 +08:00
erc20 token 的 transaction 与 eth 本身的 transaction 不是同一个东西.

token 的 transfers transaction 是合约调用,直接在 eth node 查不出来的,只能查 Transfer event log https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#IERC20-Transfer-address-address-uint256-

1. 如果只存 token transfers transaction 应该几百 G 差不多了,没存过,所以只能做几简单的估计,之前个人处理 eth transaction ,是把 input 等大字段也存起来了.
2. eth transaction 目前已经是 10 亿级别了,如果按照每个 eth transaction 有 100 条 token transaction,初步估计数据库有 1000 亿左右. 数据分库分区不熟悉,就不瞎建议了,可以尝试先单表存下来,看有没有瓶颈.
dw2693734d
2023-02-27 22:48:28 +08:00
@unnamedhao 对,还要节点
litguy
2023-02-28 07:55:57 +08:00
其实你这种场景,NOSQL 更好,Cassandra 之类的 CQL 语言也很好用
rimutuyuan
2023-02-28 10:10:50 +08:00
我们用的 tidb
dw2693734d
2023-02-28 11:44:51 +08:00
@litguy NOSQL 的性能更好吗,不太懂😂
litguy
2023-02-28 12:29:13 +08:00
@dw2693734d 类似 Cassandra 这样的 NOSQL 又不需要分布式事务支持,性能要好得多,而且不用考虑分库分表这些,至少 10 亿条记录前,不用太在意
dw2693734d
2023-02-28 13:59:42 +08:00
@litguy 略微懂了,谢谢!
huadaonan
2023-02-28 15:02:40 +08:00
@dw2693734d 要不要组个队
dw2693734d
2023-02-28 15:31:36 +08:00
@huadaonan 要要要
huadaonan
2023-03-02 12:32:37 +08:00
@dw2693734d 好啊,加我 tg ,先初步沟通下
dw2693734d
2023-03-05 22:11:41 +08:00
@huadaonan 你 tg 多少
sicssss
2023-03-07 17:42:50 +08:00
我在做 nft 聚合订单簿, 可以加个 tg 吗 佬 @maxcute
huadaonan
2023-03-08 13:39:53 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/919561

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX