Amazon Web Services ブログ

Amazon DocumentDB (MongoDB 互換) について知っておくべき 12 のこと

Amazon DocumentDB (MongoDB 互換) は、MongoDB のワークロードをサポートする、高速かつスケーラブルで可用性に優れたフルマネージド型のドキュメントデータベースサービスです。お客様は、基盤となるインフラストラクチャの管理を気にすることなく、現在ご使用のものと同じ MongoDB 3.6 向けのアプリケーションコード、ドライバー、ツールを、そのまま Amazon DocumentDB 上でワークロードを実行、管理、そしてスケールするのに使えます。ドキュメントデータベースである Amazon DocumentDB は、JSON データの保存、クエリ、およびインデックスを容易にします。

AWS は、可用性、信頼性、耐久性、スケーラビリティ、バックアップなどに関するお客様の課題を独自の方法を用いて解決するために Amazon DocumentDB を構築しました。その過程において、当社は、付加価値を生まない手間のかかる作業を取り除き、コストを削減するために、いくつかの斬新でユニークな機能を構築しました。この投稿では、Amazon DocumentDB で MongoDB ワークロードを構築およびスケーリングするのに役立つ、まだ認識されていないかもしれない 12 の Amazon DocumentDB 機能を紹介します。

1.最新のクラウドネイティブアーキテクチャ

Amazon DocumentDB は、クラウドネイティブのデータベースアーキテクチャを使用してゼロから構築されました。独自のアーキテクチャによりストレージとコンピューティングが分離されているため、各レイヤーを個別に拡張できます。Amazon DocumentDB は、3 つの AWSアベイラビリティーゾーン (AZ) にまたがって 6 つの方法でデータをレプリケートすることで高可用性と耐久性を備えた、フォールトトレラントな分散型の専用自己修復ストレージシステムを使用しています。詳細については、YouTube のAWS re:Invent 2019: Amazon DocumentDB の詳細の動画をご覧ください。次の図は、Amazon DocumentDB アーキテクチャにおけるコンピューティングとストレージの分離、およびデータが 3 つの AZ にまたがって 6 つの方法でレプリケートされる態様を示しています。

2.データサイズにかかわらず、数分でスケーリング

ストレージボリュームはコンピューティングインスタンスから分離されているため、コンピューティングインスタンスは、インスタンスに固有のアタッチされたストレージに依存しません。クラスター内の各インスタンスは、分散ストレージボリュームをマウントします。したがって、新しいインスタンスが追加されたときに、データのコピーは必要ありません。これはお客様にとってメリットです。なぜなら、データサイズに関係なく、追加のレプリカインスタンスをクラスターに追加するか、インスタンスを数分でスケールアップして、スループットを毎秒数百万の読み取りまで増やすことができるからです。同様に、他のインスタンスのパフォーマンスに影響を与えることなく、同程度に簡単にスケールダウンおよびスケールインできます。

3.自動、影響なし、コストを抑えたバックアップ

従来のデータベースアーキテクチャとは異なり、バックアップはコンピューティングレイヤーではありません (この状態は、データベースのパフォーマンスに影響を与える可能性があります)。代わりに、Amazon DocumentDB バックアップはストレージレイヤーによって処理され、Amazon S3 に継続的にストリーミングされます。Amazon DocumentDB では、スナップショットを作成してもデータベースのパフォーマンスに影響を与えないため、必要に応じてスナップショットを作成し、本番データベースのパフォーマンスへの影響を回避できます。

Amazon DocumentDB では、連続バックアップがデフォルトで有効になっており、1 日分のポイントインタイムリストア (PITR) が提供されます。バックアップを無効にすることはできません。また、PITR のバックアップ保持期間を 35 日間まで増やすことができます。さらに、いつでも長期間のアーカイブのために手動のスナップショットを作成できます。デフォルトで 1 日分のバックアップを有効にするコストを相殺するために、Amazon DocumentDB は、リージョンの合計クラスターストレージの最大 100% のバックアップストレージに対して課金しません。追加のバックアップのコストは、月額 0.02 USD/GB です。さらに、バックアップはコンピューティングレイヤーではなくストレージレイヤーで行われるため、バックアップでコンピューティングリソースが使用されたり、I/O コストが発生したりすることはありません。

4.ストレージと I/O の自動スケーリング

Amazon DocumentDB クラスターをプロビジョニングする場合、クラスターに必要なストレージまたは I/O の量を指定する必要はありません。Amazon DocumentDB は、クラスターごとに 10 GB から 64 TB までのデータを 10 GB の増分で自動的にスケーリングする独自のストレージシステムを使用しています。ストレージと I/O の自動スケーリングは、キャパシティープランニングやストレージインフラストラクチャの過剰なプロビジョニングについて心配する必要がないため、時間と費用を節約できます。

5.レプリカでの読み取りのスケーリング

Amazon DocumentDB では、ストレージレイヤーがデータのレプリケーションと耐久性を処理します。従来のデータベースアーキテクチャとは異なり、Amazon DocumentDB のレプリカインスタンスはデータを保有せず、耐久性のクォーラムを実現するためのレプリケーションプロトコルに参加していません。その結果、レプリカインスタンスの読み取りをスケーリングして、支払い対象のコンピューティングリソースのパフォーマンスを向上させ、高可用性を実現できます。詳細については、レプリカセットとして Amazon DocumentDB に接続するを参照してください。

6.暗黙的なトランザクション

Amazon DocumentDB では、すべての CRUD ステートメント (findAndModifyupdateinsertdelete) は、複数のドキュメントを変更するオペレーションであっても、原子性と一貫性を保証します。この動作は MongoDB 3.6 とは異なります。MongoDB3.6 は、単一のドキュメントを変更するコマンドに対して原子性の保証のみを提供します。次のコードは、原子性および一貫性の両方を満たす、複数のドキュメントを変更する Amazon DocumentDB の操作のサンプルを示しています。

db.miles.update(
   {"credit_card": {$eq: true}},
   {$mul: { "flight_miles.$[]": NumberInt(2) }},
   { multi: true }
)
 
db.miles.updateMany({"credit_card": {$eq: true}}, {$mul: { "flight_miles.$[]": NumberInt(2) }})
 
db.runCommand({
   update: "miles",
   updates: [
              {q: {"credit_card": {$eq: true}}, u: {$mul: { "flight_miles.$[]": NumberInt(2) }}, multi: true}
   ]
})
 
db.products.deleteMany( { "cost" : { $gt : 30.00 } } );
 
db.runCommand(
   {
      delete: "products",
      deletes: [ {q: { "cost" : { $gt : 30.00 } }, limit: 0 } ]
   }
)

7.Amazon DocumentDB への移行のための無料の DMS

AWS Database Migration Service (DMS) を使用すると、データベースを Amazon DocumentDB に迅速かつ安全に移行できます。AWS DMS を無料で (6 か月間) 使用して、実質的にダウンタイムなしでオンプレミスまたは EC2 MongoDB データベースを Amazon DocumentDB に簡単に移行できます。詳細については、AWS Database Migration Service: 無料の DMS をご参照ください。移行の詳細については、Amazon DocumentDB への移行を参照してください。

8.開発およびテスト用の高い耐久性を有する単一インスタンスのクラスター

Amazon DocumentDB は、デフォルトで高い耐久性を有しています。ストレージはその耐久性を処理し、ストレージはクラスター内にあるインスタンスの数と相関していないため、単一であっても、なお高い耐久性を有するインスタンスのクラスターを作成できます。単一インスタンスのクラスターは、開発とテストのワークロードのコストを節約するのに役立ちます。コストの削減については、コストの最適化を参照してください。

9.コンプライアンス認定とセキュリティコントロールの幅広い機能群

Amazon DocumentDB は、多数のセキュリティコントロールを提供します。まず、Amazon DocumentDB はロールベースのアクセス制御 (RBAC) をサポートしているため、ユーザーを作成し、組込みロールをアタッチして、ユーザーが実行できる操作を制限できます。Amazon DocumentDB は VPC のみのサービスです。Amazon VPC では、AWS Cloud の論理的に分離されたセクションをプロビジョニングして、Amazon DocumentDB クラスターなどの AWS リソースを、定義した独自の仮想ネットワークで起動できます。Amazon DocumentDB では、ユーザーが AWS KMS を使って作成および管理するキーを使用して、データベースを暗号化することができます。Amazon DocumentDB 暗号化を使用して実行されるクラスターでは、基礎ストレージ内の保存データに加え、同じクラスター内にある自動バックアップ、スナップショット、およびレプリカも暗号化されます。クライアントと Amazon DocumentDB 間の接続は、デフォルトで TLS を使って転送時の暗号化が行われます。

Amazon DocumentDB は最高のセキュリティ基準を満たし、AWS のセキュリティを簡単に検証し、独自の規制およびコンプライアンス義務を遵守できます。Amazon DocumentDB は、HIPAA 準拠であることに加えて、PCI DSSISO 9001270012701727018SOC 1、2、3、および Health Information Trust Alliance (HITRUST) Common Security Framework (CSF) 認定に準拠していると評価されています。AWS コンプライアンスレポートは、AWS Artifact からダウンロードできます。

10.Amazon DocumentDB クラスターの起動と停止

Amazon DocumentDB では、クラスターを停止および起動して、コストを節約できます。これは、クラスターを常時実行する必要がない開発およびテストの目的のために、クラスターを簡単に、かつ、コストを抑えて使用することを可能にするものです。クラスターを停止すると、コンピューティングとコストがゼロになります。詳細については、Amazon DocumentDB クラスターの停止と起動を参照してください。

11.時間がかかるクエリのプロファイリング

Amazon DocumentDB のプロファイラーを使用して、クラスターで実行されたクエリの実行時間と詳細を Amazon CloudWatch Logs に記録できます。プロファイラーは、個々のクエリパフォーマンスと全体的なクラスターパフォーマンスを向上できるように、クラスターで最も遅い操作をモニタリングするために役立ちます。詳細については、Amazon DocumentDB オペレーションのプロファイリングを参照してください。

12.1 秒単位の料金

Amazon DocumentDB インスタンスは、1 秒単位で課金されます。Amazon DocumentDB の 1 秒あたりの課金は、透明性のあるオンデマンド料金であり、事前のコミットメントを必要としないため、請求がさらに細かくなります。これにより、使用したキャパシティーに対してのみ料金をお支払いいただけます。詳細については、Amazon DocumentDB (MongoDB 互換) の料金をご覧ください。

まとめ

AWS は、フルマネージド型のデータベースサービスとして、可用性、信頼性、耐久性、スケーラビリティ、バックアップなどに関するお客様の課題を独自の方法を用いて解決するために Amazon DocumentDB を構築しました。この投稿では、Amazon DocumentDB で MongoDB ワークロードを構築およびスケーリングするのに役立つ、まだ認識されていないかもしれない 12 の Amazon DocumentDB 機能を紹介しました。

Amazon DocumentDB の使用を開始するには、Amazon DocumentDB (MongoDB 互換) の開始方法: パート 2 – AWS Cloud9 の使用を参照してください。Amazon DocumentDB への移行の詳細については、移行ガイド移行のライブデモをご覧ください。

 


著者について

 

Joseph Idziorek は、アマゾン ウェブ サービスのプリンシパルプロダクトマネージャーです。

 

 

 

 

Jeff Duffy は、アマゾン ウェブ サービスのシニア NoSQL スペシャリストソリューションアーキテクトです。