Microsoft AzureのNoSQLデータベース「Cosmos DB(旧:DocumentDB)」の全体像を知る
Microsoft AzureのNoSQLデータベース「Cosmos DB」を使ってみよう 第1回
Microsoft Azureのサービスラインナップの1つで、NoSQLデータベースのPaaSであるDocumentDBについて紹介していきます。本連載では、DocumentDBを使い始める方を対象に、全4回(概要/設計/実装/運用)に分けて説明します。1回目の今回は、概要編としてDocumentDBの特徴とデータ管理方法、課金の考え方について主に取り上げます。
対象読者
- 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
この記事は参考になりましたか?
- Microsoft AzureのNoSQLデータベース「Cosmos DB」を使ってみよう連載記事一覧
- この記事の著者
-
WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
