大量不断改变大小的小文件如何存储? 举报 理由 举报 取消 我的需求:我需要储存大量的小文件(比如许多股票的价格数据,每只股票的数据放在一个文件中),但是每天都需要向这些文件中增加一些新的数据。请问这时候我应该怎么处理呢?如果只通过windows系统默认的读出文件、增加数据再储存文件,会不会造成磁盘中大量的小扇区被浪费?假设这几千个文件原先是连续存在一片扇区的,每个文件增加数据之后原先的位置就存不下了,就会被存到新的扇区,这样没问题吗? 2017年10月10日 10 条回复 1575 次浏览 Microsoft,Windows,数据,文件系统,计算机,计算机科学
回复 ( 10 )
这不应该直接写到数据库嘛……
显然应该用数据库啊
如果只是尾部追加(append)的话,基本上不需要做什么额外的优化,操作系统已经可以做到很高的性能了。存储模型可以参考bitcask等。
如果还需要各种随机的增删改查的话,那可以考虑用B+树的形式存储。或者干脆直接用sqlite/bdb等嵌入式文件数据库。
确实应该用数据库。
你这个数据量又不大,随便怎么存,碎片就碎片呗,存了再说,存不下你写个程序merge一下,压缩掉。
如果大量的小文件都小于512个字节,那你就什么都不用管了,NTFS有优化。
什么是大量?如你所比如的几千?还是百万级,千万级?数亿?真是几千,几万,这个不算大量吧,真如你所说的股票数据,你没说更新频率啊。如大家讲的用数据库,当然你几千个文件每几秒更新一次,个人感觉用RRD也可以
尾部追加的话应该只是会在其他地方申请扇区啊。
ntfs的mtf对小文件的确是有优化的。或者你去整理整理磁盘碎片也行。
不过如果数量真的多,而且需要同时打开大量的话,还是用数据库吧,或者自己写进一个大文件?毕竟每打开一个文件读取windows还会缓冲一部分数据,数量多了大概也是很可观的
加缓存啊
看数据大小。看样子你这单个数据应该没有硬盘上一个簇大所以take easy