我们的一个项目是使用MongoDb和我们的数据库=>集合是分片的。顺便说一下,我们的集合是动态创建的,因此我们必须在用PHP编写的Application层中编写代码,以通知MongoDb对集合进行分片。因此,我正在寻找两个选择:
答案 0 :(得分:1)
1]你可以通过操纵db.printShardingStatus()
给出的字符串输出来识别集合是否被分片
检查this以了解如何打印MongoDB的输出
2]要求MongoDB分片已经分片的集合没问题。
如果已经分片,Mongo将永远不会将“ok”设置为1。
db.runCommand({ enablesharding : "sharded_db_name" })
{ "ok" : 0, "errmsg" : "already enabled" }
答案 1 :(得分:0)
1.我不完全确定这一点,因为我没有使用PHP驱动程序,但是,当一个人运行sh.status()
时,可以看到分片集合是什么。例如,下面我在“twitter”数据库中对“tweets”集合进行了分片 -
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "twitter", "partitioned" : true, "primary" : "shard0000" }
twitter.tweets chunks:
shard0001 11
shard0002 11
shard0000 12
还有进一步的分片文档here。
PHP驱动程序文档为here。
2.你不能对分片收集进行分片,不能确定为什么需要......它没有意义。