現實中,對於存儲的需求基本上可以歸爲3類
1: Offline數據分析用的數據,如網站的訪問日誌分析,Online數據庫裏的數據的統計分析
這類數據的量一般很大,對於大型互聯網站來說是PB級單位,一般使用類似Hadoop/Hive之類的技術來分析
是Offline分析,對於響應時間要求比較低。
對於這類數據的存儲在設計的時候考慮使用SATA盤,每臺機器配6~12塊1(2)TB的SATA盤,由於單塊SATA盤的順序讀寫能力基本上可以
達到60MB/s以上,所以系統設計的時候需要充分考慮磁盤的利用;最好的算法是單個磁盤同一時刻只有一個進程進行讀/寫操作
另外儘量減少網絡傳輸(一般配置網絡是<60MB/s),而磁盤的處理能力則爲60*N(磁盤數目)
2:Online 類的非結構化數據
如圖片,郵件之類的保存好後不再修改的數據,這類數據量也很大,以PB爲單位;但這類數據的響應時間是比較高的,一般要求200MS
之內。
對於這類系統響應時間高,QPS要求很高的情況下,建議使用多級存儲的方式(Mem+SSD+SATA),最終數據存儲在SATA上;寫的中間數據可以存儲在Memory或SSD;然後異步寫入到SATA盤上。爲避免某臺機器Down或則DiskFail導致數據丟失,建議使用多份Copy。
3: Online方面的結構化數據
如 Mail的Index,聯繫人,個人Profile,商品交易信息之類的數據;這類數據一般是有關係的,傳統上是存在DB裏
因爲數據之間有可能存在TX,以及Index(PageIndex,QueryIndex,Uniqindex...);
或者是簡單的無關係的數據,可以使用KV類簡單搞定;另外應用場景裏存在大量的隨機讀,以及Range(Index)方式的讀取,而且對於
響應時間要求很高,一般是小於20ms.
但這類數據的量一般不會很大,小於1PB,一般情況下,一個DB最大200TB。
這時候最好使用SSD(若性能要求非常高,且數據量不是特別大)或則SAS 500G(15K);或則SSD+SAS混合的方式。這類組合可以處理
非常高的隨機讀操作
另外對於機房的網絡部署時,千萬不要把Offline和Online的交換機部署在一起,以免網絡流量衝突導致Online的響應出問題