Database-Design

將具有動態列數和行數的時間序列數據儲存到合適的數據庫中

  • December 1, 2020

我有一個時間序列Pandas數據框,它每分鐘動態增加列並添加新行:

最初的:

timestamp                100     200     300
2020-11-01 12:00:00       4       3       5

下一分鐘:

timestamp                100     200     300   500
2020-11-01 12:00:00       4       3       5     0
2020-11-01 12:01:00      14       3       5     4

數據框每分鐘都有這些更新的值等等。

所以理想情況下,我想設計一個支持這種動態列結構的數據庫解決方案。列數可能會增長到超過 20-30k+,並且由於它是一分鐘的時間序列,因此每年將有 500k+ 行。

我已經讀過關係數據庫對列數有限制,所以這可能在這裡不起作用,而且,因為我正在為新列設置數據並將預設值(0)分配給以前的時間戳,所以我輸了MySQL 上的預設參數。

最終,我將查詢 1 天、1 個月的數據以獲取列的數據及其值。

請為這種類型的動態行和列數據建議一個合適的數據庫解決方案。

通常,像這樣的動態數據問題可以通過將模式的動態部分儲存在其自己的表中,轉置為行來解決。

例如,您可以有一個間隔表,其中一列稱為間隔,另一列稱為值。間隔將為該間隔的每個值實例儲存 100、200、300 等。

您也可以將 Timestamp 作為列儲存在此表中,或者我的建議是將 Timestamp 規範化到其自己的表中,其 TimestampId 是 Intervals 表中的外鍵欄位。

以這種方式實現您的模式,然後您不必擔心創建了多少動態間隔,因為這是一個基於行的通用解決方案。

引用自:https://dba.stackexchange.com/questions/280631