対象読者
- Microsoft Azureや他のクラウドサービスを利用している方
- NoSQLデータベースを利用している方
- DocumentDBの仕組みを理解したい方
検証環境
本稿では、以下の環境で動作を確認しています。
- macOS Sierra 10.12.4
- Firefox 52.0.2
- Google Chrome 58
注意
本稿では、Microsoft Azureを利用するためのアカウント登録やサブスクリプションの追加等に関しては割愛します。
Azureのアカウントを持っていない方は、 無料のAzureアカウントを作成すると、Azureを30日間無料で試すことができます。(2017年6月現在)
また、DocumentDBの利用に際しては、利用量に応じた課金が発生するのでご注意ください。開発途中や検証目的等でコストをかけたくない場合は、ローカルのWindowsマシンで動作するDocumentDB Emulatorが提供されているので、こちらをお試しください。
DocumentDBとは
DocumentDBとはMicrosoft AzureよりPaaSとして提供されている、ドキュメント指向型のNoSQLデータベースのサービスです。
ドキュメント指向型データベースは、以下の特徴を持っています。
- 事前のスキーマ定義の必要がなく、柔軟にデータを保存できる
- データ構造が一定でないシステムやユーザーからのデータストアとして適している
- データ間の関連がないため水平分散(スケールアウト)での性能向上が見込める
なお、2017年5月からはAzureのNoSQLデータベースサービスの名称が「Cosmos DB」に変更となりました。DocumentDBはCosmos DBのAPIの内の1つへと位置づけが変わっています。詳しくは以下のコラムをご参照ください。
Azure Cosmos DBの登場とDocumentDBの位置づけについて
2017年5月に開催されたMicrosoft Build 2017で、「Azure Cosmos DB」と呼ばれるNoSQLデータベースサービスが新たに発表されました。
Cosmos DBでは、キーバリュー型、ドキュメント型、グラフ型、カラムファミリー型のデータモデルをサポートしており、DocumentDBはこのCosmos DBにおけるドキュメント指向型のデータモデルをサポートするAPIの1つとして位置づけが変化しました。
そのため、これまでAzureにおけるNoSQLデータベースは「DocumentDB」というネーミングで認知されていましたが、これからは「Cosmos DB」が一般的なサービス名となります。(既に公式ドキュメントやAzureポータルではCosmos DBの名が使われています)
ただし、DocumentDBの基本的な概念や機能が変わったわけではないので、既にDocumentDBを利用されている方でも、これまで通りDocumentDBを利用できます。
主な特徴
DocumentDBには以下の特徴があります。
- スループットとストレージ容量を簡単にスケールできる
- 同一リージョン内での自動レプリケーションと、複数リージョンへのレプリケーションが可能
- 読み取り10ms以内、書き込み15ms以内の待機時間をSLAとして保証
- SQL(ライク)なクエリによるデータアクセスが可能
- JSONドキュメントの全てのプロパティに対しインデックスを自動で作成
- 一貫性を5つのレベルから選択可能
SQLのSELECT文を使ってデータの検索ができる点、一貫性を選択してデータの整合性と性能のバランスを変更できる点など、リレーショナルデータベースユーザーにとってもなじみ深い機能がサポートされている点に注目です。
DocumentDBの利用局面
一般的なドキュメント指向型のNoSQLデータベースと同じく、DocumentDBもWebやモバイルアプリで生成されるチャット、ブログ投稿、コメント、といったユーザー操作データやコンテンツの保存に向いています。
DocumentDBは、スキーマレスなDBである特徴に加えて、JSONデータの全てのプロパティにインデックスが付与できることや、SQLを使ったデータアクセスができるため、より柔軟にデータの操作ができるようになっています。
その他にも、ソーシャルゲームの統計やIoTセンサーデータ・ログデータの取り込みと分析などの分野での利用事例もあり、大量の読み込みと書き込み要件があるケースにおいて、十分なスループットを担保できるデータストアとしての利用が進んでいます。
サポートする言語や環境
DocumentDBはREST APIからアクセスできるため、HTTP/HTTPSコールができる任意の言語から利用できます。
また、以下の言語・プラットフォームについては、専用のSDKが提供されており、例外の管理や自動リトライなどの機能が組み込まれています。
- .NET/.NET Core
- JavaScript(Node.js)
- Java
- Python