我们的项目之一是使用 MongoDb,我们的数据库 => 集合是分片的。顺便说一句,我们的集合是动态创建的,因此我们必须在用 PHP 编写的应用程序层中编写代码来通知 MongoDb 对集合进行分片。因此,我正在寻找两种选择:
- 有什么方法可以确定集合是否通过 PHP 共享?[或者]
- 告诉 MongoDb 对已分片的集合进行分片有什么问题吗?
db.printShardingStatus()
1]您可以通过操作通过检查给出的字符串输出来识别集合是否分片,以了解如何打印MongoDB的输出
2] 要求 MongoDB 对已经分片的集合进行分片没有问题。如果已经分片,Mongo 永远不会将“ok”设置为 1。
db.runCommand({ enablesharding : "sharded_db_name" })
{ "ok" : 0, "errmsg" : "already enabled" }
1.我不完全确定这一点,因为我不使用PHP驱动程序,但是,在shell上运行时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
这里有进一步的分片文档。
PHP 驱动程序文档在这里。
2.您不能对分片集合进行分片,不确定为什么需要……这没有意义。