2
I'm寫作C#組件,其中應存儲和檢索的基於時間的數據,由此所述數據由二維的具有500×2000。高效存儲和檢索的二維陣列用附加日期信息
尺寸雙陣列每10到100秒,我就會得到一組應該存儲約2年的數據。 檢索速度應該足夠快以在秒內獲得一組〜5000個數組。
此外,例如6個月以上的數據應該被刪除,每小時只有一個數組可用。
現在有幾種可能性,我已經簽出:
「經典」的數據庫,例如MS SQL。我創建了一個數據庫結構,它存儲與timedata分開的數組,所以我可以查詢時間數據並只獲得我真正需要的數組。優點是對數據的非常好的處理(插入/刪除/選擇)。 問題是,您需要對數據庫進行某種級別的維護,但我無法保證在任何時候。
鍵值數據庫例如Redis的。運行良好,(必須序列化+壓縮數組),但是我擔心由於數組大小,這種存儲不適合這種情況。另一件事是,它應該是一個持久存儲,不僅在內存中可用。
有人知道其他可能嗎?
雙倍大小的500x2000 5000倍的數據是總共近40千兆字節。你確定這些數字嗎?在幾秒鐘內獲得一組這樣大小的5000個陣列是不可實現的... –
它應該在20 GB左右(4字節* 500 * 2000 * 5000),但你是對的 - 這是相當多的。我已經將每個soap格式化程序的數組序列化(大小爲txt文件〜17 MB,並將其壓縮 - 現在的大小〜1 MB)。問題是解壓5000個陣列的巨大cpu利用率...... phew –
請注意,雙打是8個字節,而不是4個字節!但是,如果它壓縮得太多,似乎表明許多值是相同的 - 是這種情況嗎? –