シャードクラスタインスタンス内のデータベースの収集レベルでシャードを構成して、ストレージスペースを最大限に活用し、シャードクラスタ内のシャードのコンピューティングパフォーマンスを最大化することができます。

注意事項

  • この操作は、シャードクラスタインスタンスにのみ適用されます。
  • シャードを構成後、balancer は指定された基準を満たす既存のデータを分割します。 分割はインスタンスのパフォーマンスに影響するため、この操作はオフピーク期間に実行することをお勧めします。
  • 分割後に構成されたシャードキーを変更することはできません。
  • シャードキーの選択は、シャードクラスタインスタンスのパフォーマンスに影響します。 シャードキーの選択方法の詳細は、Shard Keys をご参照ください。
  • 分割を構成しない場合、データは PrimaryShard に書き込まれます。 この場合、同じシャードクラスター内のストレージスペースを最大限に活用できず、他のシャードのコンピューティングパフォーマンスを最大化することはできなくなります。

手順

次の手順では、例として mongodbtest という名前のデータベースと customer という名前のコレクションを使用します。

  1. mongo shell を介したシャードクラスタインスタンスへの接続
  2. 分割対象のコレクションが配置されているデータベースの分割機能を有効にします。
    sh.enableSharding("<database>")

    上記のコマンドで、<database>はデータベース名を示します。

    例:
    sh.enableSharding("mongodbtest")
    分割ステータスを確認するには、 sh.status() コマンドを実行します。
  3. コレクション内のフィールドにインデックスを作成します。
    db.<collection>.createIndex(<keys>,<options>)
    注釈:
    • <collection>:コレクション名。
    • <keys>:インデックス作成のためのフィールド及びソート方法が含まれます。

      1:フィールドの昇順インデックスを示します。 -1 :フィールドの降順インデックスを示します。

    • <options>:追加オプション。 詳細は、db.collection.createIndex()をご参照ください。 この例では、このパラメータは使用されていません。
    例:
    db.customer.createIndex({"name":1})
  4. コレクションの分割を設定します。
    sh.shardCollection("<database>.<collection>",{ "<key>":<value> } ) 
    注釈:
    • <database>:データベース名。
    • <collection>:コレクション名。
    • <key>:ApsaraDB for MongoDB がデータを断片化するためのシャードキー。
    • <value>:
      • 1:シャードキーの昇順インデックスを示します。これは、シャードキーに基づく範囲クエリを適切にサポートできます。
      • -1:シャードキーの降順のインデックスを示します。これは、シャードキーに基づく範囲クエリを適切にサポートできます。
      • hashed:hash シャードキーを示します。これは、さまざまなシャードにデータを均等に書き込むために使用できます。
      [DO NOT TRANSLATE]
    例:
    sh.shardCollection("mongodbtest.customer",{"name":1})

このコレクションにデータベース内のデータが含まれている場合、バックエンド balancer は構成後に自動的にデータを分割できます。 分割プロセスはお客様が意識することはありません。

その他操作

データベースが稼働し、データがしばらく書き込まれた後で、mongo shell で sh.status() コマンドを実行すると、分割の構成と分割のチャンク情報を確認できます。
また、 db.stats() コマンドを実行して、さまざまなシャード上でこのデータベースのデータストレージをチェックすることができます。