簡介
在Message系統中,常常會有數據大量的保存,而且在很短期內刪除的需求;很明顯,這樣的需求採用數據庫是不合適的,本項目實現了經過文件來保存這類數據的方法。 在如今的硬盤數據存儲中,對性能影響最大的就是隨機讀寫,爲了增長這個存儲的性能,採用瞭如下方式避免大量的隨機讀寫:數據庫
- 數據文件一直增長,順序在文件後面添加數據,避免隨機寫。
- 不存在索引文件,經過一個日誌文件來記錄操做,也是順序寫日誌文件。
- 索引創建在內存中,取數據是先經過內存中的索引獲取數據位置,進行訪問(該步驟存在隨機讀操做,可是因爲索引在內存中,只會有一次讀操做)
- 初始化時須要經過日誌文件恢復內存索引。
因爲數據是一直寫的,沒有回收操做,可能會致使數據過大,這裏解決的辦法是每nM做爲一個文件,而且加入引用計數,當文件不存在有效數據後,刪除之。
經過上面的方法,能夠解決文件的讀寫性能,可是也會有一些限制:性能
- 索引在內存中,會引發數據不能過大(每一個索引佔用60字節左右)
- 數據不能過於分散,不然會致使數據文件不能被有效清理。
性能
PC機能夠實現每秒萬次的讀寫刪操做。google
應用
該存儲方式比較適合消息發送、消費類的應用,如今應用在淘寶網notify系統中。日誌