翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon DocumentDB のエラスティッククラスター
このセクションのトピックでは、Amazon DocumentDB エラスティッククラスターを支えているメカニズムと機能について説明します。
トピック
Amazon DocumentDB エラスティッククラスターのシャーディング
Amazon DocumentDB エラスティッククラスターは、ハッシュベースのシャーディングを使用して、分散型ストレージシステム全体にデータをパーティショニングします。シャーディングはパーティショニングとも呼ばれ、大きなデータセットを複数のノードにまたがる小さなデータセットに分割し、垂直スケーリングの限界を超えてデータベースをスケールアウトできるようにします。エラスティッククラスターでは、Amazon DocumentDB のコンピューティングとストレージを分離、つまり「デカップリング」することで、互いを別々にスケーリングできます。エラスティッククラスターは、コンピューティングノード間で小さなデータを移動してコレクションを再分割するのではなく、分散型ストレージシステム内でデータを効率的にコピーします。
シャードの定義
以下はシャード命名法の定義です。
シャード: - シャードは エラスティッククラスターのコンピューティング能力を提供します。デフォルトでは、シャードには 2 つのノードがあります。最大 32 個のシャードを設定でき、各シャードには最大 64 個の vCPU を設定できます。
シャードキー - シャードキーは、エラスティッククラスターが読み取りと書き込みトラフィックを分散するために使用する、シャードコレクション内の JSON ドキュメントの必須フィールドです。
シャードコレクション: シャードコレクションは、データがデータパーティション内の 1 つのエラスティッククラスター全体に分散されるコレクションです。
パーティション: パーティションはシャードされたデータの論理的な部分です。シャードコレクションを作成すると、データはシャードキーに基づいて各シャード内のパーティションに自動的に編成されます。1 つのシャードには複数のパーティションがあります。
設定された複数のシャードに対するデータの分散
多数の一意の値を持つシャードキーを作成します。シャードキーが適切であると、その土台のシャード間でデータが均等にパーティショニングされ、ワークロードに最高のスループットとパフォーマンスを提供されます。次の例は、「user_id」という名前のシャードキーを使用する従業員名のデータです。
DocumentDB はハッシュシャーディングを使用して、土台のシャードの間でデータをパーティショニングします。追加データも同じ方法で挿入および分散されます。
シャードが追加されてデータベースがスケールアウトされると、Amazon DocumentDB はデータを自動的に再分散します。
エラスティッククラスターの移行
Amazon DocumentDB では、シャードされた MongoDB のデータをエラスティッククラスターに移行することができます。オフライン、オンライン、ハイブリッドの移行方法がサポートされています。詳細については、「Amazon DocumentDB への移行」を参照してください。
エラスティッククラスターのスケーリング
Amazon DocumentDB エラスティッククラスターでは、エラスティッククラスター内のシャードの数を増やしたり (スケールアウト)、各シャードに適用される vCPU の数を増やしたり (スケールアップ) することができます。必要に応じてシャードの数とコンピューティング能力 (vCPU) を減らすこともできます。
スケーリングのベストプラクティスについては、「エラスティッククラスターのスケーリング」を参照してください。
注記
クラスターレベルのスケーリングもできます。詳細については、「Amazon DocumentDB クラスターのスケーリング」を参照してください。
エラスティッククラスターの信頼性
Amazon DocumentDB は、信頼性、耐久性、および耐障害性を持つように設計されています。可用性を向上させるため、エラスティッククラスターは異なるアベイラビリティーゾーンに配置されたシャードごとに 2 つのノードを展開します。Amazon DocumentDB には、信頼性の高いデータベースソリューションとなるいくつかの自動機能も含まれています。詳細については、「Amazon DocumentDB の信頼性」を参照してください。
エラスティッククラスターのストレージと可用性
Amazon DocumentDB のデータは クラスターボリューム に保存されます。これは、SSD (Solid State Drive) を使用する単一の仮想ボリュームです。1 つのクラスターボリュームはお客様のデータの 6 つのコピーで構成されます。これらのデータは、単一の AWS リージョンの複数のアベイラビリティーゾーン間で自動的にレプリケートされます。このレプリケーションにより、データの高い耐久性が保証され、データ損失の可能性が低くなります。また、データのコピーが他のアベイラビリティーゾーンにすでに存在するため、フェイルオーバー中のクラスターの可用性が高まります。ストレージ、高可用性、レプリケーションの詳細については、「Amazon DocumentDB の 仕組み」を参照してください。
Amazon DocumentDB 4.0 と Elastic クラスター の機能上の違い
Amazon DocumentDB 4.0 と エラスティッククラスターの間には、次のような機能上の違いがあります。
top
およびcollStats
の結果はシャード別にパーティショニングされます。シャードコレクションの場合、データは複数のパーティションに分散され、collStats
は、各パーティションから集約されたcollScans
のレポートを作成します。シャードされたコレクションの
top
とcollStats
からコレクション統計は、クラスターのシャード数が変更されるとリセットされます。バックアップビルトインロールが
serverStatus
をサポートするようになりました。アクション - バックアップロールを持つデベロッパーおよびアプリケーションは、Amazon DocumentDB クラスターの状態に関する統計を収集できます。replSetGetConfig
出力ではSecondaryDelaySecs
フィールドがslaveDelay
を置き換えます。hello
コマンドはisMaster
を置き換え、hello
は エラスティッククラスターの役割を説明したドキュメント返します。エラスティッククラスターでは、
$elemMatch
演算子は配列の最初の入れ子レベルのドキュメントのみを一致検索します。Amazon DocumentDB 4.0 では、この演算子はすべてのレベルを横断して、一致したドキュメントを返します。例:
db.foo.insert( [ {a: {b: 5}}, {a: {b: [5]}}, {a: {b: [3, 7]}}, {a: [{b: 5}]}, {a: [{b: 3}, {b: 7}]}, {a: [{b: [5]}]}, {a: [{b: [3, 7]}]}, {a: [[{b: 5}]]}, {a: [[{b: 3}, {b: 7}]]}, {a: [[{b: [5]}]]}, {a: [[{b: [3, 7]}]]} ]); // Elastic Clusters > db.foo.find({a: {$elemMatch: {b: {$elemMatch: {$lt: 6, $gt: 4}}}}}, {_id: 0}) { "a" : [ { "b" : [ 5 ] } ] } // Docdb 4.0: traverse more than one level deep > db.foo.find({a: {$elemMatch: {b: {$elemMatch: {$lt: 6, $gt: 4}}}}}, {_id: 0}) { "a" : [ { "b" : [ 5 ] } ] } { "a" : [ [ { "b" : [ 5 ] } ] ] }
Amazon DocumentDB 4.0 では、「$」プロジェクションはすべてのドキュメントとすべてのフィールドを返します。エラスティッククラスターでは、「$」プロジェクションが指定された
find
コマンドは、「$」プロジェクションと一致するフィールドのみを含むクエリパラメータに一致するドキュメントを返します。エラスティッククラスターでは、
$regex
および$options
クエリパラメーターが指定されたfind
コマンドは、「$regex と $options の両方にオプションを設定することはできません」というエラーを返します。
エラスティッククラスターの場合、
$indexOfCP
は以下のいずれかの場合に 「-1」を返します。string expression
でサブ文字列が見つからない。数値
start
はend
より大きい。数値
start
は文字列のバイト長より大きい。
Amazon DocumentDB 4.0 の場合、
$indexOfCP
は位置start
の数値がend
または文字列のバイト長よりも大きい場合に「0」を返します。エラスティッククラスターの場合、
_id fields
プロジェクトオペレーション (例:{"_id.nestedField" : 1}
)はプロジェクトされたフィールドのみを含むドキュメントを返します。これに対し、Amazon DocumentDB 4.0 の場合、入れ子にされたフィールドプロジェクトコマンドではどのドキュメントも除外しません。