我正在构建一个对大量区块链数据进行索引和分析的软件,并且我正在考虑使用 TimescaleDB 来获得更好的分析性能,因为我在仅使用 postgres 时遇到了性能问题。
我当前的数据结构如下所示:
1 个区块在给定时间戳出现 它包含5笔交易,每笔交易包含10笔转账。 在我插入的同一个 postgres 事务中:
每行都有一个从块中获取的时间戳字段。
然后,异步(因为它需要额外的网络请求),对于每次传输,我插入一个“balance_change”事件,该事件也有这个时间戳字段。
所有四个实体都插入到自己的表中。
起初,我正在考虑将这些表直接转换为超表,但有一些外键引用来确保数据完整性,并且从我读到的内容来看,时间刻度不支持从一个超表到另一个超表的 fks。
现在我正在考虑创建一个“事件”表,并在其中插入带有时间戳、标签(“块”、“交易”、“转移”、“余额变化”等...)、user_id(和其他分区字段),以及将包含实际值的 JSONB 数据字段。
或者也许还有更好的事情要做?每种类型的事件都有一个单独的表怎么样?
我以前从未使用过 tsdb,所以我希望获得一些关于如何最好地设计它的帮助。还考虑到数据量增长得很快,所以我试图尽可能避免重复。