在@hacker101的围脖上看到了这个框架,看了下官网,觉得很适合爬虫、多进程并行处理等任务。
看看官方提供的几个例子:
- Mass PDF quote email
- Synchronous Image Resize
- Shard-Query: a PHP project which uses Net_Gearman to execute queries on horizontally partitioned databases and returns the results.[......]
在@hacker101的围脖上看到了这个框架,看了下官网,觉得很适合爬虫、多进程并行处理等任务。
看看官方提供的几个例子:
对MongoDB的Shard集群来说,添加一个分片很简单,AddShard就可以了。
但是缩减集群(删除分片)这种一般很少用到。由于曙光的某服务器又挂了,所以我们送修之前必须把它上面的数据自动迁移到其他Shard上。
以下内容翻译自:http://docs.mongodb.org/manual/tutorial/remove-shards-from-cluster/
1、执行RemoveShard命令
db.runCommand( { removeshard: "y[......]
首先这类NoSQL数据库的设计宗旨基本是“读多写少”。
而我们的需求是:有一大批数据(5亿条记录,每条100B左右)。需要灌入MongoDB。
考虑到数据规模,事先已经做好了Sharding,10台机器。
1、并发12进程,持续灌入数据。
一开始速度很快,基本10W/s,到了1亿6千万左右,开始变成龟速。经过仔细检查,mongos中报大量如下错误:
Wed Jun 6 16:56:41 [conn33] warning: splitChunk failed - cmd[......]
1、启用索引
下面的命令对id字段建索引,1表示是升序。如果-1是降序。
db.collection.ensureIndex({id:1}, {unique:true, dropDups:true, background:true});
2、删除索引
删除id的索引
db.collection.dropIndex({id:1})
删除全部索引
db.collection.dropIndexes();
3、重建索引
db.collection.reIndex()[......]
Mongod DB中有Sharding(分片)和Replication(副本)两个功能。
前者主要是将数据水平分割到各个结点上,达到负载均衡的目的。
后者用于故障恢复。即一般一个Sharding有若干个Replication。
本文只讨论Sharding的情况,因为我们的环境机器本来就不够,不会拿来做Replication的。
配置Sharding有如下三个要素:
1、1~1000个Sharding。
2、1~3个mongo config服务器。
3、1[......]