首页 » DB » 正文

数据库存储格式随笔

最近来了一批面试人选,面试人选多数是传统行业或者传统行业刚刚转型互联网,在简历里或者面试过程中多数会宣扬一下Nosql的成功与光纤,有几个候选人会直接说mysql已经过时了,不能水平扩展,他们使用mongodb来替换mysql,当问到他们为什么要用mongodb来替换,mongodb解决了mysql不能解决的哪些问题,性能上有什么提高,做过真实的压测了吗,mongodb可以水平扩展,是动态扩扩展码?扩容时是否有性能下降,mongodb适合线上服务吗?mongodb又有哪些应用场景呢?

下面就简单的就各种存储引擎做个小小的讨论。

关系型数据库

关系型数据库是当前发展最成熟,应用最广的数据,其存储基于关系代数,完全实现ACID事务模型,其代表为:mysql, oracle, db2,sqlserve等,关系型数据库最适合线上服务,并且查询条件多样,在设计时候无法预估查询标准的业务。

键值对数据库

键值对数据库当前应用也很广泛,原理多是基于hash存储引擎,用于缓存比较多,不太适合查询标准特别多得应用,因为只支持主键查询,代表有redis, memcache, tair等,适合大数据量的存储,常见于分布式缓存。

基于文档的数据库

如果你有大量的文档需要存储,并且需要全文检索,或者基于某个节点进行查找,使用基于文档的数据库最合适,代表有:Mongodb, CouchDB, Cassandra,IBM Lotus Notes等。

基于图的数据库

如果你有大量的实体,实体间有着错综复杂的关系,并且你想通过复杂的关系来查找你的实体,应该使用基于图的数据库,最适合社交产品的用户关系,代表有Neo4j。

Mongodb vs. Neo4l

1 if you in any way need to do full text search in emails’ contexts, choose mongo. 2 in case you just want to do some statistics over the emails and looking for social parameters of your emailing system, choose neo4j. and btw, i don’t know why some users have closed this question, it seems reasonable to me.

参考

http://en.wikipedia.org/wiki/Document-oriented_database