为什么要完全使用数据库?这是我6年前,在一次工作中,别人问我的,我当时一愣,然后说“你不用数据库,你用啥?”,但是后来我仔细想想,真的无言以对,因为我习惯使用数据库了。
数据库发展了几十年,从单纯的文件系统,到现在的大型数据管理系统,大大小小的it企业都在使用数据库,好像只要是做项目,就必须要有一种数据库。当习惯成为自然,很多问题都就出现了。当前的数据库发展已经超过了以前的原始的文件系统,更偏向管理系统。而关系数据库的最大弊病就是它的查询操作,无论是B+树还是所谓的hash桶算法都无法在实践中得到很高的性能。要想根据索引查找快,更新索引就一定慢,因为数据库算法要调整索引。当今数据库的大部分算法都是制约,矛盾存在的。以上都是大家众所周知的问题。如果关系依赖性很强,没办法,必须用数据库,啥也不说了。
当关系的关联性非常强时,我们必须使用数据库。否则,某人去银行存了一笔钱,第二天,去取钱时,银行告知他,你的帐号在我们银行没有存钱记录。岂不笑哉!
但是,有很多的应用都是非常简单关系构成,而且数据要求访问频繁。在这时就要有另外的思维了,因为数据库不是万能的,它极有可能在你的系统充当累赘。比如,你就有100行没有任何关联的记录需求,那么你完全可以放弃数据库,选用文件或者直接以数组的形式放到内存里,为什么要用数据库?
在高性能系统里,对数据库的考虑会非常多,不是随便买一个商业数据库或者从网上下载一个开源的就能解决问题的。
还是回归自然好,应该在项目中不是如何设计表结构和优化数据库,而是如何设计适应本项目的高性能文件存储算法,把数据库当成可选项而不是必选项。