现有表/专用表的Timescaledb设计

问题描述 投票:0回答:1

我正在构建一个对大量区块链数据进行索引和分析的软件,并且我正在考虑使用 TimescaleDB 来获得更好的分析性能,因为我在仅使用 postgres 时遇到了性能问题。

我当前的数据结构如下所示:

1 个区块在给定时间戳出现 它包含5笔交易,每笔交易包含10笔转账。 在我插入的同一个 postgres 事务中:

  • 1块
  • 5笔交易
  • 50次转账

每行都有一个从块中获取的时间戳字段。

然后,异步(因为它需要额外的网络请求),对于每次传输,我插入一个“balance_change”事件,该事件也有这个时间戳字段。

所有四个实体都插入到自己的表中。

起初,我正在考虑将这些表直接转换为超表,但有一些外键引用来确保数据完整性,并且从我读到的内容来看,时间刻度不支持从一个超表到另一个超表的 fks。

现在我正在考虑创建一个“事件”表,并在其中插入带有时间戳、标签(“块”、“交易”、“转移”、“余额变化”等...)、user_id(和其他分区字段),以及将包含实际值的 JSONB 数据字段。

或者也许还有更好的事情要做?每种类型的事件都有一个单独的表怎么样?

我以前从未使用过 tsdb,所以我希望获得一些关于如何最好地设计它的帮助。还考虑到数据量增长得很快,所以我试图尽可能避免重复。

database postgresql database-design analytics timescaledb
1个回答
0
投票

我认为主要问题是如何使用数据以及需要多快。

如果您需要快速阅读,请将其优化为阅读更详细的结构,其中已经预先计算出值,可以使阅读速度更快。

每种类型的事件都有一个单独的表怎么样?

如果您的最终应用程序分析将计算分离的事件,那么这可能是一个很好的非规范化。

检查窄模式与宽模式的优势,您可以考虑使用元数据表

© www.soinside.com 2019 - 2024. All rights reserved.