みなさん、こんばんは。小寺です。今日はDocumentDBとMongoDBの特徴についてお伝えいたします。

DocumentDBとは

DocumentDBとは、スキーマレスで、JSON形式のデータをそのまま格納できる MongoDBのワークロードをサポートする完全マネージド型ドキュメントデータベースです。DocumentDBでは、JSONデータの保存、クエリ、インデックス作成を簡単に行うことが出来ます。
また、非リレーショナルデータベースでもあります。MongoDBの大規模な運用に必要なパフォーマンス、スケーラビリティ、可用性を提供します。
JSON-likeなデータ群をマネージドする用途に特化したデータストアとして捉えてもらえると良いです。

ドキュメントモデルは、カタログ、ユーザープロファイル、コンテンツ管理システムなど、各ドキュメント固有のものであり、時間の経過とともに進化するユースケースでうまく機能します。
ドキュメントデータベースを使用すると、柔軟にインデックスが作成でき、強力なアドホッククエリの利用、およびドキュメントのコレクションに対する分析が可能になります。
また、DocumentDBでは各リソースに対するRESTfulなアクセスをサポートしています。URIで操作対象のリソース、HTTPメソッドで操作種別を指定し、事前に取得した認証トークンや各種属性情報をHTTPヘッダに付加した上でリクエストを行います。

DocumentDBのメリット

・ストレージの自動拡張
Amazon DocumentDB は、クラスターストレージを容量が増えくると自動的にストレージボリュームを拡張します。
ストレージボリュームは 10 GB 単位で最大 2 PiB まで拡張されます。

・MongoDBとの互換性
Amazon DocumentDB は、MongoDB 3.6 および 4.0 の API と互換性を持っています。アプリケーションの更新等容易に行うことができます。

・大規模環境での優れたパフォーマンス
現在利用可能なMongoDBマネージドサービスの2倍のスループットで、
1秒間100万リクエスト実行可、ストレージとコンピュートを分離し高いパフォーマンスを実現します。
ストレージレイヤでI/Oを最適化し、数分でスケールアウト&スケールアップができます。

・高可用性
ミッションクリティカルなワークロードを大規模に運用する場合に効果的です。

・データリカバリが用意
ポイントインタイムリカバリ(特定の時点までのデータ変更のリカバリ)を実行できます

・レプリケート
リードレプリカの昇格による自動フェイルオーバ
S3へのストリームバックアップが取得できます。

・エンタープライズに対応
PCI、ISO、SOC2、HIPAAなど認証を受けており、SLAの提供もあります。

MongoDBとは

MongoDBは、NoSQLデータベース・ドキュメント指向型データベースの一つで、RDBMSでないデータベースというカテゴリに分類されます。ドキュメント指向データベースとは、ドキュメントの形式でデータを管理するデータベースを指します。
NoSQLは、データをより高速に処理できるほか非構造化・半構造感のデータも処理できます。

RDMSとの差異という点での注意点としては、MongoDBではトランザクションがありません。つまり、複数のドキュメントに対して一貫性をもって更新を行うことができません。
そのため、整合性を保ったまま複数のデータを同時に更新する処理がある場合は、MongoDBを利用しない方が良い可能性が高いです。バージョン4.0からマルチドキュメントトランザクションが実装されるようになりましたが、一貫性をもった更新が必要な場合に絞っての利用が推奨されています。

MongoDBのメリット

・処理速度が速い
インメモリで動作するデータベースなので、データ量が増えても高速に処理を行うことが出来る

・負荷分散や冗長化を実現する仕組みがある
シャーディングと呼ばれる機能により、データを複数のサーバに分割して保存・処理できる
レプリカセットと呼ばれる機能により、最小3台以上のサーバで同じデータを保存・管理することがおすすめです。
MongoDB のシャーディングでは、1つのシャード毎にレプリカセットを組む必要があります。

・外部システムとの連携が簡単
JSON(JavaScript Object Notation)に似た形式でデータを保存するため、外部システムとの連携が簡単になっている

・複雑な形式のデータを扱える
JSONに似た形式でデータを扱うので、複雑な形式のデータも扱いやすい
ドキュメント形式なので、柔軟にデータの形式を変えることもできる

DocumentDBとMongoDBの違い

・APIの互換性
DocumentDBはMongoDBと互換性を持つようにAWSが開発したマネージド、ドキュメント指向データベースです。

・ストレージエンジンとクラスタアーキテクチャ
DocumentDBは独自のストレージエンジンを採用、そのストレージエンジンに支えられたクラスタアーキテクチャです。
MongoDBはWiredTigerストレージエンジンが一般的、シャーディング・レプリカセットといった機能を持っています。

・バックアップ
DocumentDBは、RDSと同様に簡単な設定のみで最大35日分のバックアップが保存され、ポイントインタイムリカバリもサポートされます。
MongoDBは、CloudManger/OpsManagerによるバックアップ、定期的なデータダンプの取得、インフラの機能を利用したバックアップが基本です。

そもそもなぜ、なぜドキュメント指向DBが選ばれるの?

ドキュメント指向DBを使うことで表現力の高いJSONを使用することができます。
• 「アプリケーションをうまく動かすこと」を実現し、アプリケーションで使用しやすい形にデータを格納することができます
• 豊富なアドホッククエリ、集計クエリ、 柔軟なインデックス などによる広範なワークロードへの対応ができます。
・開発スピードをアップさせることができます。イテレーション (Iteration) を早く回すことができます。

まとめ

2つのDBの1番大きな違いは、ストレージエンジンとクラスタアーキテクチャの部分であると思います。バックアップの仕組みも異なり、設計や運用に与える影響が大きいと感じました。2つのDBは互換性があるので、上手に利用して価値を最大化していくことが大事であると思います。