MongoDB 1.6增加了Sharding机制和副本集合特性
MongoDB 1.6是一个重要的版本,解决了水平扩展的问题,为自动故障转移和恢复提供了Sharding机制,并增加了副本集合的特性。
Sharding
MongoDB1.6的主要改进是可以通过Sharding进行水平扩展。MongoDB能快速的从多个Shard中自动分配数据库、集合或集合中的对象,而不需要停机。Sharding是非常合适的解决方案,因为在多数情况下,数据收集会比其它操作要频繁的多,没必要每次都去分配整个数据库。
Sharding配置包含了Shard、路由进程、配置服务器,如下图所示:
mongod – 主数据库进程。它代表一个Shard并被放入副本集合,以提供故障自动转移。Mongod的进程之一在其副本集合中是主进程。如果主进程停掉,则委派其他服务器作为主进程。
mongos – 路由进程。它负责客户端和Sharded数据库进行交互,该数据库连接到一台独立服务器。如果必要的话,可以使用多个Mongos服务器,但它们不会共享状态。
config servers – 每个配置服务器包含了集群的元数据、系统中存在的Shard以及每个Shard中存放了什么样的数据块。安全起见,可以设置多个配置服务器。如果其中一个出现故障,配置服务器进入只读模式,但Shard会在读/写模式下继续运行。
Replica Sets
MongoDB 1.6的另一个主要特征是副本集合(Replica Sets),这时一个基于主/从复制机制的复制功能,但增加了自动故障转移和恢复特性。一个集群最多可以支持7个服务器,并且任意节点都可以是主节点。所有的写操作都被分发到主节点,而读操作可以在任何节点上进行。
其他改进
$or 查询──操作符$or在查询中支持布尔类型或表达式:
db.foo.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )
Window服务──Mongod可以作为一个服务运行在windows操作系统,但是Mongos不行。
w选项──写操作可以被阻止,直到这个操作传播到集合内的多个服务器。
10gen是一个提供文件数据库支持的公司,该公司的共同创始人兼首席执行官Dwight Merriman提到,MongoDB 1.6已经被bit.ly和foursquare使用。bit.ly在高峰时段有50M用户使用,每个用户平均10K带宽的并发访问。Foursquare则拥有数百万的用户,从Postgres迁移到了Sharded MongoDB,并使用了地理空间索引。
MongoDB的发布说明和Jira上包含了更多的1.6版本相关信息。
http://www.infoq.com/cn/news/2010/08/MongoDB-1.6