簡體   English   中英

趨勢1億+行

[英]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

您是否考慮過RRDTool - 它為時間序列數據提供循環數據庫或循環緩沖區。 您可以按照您喜歡的任何間隔存儲數據,然后定義合並點和合並功能,例如(sum,min,max,avg)給定時間段,1秒,5秒,2天等等。因為它知道什么您想要的合並點,一旦它們被聚集,就不需要存儲所有數據點。

GangliaCacti在封面下使用它,並且很容易使用多種語言。

如果確實需要所有數據點,請考慮僅將其用於聚合。

我會更改數據保存方法,而不是將'原始'數據保存為值,我將在數組中保存5-20分鍾的數據(內存,BL端),使用基於LZ的算法壓縮該數組,然后將數據存儲在數據庫為二進制數據。 此外,保存該二進制塊的Max / Min / Avg / etc ..信息會很好。

當您想要處理數據時,您可以在塊之后處理數據塊,並為此保留應用程序的低內存配置文件。 這種方法稍微復雜一些,但在內存/處理方面具有很高的可擴展性。

希望這可以幫助。

問題是數據庫架構嗎?

1秒到多個趨勢顯然首先會顯示一個帶有秒表外鍵的單獨表。 或者,如果“許多趨勢值”由列而不是行表示,則始終可以將列附加到秒表並產生空值。

你試過嗎? 表現差嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM