mongoDB

mongoDB作为一款nosql数据库以其优异的性能得到了广泛的关注。可以说,mongoDB填补了传统关系型数据库以及传统键值型数据库的空白,并且兼具两者优秀特质。 关系型数据库 优点: 1、出色的索引功能,因而数据库之上的应用可以通过组合不同的查询高效地获得数据。 2、对于database,table的domain的区分,让数据库更加清晰和明确,容易配置。 缺点: 1、对于表的结构有严格的要求,因而应用的中的数据结构变化以数据库的结构改变为前提,增加了不必要的工作量。 2、传统数据库的优点之一——事务在当今的互联网应用上反而成为了一种负担,数据库服务器为了事务的完整性付出了不必要的代价。 键值型数据库 优点: 1、键值数据库通过简单的key->value的查询,让查询的效率更高。 2、结合合理的cache机制使得I/O的等待开销更少,查询更快。 缺点: 1、键值数据库始终还是基于unique key,因而难以做到复杂的查询。索引的单一性使得查询的方式只有两种:a.根据unique key->value b.遍历,这显然不适应于多变的互联网应用。 目前这两种类型数据库都已经发展出HA(High Availibility)和Scale Out的多种方式,并不能作为其优点来讲,因而这里不详述。 MongoDB 优点: 1、schemaless,这意味着应用数据改动的时候不需要对mongoDB进行修改,换而言之,mongoDB是启动即可用的。这省去了传统关系数据库基于表结构变化的繁琐操作(比如DBA定期备份脚本,对正式环境数据库需要不断部署新的sql脚本等等) 2、与关系数据库一样,有明确的domain的区分,区分database和collection(传统意义上的table),使应用产品的数据存储更为清晰明确。 3、较为完整的索引功能,可以对任何一个字段或多个字段(组合索引)建立索引,索引方式类似于传统的关系数据库。 4、查询高效,使用mmap处理disk I/O,将数据文件cache在内存中。 缺点: 1、数据文件、网络带宽利用率不及关系型数据库。这是要做到schemaless所不可缺的。 2、不支持事务。如果需要事务的支持,选择nosql是不明智的。 此外,MongoDB的客户端语言支持广泛:有C, C++, C# & .NET, ColdFusion, Erlang, Factor, Java, Javascript, PHP, Python, Ruby, Perl, etc. 同时,MongoDB也许有着nosql数据库中最优异的文档,全面、可行。 前不久,MongoDB里程碑式的1.6.0(Production Release)(目前已经是1.6.1)发布,可以说1.6版本在1.4版本上提供了更好的HA和Scale Out机制。 HA: Replset 多个节点组成一个复制组,自动failover,相比1.44的replica pair提供了更多的选择。 Scale Out:mongos(mongodb的proxy)也到了production level。可进行automatic sharding。 关于MongoDB详情见:mongodb.org
posted @ 2010-12-28 09:52  Phenix.  阅读(1085)  评论(0编辑  收藏  举报