Docs Menu
Docs Home
/
MongoDB Atlas
/ /

グローバル コレクションのシャード

項目一覧

  • Atlas UI でのグローバル書込みのためのグローバルコレクションのシャーディング
  • 必要なアクセス権
  • Considerations
  • 手順
  • グローバルクラスターシャーディングに関する参考資料
  • グローバル書込みのためのコレクションのシャーディング
  • Error Handling
  • グローバル書込みなしでのコレクションのシャーディング
  • グローバル書込みクラスターでシャーディングされていないコレクション

重要

サーバーレスインスタンスで使用できない機能

サーバーレスインスタンスは現時点ではこの機能をサポートしていません。詳細については、 サーバーレスインスタンスの制限を参照してください。

注意

  • グローバル書込みは、 M30+クラスター階層を必要とするグローバルクラスターでのみサポートされます。

  • Atlas UI を使用して、 Atlas マネージド シャーディングが有効になっているグローバルクラスターでのみグローバルコレクションをシャードできます。

  • このドキュメントでは、シャーディング セマンティクスに関する予備知識を前提としています。 このチュートリアルを続行する前に、シャーディングに関するドキュメントを確認してください。

シャーディングされたクラスターでは、 シャードキー に基づきシャーディングされたデータの ゾーン を作成できます。ゾーンは地理的領域に基づいてデータをセグメント化できます。 地理的領域に基づくシャーディングの詳細については、「ロケーションによるデータの分割 」を参照してください。

Atlas UI は、 Atlas マネージドシャーディング を使用するグローバルクラスターのグローバル書込みコレクションのシャーディングをサポートしています。 自己管理型シャーディングを使用する非グローバル書込みコレクションまたはグローバル書込みコレクションをシャードするには、 mongoshまたはアプリケーション コードを使用する必要があります。 詳細については、「シャーディングされたクラスターの配置 」を参照してください。

Atlas UI でグローバル書込みのコレクションをシャードするには、クラスターの Atlas プロジェクトのProject OwnerまたはOrganization Ownerロールが必要です。

この手順を開始する前に、以下のことを確認してください。

コレクションをシャーディングしたり、クラスター階層をアップグレードしたりする代わりに、アクセス頻度の低いデータを Atlas クラスターから MongoDB が管理する読み取り専用フェデレーティッドデータベースインスタンスに移動するように Atlas Online Archiveを構成できます。Atlas Online Archive の詳細については、「Atlas Online Archive の管理」を参照してください。

Atlas UI でシャードキーを選択すると、Atlas はターゲット コレクションのシャーディングを試行します。 この期間中、ユーザーがコレクションを手動でシャーディングしないようにします。 Atlas がターゲット コレクションが Atlas UI で選択したキーとは異なるキーでシャーディングされていることを検出した場合、Atlas は手順を停止し、Atlas UI にそのコレクションに対する警告を表示します。 [ Unmanage Collectionをクリックして警告をクリアできます。 このアクションは、基礎となるコレクションと手動で選択されたシャードキーを変更せずに、Atlas マネジメントからコレクションを削除します。

MongoDB 4.2以降では、シャードキー フィールドが不変の_idフィールドでない限り、ドキュメントのシャードキー値を更新できます。 詳細については、「ドキュメントのシャードキー値の変更 」を参照してください。

MongoDB 4.0 以前では、グローバル書込みが有効なコレクション内の既存のドキュメント内のシャードキー フィールドの値を更新することはできません。

重要

シャードキー値とグローバルクラスター

すべての MongoDB バージョンでは、グローバルクラスター上のコレクションを再シャーディングすることはできません。 詳細については、「グローバル書込みのコレクションのシャーディング 」を参照してください。

グローバルクラスターでコレクションをシャードするには、次の手順に従います。

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. まだ表示されていない場合は、サイドバーの [ Clusters ] をクリックします。

    [ Clusters (クラスター) ] ページが表示されます。

2

クラスターの [Browse Collections] ボタンをクリックします。

Data Explorerが表示されます。

3
4
5
6

次のいずれかのオプションを選択できます。

Default
Atlas は、フィールドを指定するドキュメントをシャードキーとして使用します。
Use unique index as the shard key
Atlas は基礎となるインデックスを使用して、グローバルコレクションのシャードキーに一意の制約を強制します。
Use hashed index as the shard key

Atlas は、シャードキーの 2 番目のフィールドをハッシュすることにより、シャーディングされたデータを均等に分散します。 このオプションは、MongoDB v5.0 以降を実行している Atlas クラスターでのみ使用できます。

オプションでPre-split data for even distributionを選択し、コレクションに定義されたゾーンとゾーン範囲に基づいて、空のコレクションまたは存在しないコレクションの初期チャンク作成と分散を実行するかどうかを指定できます。

Pre-split data for even distributionオプションを選択すると、ハッシュされたシャードキーで空のコレクションをシャーディングするときに最初に作成するチャンクの最小数を指定することもできます。 最初のチャンク分散により、Atlas は ゾーン シャーディング を迅速に設定できます。 Atlas が作成するチャンクの数は、定義したゾーンの数によって異なります。 デフォルトでは、Atlas はロケーション コードごとに 1 つのチャンクを作成し、チャンクをすべてのシャードに均等に分散します。

これらのオプションの詳細については、「グローバルクラスター シャーディング リファレンス 」を参照してください。

7

Atlas では、コレクションを構成すると、 Global Writesタブの上部に複合シャードキーが表示されます。

次のセクションでは、シャーディング動作と、グローバルクラスターの管理でシャーディングを有効にする方法について説明します。

Atlas マネージド シャーディング を持つグローバルクラスターの場合。 有効な場合、シャーディングされていないコレクションがシャーディング時にグローバル書込みを使用するには、シャーディングする前に次の互換性要件を満たしている必要があります。

locationフィールドのみのシャードキーは、特に国または地域のサブセットが書き込み操作の大部分を受け取るワークロードの場合、ボトルネックが発生する可能性があります。 Atlas グローバル書き込みでは、シャーディングされたデータをクラスター全体に効率的に分散するために複合シャードキーが必要です。 Atlas Global Cluster のシャードキーは MongoDB のシャードキーと同じ制限を共有しています。 次の Atlas グローバルクラスターの制限が適用されます。

  • 複合シャードキーの最初のフィールドはlocationである必要があり、ハッシュすることはできません。

  • 複合シャードキーには、セカンダリ シャードキー フィールドが 1 つだけ存在します。

  • 複合 シャードキーのセカンダリ シャードキー フィールドはハッシュできます。

  • セカンダリ シャードキー フィールドは配列にできません

詳細は、以下を参照してください。

  • セカンダリ シャードキー フィールドの選択とシャードキーの選択がデータ分散に与える影響については、「 シャードキーの選択 」を参照してください

  • シャードキーの制限については、「シャードキーの制限 」を参照してください。

  • 使用可能なハッシュ シャーディング オプションについては、「 ハッシュされたシャーディング オプション 」を参照してください

重要

シャードキーの変更

シャーディング後、変更できる内容は、実行する MongoDB のバージョンによって異なります。

MongoDB バージョン
シャードキー キーの変更
シャードキー値の変更
MongoDB 5.0
はい、 Atlas UIのみを使用してキーにフィールドを追加します。
はい
MongoDB 6.0
はい、 Atlas UIのみを使用してキーにフィールドを追加します。
はい
MongoDB 7.0
はい、 Atlas UIのみを使用してキーにフィールドを追加します。
はい

すべての MongoDB バージョンでは、グローバルクラスター上のコレクションを再シャーディングすることはできません。

Atlas UIは、グローバル書込み (write) 向けの特定の検証を持つシャーディングされたコレクションの作成をサポートしています。 詳しくは、「 Atlas UI でグローバル書込みのためにグローバル コレクションをシャード 」を参照してください。

mongoshを使用してsh.shardCollection()を実行することもできます。 コレクションをシャーディングした後、 Atlas UIを使用してそのコレクションのグローバル書込みを有効にする必要があります。

警告

Atlas Search インデックスが既に存在するコレクションをシャーディングする場合、コレクションがシャードに表示され始めるときにクエリのダウンタイムが短時間発生することがあります。また、シャードを Atlas Search インデックスなどのシャーディングされたコレクションに追加する場合、追加されたシャードで最初の同期プロセスが完了するまで、そのコレクションに対する検索クエリは失敗します。詳しくは、「最初の同期プロセス」を参照してください。

Atlas UI を使用してコレクションをシャーディングする方法の詳細については、「 Atlas UIでのグローバル書込みのためのグローバルコレクションのシャーディング 」を参照してください。

シャードキーは、ハッシュされたシャーディングと事前分割されたデータを使用して均等に分散します。 これは、MongoDB 5.0以降を実行している Atlas クラスターでのみ使用できます。

次のいずれかのアクションを実行すると、Atlas はシャードキーの 2 番目のフィールドをハッシュしてシャーディングされたデータを均等に分散します。

  • Atlas UIUse hashed index as the shard keyを選択して、ハッシュ インデックス シャードキーの使用を有効にします。

  • API経由でisCustomShardKeyHashedを設定します。

オプションで、空のコレクションや存在しないコレクションに対して初期チャンクの作成と分散を実行するかどうかを指定できます。 このアクションは、コレクションに定義されたゾーンとゾーン範囲に基づいています。 これを行うには、次のいずれかのアクションを実行します。

  • Atlas UIPre-split data for even distributionを選択します。

  • APIを使用してpresplitHashedZoneを設定します。

グローバルクラスターの複合ハッシュされたシャードキーを使用してシャーディングされたコレクションを作成すると、Atlas はロケーションコードごとに少なくとも1チャンクを作成し、チャンクをクラスター内のシャードに均等に分散しようとします。

Atlas UI を使用して ハッシュされたシャードキー で空のコレクションをシャーディングする場合、またはnumInitialChunks API を通じて パラメーターを設定することで、最初に作成するチャンクの最小数を指定することもできます。

注意

シャードあたりのチャンク数を指定すると、Atlas は指定した最小数以上のチャンクを、ロケーション コードごとに同じ数のチャンクで作成します。 チャンクの最小数を指定すると、Atlas は ゾーン シャーディング を迅速に設定します(特に、シャーディングする前にデータを地理的に分散する方法がすでにわかっている場合)。

Atlas がグローバル書き込み用のコレクションのシャーディング中にエラーに発生した場合、画面上部のバナーにメッセージが表示されます。

  1. エラーとエラーが発生した名前空間の詳細については、 See Detailsをクリックしてください。 モーダル ウィンドウに、完全なエラー メッセージとFix Nowボタンが表示されます。

  2. Closeをクリックし、Atlas UI のコレクションに移動します。 [] Fix NowGoボタンをクリックして、そのAtlas クラスターの UI に することもできます。Atlas

  3. エラー メッセージに記載されているコレクションの [ Global Writes ] タブをクリックします。

  4. グローバル書込みシャーディング操作をキャンセルするには、 Unmanage Collectionをクリックします。 シャーディング操作をキャンセルするには、 Project Data Access Adminロールが必要です。

エラー メッセージに示されているように、コレクションに必要な変更を加えたら、シャーディング プロセスを再度開始できます。

考えられるエラーは次のとおりです。

カスタム シャードキーにはインデックスがすでに存在します。
複合シャードキー の 2 番目の部分として選択されたフィールドがすでにインデックスされている場合、シャーディング操作は失敗する可能性があります。
シャードキー フィールドが存在しない場合。
コレクション内のすべてのドキュメントには、両方のシャードキー フィールドが含まれている必要があります。 このエラーは MongoDB 5.0 より前のバージョンでのみ発生します。
コレクションはすでにシャーディングされています。
コレクションがすでに手動でシャーディングされている場合、操作は失敗します。
コレクションにはカスタムのデフォルト照合があります。
コレクションでカスタムのデフォルト照合を実行すると、シャーディング エラーが発生する可能性があります。

MongoDB は、書込み操作内の各ドキュメントごとに、シャードキーのlocationフィールド(含まれている場合)を使用して、データをルーティングするゾーンを決定します。 MongoDB は、そのゾーンに関連付けられたシャードをドキュメント書込みのターゲットとして選択し、地理的に分離されたデータ ストレージを容易にします。

警告

シャードキーが書き込み操作に含まれていない場合、またはシャードキーが含まれているがlocationフィールドが存在しない場合、書き込み操作は成功しますが、結果のドキュメントは配布されません。

MongoDB は、 グローバル書込みの シャーディング コレクション で定義された基準を満たす挿入されたドキュメントに対してのみこの動作を保証できます。 具体的には、MongoDB はlocation フィールドが ISO-3166 -1 alparent2 に準拠していないドキュメントをルーティングできます または ISO-3166 - クラスター内の任意のシャードに接続します。2

MongoDBクエリのルーティングは、読み取り操作に完全なシャードキーが含まれているかどうか、 および location値がサポートされている 316612"US""DE""IN"ISO-3166 -2 アルゴリズム"US-DC" "DE-BE""IN-DL"に対応しているかどうかによって異なります。 国コード( 、 、 ) または サポートされている ISO- - 下位分類コード( 、 、 )。

  • 完全なシャードキーを含み、かつlocation値がグローバル書込みの要件を満たしているクエリの場合、MongoDB は読み取り操作を、 location値またはクエリで指定された値にマッピングするゾーンに限定します。

  • location値 を含まない読み取り操作の場合、またはlocation 値がサポートされている ISO-3166 -1 2alparent に対応していない場合 国コードまたは ISO-3166 -2 MongoDB は読み取り操作をクラスター内のすべてのゾーンにブロードキャストする必要があります。

  • 地理的に離れたリージョンにRead-only ノードを持つグローバル書き込みゾーンの場合、それらのリージョンのクライアントは、クエリの一部として完全なシャードキーを指定し、Read-only 読み取り設定 で読み取り操作 を 発行することで、そのゾーンのローカル ノードをクエリできますのnearest

重要

セカンダリ ノードとプライマリ間のレプリケーションラグのレベルによっては、セカンダリ読み取りによって古いデータが返される場合があります。

詳しくは、「 MongoDB 読み込み設定(read preference) 」と「 MongoDB クエリ ルーティング 」を参照してください。

グローバル書き込みクラスターは、標準の Atlas シャーディングされたクラスターと同じ範囲およびハッシュシャーディング戦略をサポートします。 シャードキーとドキュメント スキーマがグローバル書込みをサポートしていないシャーディングされたコレクションの場合、MongoDB は、選択されたシャードキーに関連するクラスター内の利用可能なシャード全体にシャーディングされたデータを均等に分散します。 グローバル書き込みを利用できないデータには、別の シャーディングされたクラスター を使用することを検討してください。

シャーディング後は、グローバル書込みをサポートするようにコレクションを変更できません。 将来的にコレクションのグローバル書込みを使用できるシャードキーを選択することをお勧めします。

Tip

以下も参照してください。

グローバル書込みのシャーディング要件の詳細については、「グローバル書込みのコレクションのシャーディング 」を参照してください。

グローバルクラスターは、標準の Atlas シャーディングされたクラスターと同じ、シャーディングされていないコレクションのサポートを提供します。 MongoDB では、クラスター内の各データベースに対して、シャーディングされていないコレクションをプライマリシャードに保存します。 sh.status()データベースのプライマリシャードを決定するには、mongosh から を使用します。

戻る

グローバルクラスター