2012-10-16 29 views
1

我们的项目之一是使用MongoDb,我们的数据库=>集合被分割。顺便说一句,我们的集合是动态创建的,因此我们必须在用PHP编写的应用程序层内编写代码来通知MongoDb对集合进行分片。因此,我正在寻找两种选择:MongoDb:在已启用分片的集合上发出启用分片的命令是否有害?

  1. 是否有任何方法来确定是否通过PHP共享集合? [或]
  2. 告诉MongoDb分片分片的集合有什么问题吗?
+1

你的意思是“是否发出命令启用已启用分片的集合上的分片”? –

+0

@AsyaKamsky - 你有我。谢谢,我已经更新了标题。 –

回答

1

1]可以识别的集合是否是通过操纵由db.printShardingStatus() 检查this给定的字符串输出分片或不知道如何打印的MongoDB

2]没有问题的输出要求的MongoDB到分片集合这已经被分解了。 如果Mongo已经分片,Mongo将永远不会设置“ok”为1。 db.runCommand({ enablesharding : "sharded_db_name" })
{ "ok" : 0, "errmsg" : "already enabled" }

0

1.我并不完全确定这一点,因为我不使用PHP驱动程序,但是,在运行sh.status()的shell上,可以看到分片集合是什么。例如,下面我分片的“鸣叫”集合中的“推特”数据库 -

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.你不能分割分片集合,不确定你为什么需要......它没有意义。

+0

就像我说过的,我的集合是动态创建的,我想分割这些集合,因为它们是从应用程序层创建的(不是以传统的方式),话虽如此,我不想监视我的集合是否新建并拍摄了命令启用分片。 –