1

私たちのプロジェクトの 1 つは MongoDb を使用しており、データベース => コレクションはシャーディングされています。ところで、コレクションは動的に作成されるため、MongoDb にコレクションを分割するように通知するために、PHP で記述されたアプリケーション層内にコードを記述する必要がありました。したがって、私は2つのオプションを探しています:

  1. コレクションが PHP 経由で共有されているかどうかを識別する方法はありますか? [また]
  2. シャードされたコレクションをシャードするように MongoDb に指示することに問題はありますか?
4

2 に答える 2

1

1] MongoDB の出力を印刷する方法を知るには、 これdb.printShardingStatus()を チェックして指定された文字列出力を操作することで、コレクションがシャーディングされているかどうかを識別できます

2] MongoDB に、既にシャードされているコレクションをシャードするように依頼しても問題ありません。すでにシャーディングされている場合、Mongo は「ok」を 1 に設定しません。 db.runCommand({ enablesharding : "sharded_db_name" })
{ "ok" : 0, "errmsg" : "already enabled" }

于 2012-10-23T09:57:57.250 に答える
0

1.PHPドライバーを使用していないため、これについては完全にはわかりませんが、シェルで実行sh.status()すると、シャードされたコレクションが何であるかを確認できます。たとえば、以下では、「twitter」データベースの「つぶやき」コレクションをシャーディングしました -

 databases:
    {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
    {  "_id" : "twitter",  "partitioned" : true,  "primary" : "shard0000" }
        twitter.tweets chunks:
                shard0001   11
                shard0002   11
                shard0000   12

詳細なシャーディング ドキュメントはこちらにあります

PHP ドライバーのドキュメントはこちらです。

2.シャードされたコレクションをシャードすることはできません。なぜ必要なのかよくわかりません....意味がありません。

于 2012-10-16T16:03:32.733 に答える