日期:2014-05-16  浏览次数:20711 次

微微信.NET 为什么采用文件系统而不是数据库?

       最近接触的微微信.NET的朋友几乎都会问我一个问题,“微微信.NET为什么不用数据库?”我总结了一下在这里给予大家解答,当然我写这些的目的不为证明文件系统比数据库更好,而是想说,对于有些应用采用文件系统是一个更优的选择:

      平时可以感觉到的几个事实: 1 音乐、视频数据都是放在文件系统中、2 大图片文件是放到文件系统中的、3 小的配置文件,文件系统会比数据库的效率高出很多

      假定在程序效率和关键过程相当且不计入缓存等措施的条件下,读写任何类型的数据都没有直接操作文件来的快,不论MSYQL过程如何,最后都要到磁盘上去读这个“文件”(记录存储区等效),所以当然这一切的前提是只读 内容,无关任何排序或查找操作.

      微信的开发中的关键词回复是最适合于文件系统存储的应用: 这个是最适合于文件系统来存储的应用,直接将关键词命名为文件名,直接解决搜索问题,每次的读写IO开销可能在1K以内,这是数据库系统做不到的,对于有些不适合于做文件名的关键字,可以采取一种转义编码作为文件名来实现存储。

  除此之外,对于用户上传图片、语音的存储和管理也适合于采用文件系统管理。

       对于一个应用系统若想使用文件系统代替数据库,首先需要设计出一个精巧的数据存储结构。笔者看来,在NOSQL开始繁荣的今天文件系统存储是一种NOSQL应用的提现。文件系统必须足够精巧才能解决并发冲突的问题,这就要求足够分散的文件,太多小文件对于传统的机械式硬盘来讲不是一个好主意,但现在SSD已经开始普及,用SSD做主存的服务器能够把文件系统读写的开销有效降低,如果你想获得更高的性能和更小的资源消耗,在中小型项目中使用文件系统代替数据库是个不错的选择。

     微微信.NET采用文件系统作为存储系统还有一个考虑就是因为 微微信.NET是纯的C#代码,所以 微微信.NET的系统直接可以在 Mono ASP.NET上部署使用,从而实现在 Linux、Unix 甚至安卓下运行(这个在未来是重要的,会有大量的android设备闲置,是一个变废为宝的好方法,我们对此已经展开研究会在后续介绍: 基于废旧智能手机的云计算集群) 。


导读: 下面有几篇关于文件系统与数据库效率比较的文章

 ★读配置文件、读数据库数据哪个效率高?
http://blog.csdn.net/jackpk/article/details/5954295
★ 读写文件与读写数据库的效率比较
http://www.metsky.com/archives/313.html
★ 磁盘读写和数据库读写哪个效率更高?磁盘读写与数据库的关系
http://www.jb51.net/diannaojichu/91733.html
★ 保存图片到数据库还是文件系统
http://www.360doc.com/content/06/0312/15/5047_78678.shtml


最后 广告一下 : 完整的 微微信.NET 可以在这里找到  udoo123.taobao.com