[英]Trending 100 million+ rows
我有一个系统,每秒记录一些测量值。 存储趋势数据的最佳方法是什么,这些数据是与特定秒对应的值?
1 day = 86.400 seconds
1 month = 2.592.000 seconds
大约1000个值来跟踪每秒。
目前,有50个表格对每个20列的趋势数据进行分组。 这些表包含超过1亿行。
TREND_TIME datetime (clustered_index)
TREND_DATA1 real
TREND_DATA2 real
...
TREND_DATA20 real
我会更改数据保存方法,而不是将'原始'数据保存为值,我将在数组中保存5-20分钟的数据(内存,BL端),使用基于LZ的算法压缩该数组,然后将数据存储在数据库为二进制数据。 此外,保存该二进制块的Max / Min / Avg / etc ..信息会很好。
当您想要处理数据时,您可以在块之后处理数据块,并为此保留应用程序的低内存配置文件。 这种方法稍微复杂一些,但在内存/处理方面具有很高的可扩展性。
希望这可以帮助。
问题是数据库架构吗?
1秒到多个趋势显然首先会显示一个带有秒表外键的单独表。 或者,如果“许多趋势值”由列而不是行表示,则始终可以将列附加到秒表并产生空值。
你试过吗? 表现差吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.