近期接触的微微信.NET的朋友差点儿都会问我一个问题,“微微信.NET为什么不用数据库?”我总结了一下在这里给予大家解答。当然我写这些的目的不为证明文件系统比数据库更好。而是想说。对于有些应用採用文件系统是一个更优的选择:
平时能够感觉到的几个事实: 1 音乐、视频数据都是放在文件系统中、2 大图片文件是放到文件系统中的、3 小的配置文件,文件系统会比数据库的效率高出非常多
假定在程序效率和关键过程相当且不计入缓存等措施的条件下,读写不论什么类型的数据都没有直接操作文件来的快,不论MSYQL过程怎样,最后都要到磁盘上去读这个“文件”(记录存储区等效)。所以当然这一切的前提是仅仅读 内容,无关不论什么排序或查找操作.而微信应用符合这个特性。
微信的开发中的关键词回复是最适合于文件系统存储的应用: 这个是最适合于文件系统来存储的应用。直接将关键词命名为文件名称,直接解决搜索问题,每次的读写IO开销可能在1K以内,这是数据库系统做不到的,对于有些不适合于做文件名称的keyword。能够採取一种转义编码作为文件名称来实现存储。
除此之外,对于用户上传图片、语音的存储和管理也适合于採用文件系统管理。
对于一个应用系统若想使用文件系统取代数据库,首先须要设计出一个静止的数据存储结构。笔者看来,在NOSQL開始繁荣的今天文件系统存储是一种NOSQL应用的提现。文件系统必须足够静止才干解决并发冲突的问题。这就要求足够分散的文件。太多小文件对于传统的机械式硬盘来讲不是一个好主意。但如今SSD已经開始普及。用SSD做主存的server能够把文件系统读写的开销有效减少,假设你想获得更高的性能和更小的资源消耗,在中小型项目中使用文件系统取代数据库是个不错的选择。
微微信.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