大量不斷改變大小的小文件如何存儲?
01-21
我的需求:
我需要儲存大量的小文件(比如許多股票的價格數據,每隻股票的數據放在一個文件中),但是每天都需要向這些文件中增加一些新的數據。請問這時候我應該怎麼處理呢?如果只通過windows系統默認的讀出文件、增加數據再儲存文件,會不會造成磁碟中大量的小扇區被浪費?假設這幾千個文件原先是連續存在一片扇區的,每個文件增加數據之後原先的位置就存不下了,就會被存到新的扇區,這樣沒問題嗎?
確實應該用資料庫。
顯然應該用資料庫啊
如果只是尾部追加(append)的話,基本上不需要做什麼額外的優化,操作系統已經可以做到很高的性能了。存儲模型可以參考bitcask等。
如果還需要各種隨機的增刪改查的話,那可以考慮用B+樹的形式存儲。或者乾脆直接用sqlite/bdb等嵌入式文件資料庫。
你這個數據量又不大,隨便怎麼存,碎片就碎片唄,存了再說,存不下你寫個程序merge一下,壓縮掉。
這不應該直接寫到資料庫嘛……
如果大量的小文件都小於512個位元組,那你就什麼都不用管了,NTFS有優化。
尾部追加的話應該只是會在其他地方申請扇區啊。
ntfs的mtf對小文件的確是有優化的。或者你去整理整理磁碟碎片也行。
不過如果數量真的多,而且需要同時打開大量的話,還是用資料庫吧,或者自己寫進一個大文件?畢竟每打開一個文件讀取windows還會緩衝一部分數據,數量多了大概也是很可觀的用阿里雲的表格存儲啊。然後把你的精力放在業務和產品上
什麼是大量?如你所比如的幾千?還是百萬級,千萬級?數億?真是幾千,幾萬,這個不算大量吧,真如你所說的股票數據,你沒說更新頻率啊。如大家講的用資料庫,當然你幾千個文件每幾秒更新一次,個人感覺用RRD也可以
用資料庫,建一張表就行,很方便查找和修改。
加緩存啊
看數據大小。看樣子你這單個數據應該沒有硬碟上一個簇大所以take easy
如果只談技術實現不談技術細節…我覺得直接用資料庫比較好…或者用FUSE自己寫一個用戶態文件系統,底層的存儲交給資料庫。
推薦閱讀:
※大容量U盤有什麼玩法?
※動態磁碟有什麼弊端(與基本磁碟相比)?
※如何縮短筆記本開機時間?
※為什麼我的VersionHelpers.h里找不到IsWindows10OrGreater()方法?
※win10為什麼不能選擇關掉自動更新?
TAG:MicrosoftWindows | 計算機 | 文件系統 | 計算機科學 | 大數據 |