如果我的理解有误,欢迎指正
在我的项目中,我们有一个时间序列数据库。它被设置为 3 节点(一个领导者,2 个只读副本)守护者集群。每个节点都是一个 AWS EC2 实例,其中时间序列数据存储在由 Postgres 数据库上的 TimescaleDB 扩展支持的超表中。我们在这里使用开源 timescaledb。
随着数据每天都在增长,预计未来节点(EC2实例)上的EBS数据量将达到其大小限制。因此需要分片。
作为潜在的解决方案,我们研究了 timescaledb 中的分布式超表。但这似乎是一个死胡同,因为他们在开源 timescaledb 中弃用了多节点支持(在其之上提供了分布式超表)。
还有另一种选择,即使用 Citus(Postgres 扩展来实现分片)。但是,Citus 不支持 Postgres 中的 TimescaleDB 扩展。因此,作为这种情况下的高级解决方案,我们必须首先将 timescaleDB 超表转换为常规 Postgres 表,以便能够使用 Citus。到目前为止,Citus 似乎是最适合(相对)实现分片的选择。
有人可以建议更好的方法吗?
编辑注释:数据存档或清除不是我们的选择。需要所有数据。已经尽可能地应用了压缩。这为我们在达到 EBS 数据量的存储限制之前赢得了一些额外的时间,但最终将需要分片。
我想分享一些有关使用 Citus 处理时间序列数据集的指南。如果您可以将超级表转换为普通表,以下是您的一些选择:
pg_cron
更多详细信息请参阅文档: https://docs.citusdata.com/en/stable/use_cases/timeseries.html