Hegel2011的博客

读书 - 工作 - 生活 - 笔记

7dbs in 7wks

花了2个礼拜的时间,看完了七天七数据库。这是又一本在kindle上看完的epub格式的书籍。阅读体验的效果还是很不错的。

书籍受了七天七语言的启发,整本书的胶水语言主要是用了ruby,也伴随使用了一些javascript。作者对redis做了特别多的介绍,HBase等的描述也很精彩。Neo4J对我而言还属新生事物。

这本书区别于其他数据库图书的价值就在于比较与分析,呵呵,话说这个和我的撰文风格挺类似的。

首先,从RDBMS(PostgreSQL)开始,描述了SQL设计时的世界是查询的弹性要求远大于结构的弹性。回想一下,彼时的数据库查询都是由开发人员或者公司信息科的人来完成的,也就是直接使用SQL。而在如今,操作人员全部通过界面,可能是Web也可能是client,SQL都是后台自己拼接而成,于是SQL最强悍的地方其实已经打了折扣。而业务上,甚至统计方面,经常会对schema参数剧烈变化的要求。还有很重要的一点,就是关系型数据库是大家思想统一的东西,沟通方便。
关系型数据库最大的优势在于acid的操作支持,以及运行多年而证明的稳定可靠。但在大规模访问和灵活性方面确实存在缺陷。

然后,介绍了面向列的数据库。其实面向列就是存放是按照一列一列内容来存放的,有版本和时间戳的自动功能,适合于存放大数据。甚至还有压缩的功能。作者把HBase比喻为钉子气枪(nail gun)。他的每个查询都不快,但最强大之处在于遍历巨量数据集合
所以常常被大公司用了作为日志和搜索系统。
column里面存放的是map。
journaling = write-ahead logging.

Riak是一个key-value数据库,不过更适合存放S3D那样的存放二进制的内容。基于Erlang编写。 N, W, R, N是最终数据需要分发到的节点数量,W是写入多少就可以认为写入成功,R则是读取多少就认为读取成功。

也谈到了这些数据库中实现Map-Reduce的哲学是把算法分发给各个节点,而不是把数据集中起来送给算法。毕竟传输算法肯定比传输数据的开销要少。

MongoDB则是在关系型和扩展性强的数据库中取到了一个黄金百分点。可以存放复杂的对象是文档数据库最大的优势。CouchDB不如MongoDB灵活,采用视图查询法(事先定义map-reduce),

最后,则主要还是介绍redis,及混合的多数据库应用开发。内建的可以让key失效,以及丰富的数据结构数据库,是redis脱颖而出的法宝。使得极其适合作为缓存使用。

小结,过去人们依赖一个数据库来实现多个应用的整合。现在整合的能力更多地交给了中间层模式,往往多种语言都是基于HTTP实现服务层之间的通信的。这样就使得服务程序从db的限制中解脱了出来,变得可以根据需要选用多种数据库组合。

Included file 'twitter_sharing.html' not found in _includes directory