この記事のポイント
- グローバルに分散されたマルチモデルNoSQLデータベースで、高速な応答時間と99.999%の高可用性を実現
- JSON、XML、グラフ、バイナリデータなど多様なデータ形式を管理可能
- SQL、MongoDB、Cassandra、Gremlin、Tableなど複数のデータアクセス用APIをサポート
- 自動インデックス作成によるリアルタイムのフィルタリングが可能
- ユーザー生成コンテンツ、IoTデータ、ゲームアプリなど幅広いユースケースに対応
監修者プロフィール
坂本 将磨
Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。
デジタルトランスフォーメーションが加速する現代のビジネス環境において、スケーラブルで高性能なデータベースの重要性はますます高まっています。
Azure Cosmos DBは、このニーズに応えるMicrosoftの革新的なクラウドデータベースサービスです。
本記事では、Azure Cosmos DBの基本概念から高度な機能まで、包括的に解説します。グローバルに分散されたマルチモデルNoSQLデータベースとしての特徴、ミリ秒単位の応答時間、99.999%の高可用性など、Cosmos DBの主要な利点を詳しく紹介します。また、JSON、XML、グラフ、バイナリデータなど多様なデータ形式の管理方法、複数のデータアクセス用APIのサポート、自動インデックス作成によるリアルタイムフィルタリングなど、具体的な機能についても解説します。
さらに、ユーザー生成コンテンツの管理、IoTデータの処理、ゲームアプリでのリアルタイム更新など、実際のユースケースを示しながら、Cosmos DBの活用方法を提案します。
クラウドネイティブアプリケーションの開発や、グローバルに展開するサービスの構築を目指す開発者やアーキテクトにとって、本記事はAzure Cosmos DBの可能性と活用法を理解する上で重要な指針となるでしょう。
目次
マルチモデルデータベースでJSON、XML、グラフ、バイナリデータなどを管理[1]
複数のデータアクセス用APIをサポート(SQL、MongoDB、Cassandra、Gremlin、Table)[3][5]
自動インデックス作成によるリアルタイムのフィルタリング[3]
ユーザー生成コンテンツ、イベントログ、カタログデータ、ユーザー設定データなど[3]
IoTやモバイル端末から発生する大量データの追加・参照・削除[5]
ゲームアプリでのプレイヤープロファイル管理やリアルタイム更新[3]
プロビジョニング済みスループットとサーバーレスの2つの料金モード
Azure Portal、PowerShell、CLIからアカウントとデータベース、コンテナを作成
Azure Cosmos DBとは
Azure Cosmos DB(以下、Cosmos DBといいます。)は、Microsoftが提供するクラウドベースのデータベースサービスです。
インターネットを通じて、どこからでも非常に速く、そして信頼性の高い方法でデータにアクセスできるような仕組みになっています。
主な特徴:
- グローバルに分散されたマルチモデルNoSQLデータベース:
Cosmos DBは、データを世界中の複数の場所に分散して保存できるため、どこからでも同じようにデータにアクセスできます。
さらに、複数のデータ形式を一つのデータベースで管理できるという特徴もあります。
- 高速な応答時間
Cosmos DBは、ミリ秒単位の速さでデータにアクセスできるよう設計されており、どこからアクセスしても素早くデータを取得できます。
- 高可用性
Cosmos DBは、データに常にアクセスできるように99.999%の可用性(ほとんど停止しない状態)を保証しています。システムが常に稼働し続けるため、データにアクセスできないということがほぼありません。
Azure Cosmos DBの主な機能と特徴
では、Cosmos DBの主な機能と特徴について詳しくご紹介します。
マルチモデルデータベースでJSON、XML、グラフ、バイナリデータなどを管理[1]
Cosmos DBは、以下の2つの特徴により、異なるタイプのデータを扱うアプリケーションでも、統一されたデータ管理が可能です。
-
マルチモデルNoSQLデータベース:
マルチモデルNoSQLデータベースとは、異なるデータ形式(モデル)を一つのデータベースで扱えるNoSQLデータベースのことです。
通常のデータベースは特定のデータ形式(例えば、リレーショナルモデル)に特化していますが、Cosmos DBは異なる種類のデータ(JSONドキュメント、キー値、グラフ、列指向など)を一つの場所で管理することができます。
-
スキーマレス設計:
データ形式を事前に固定せず、後から変更や追加が簡単にできるため、開発がスムーズに進められます。
複数のデータアクセス用APIをサポート(SQL、MongoDB、Cassandra、Gremlin、Table)[3][5]
APIサポートについても、以下の2つの特徴があります。
-
既存のAPIをそのまま使える:
Cosmos DBは、複数のデータアクセスAPIでアクセス可能です。開発者は慣れたAPIを使ってデータにアクセスでき、既存のアプリケーションを簡単にCosmos DBに移行できます。- サポートしているAPI: NoSQL MongoDB Cassandra Gremlin Table PostgreSQL
- サポートしているAPI: NoSQL MongoDB Cassandra Gremlin Table PostgreSQL
-
複数のアプリケーションを統合管理できる:
異なるAPIを使用する複数のアプリケーションを、同じCosmos DBで統一的に管理できます。
自動インデックス作成によるリアルタイムのフィルタリング[3]
Cosmos DBでは、データが追加されると同時に自動的にインデックスが作られる仕組みが備わっています。この機能は、以下の3つの点で大変便利です。
- 手間がかからない: 通常、インデックス作成には設定が必要ですが、Cosmos DBでは自動で行われます。
- 高速な検索: どのフィールドでもインデックスを活用し、データを高速に検索・フィルタリングできます。
- リアルタイム分析: 大量のデータがあっても、自動インデックスにより、すぐにデータ分析が可能です。
Azure Cosmos DBの一般的なユースケース
では、Cosmos DBはどのような場面で使われるのでしょうか。一般的な活用シナリオをご覧ください。
ユーザー生成コンテンツ、イベントログ、カタログデータ、ユーザー設定データなど[3]
Cosmos DBは、データが頻繁に変わったり、多様な形式を取ったりするアプリケーションに最適なデータベースです。
例えば、SNSのユーザー生成コンテンツ、イベントログ、カタログデータ、ユーザー設定データなどがその例としてあげられるでしょう。
Cosmos DBを利用すると複雑なアプリケーションでも、スムーズにデータを管理し、迅速に対応することができます。
IoTやモバイル端末から発生する大量データの追加・参照・削除[5]
Cosmos DBは、大量のデータを高速かつ効率的に処理し、世界中のデバイスからのデータアクセスにも対応できます。
そのため、IoTデバイスやモバイルアプリケーションにとっても理想的なデータベースと言えます。
ゲームアプリでのプレイヤープロファイル管理やリアルタイム更新[3]
Cosmos DBは、オンラインゲームアプリケーションでプレイヤーのデータを管理し、ゲームの進行状況をリアルタイムで更新するのにも最適です。
例えば、プレイヤーがゲーム内でアイテムを獲得したり、スコアが上がったりした瞬間に、その情報をすぐにデータベースに保存し、ゲーム画面に反映させることができます。
Azure Cosmos DBの料金体系
次にCosmos DBの料金についてご紹介します。Cosmos DBは、コンピューティング、ストレージ、帯域幅の 3 種類の使用量に対して課金されます。
プロビジョニング済みスループットとサーバーレスの2つの料金モード
データ処理の速度(スループット)や仮想コアに基づいて計算されます。
スループットに応じて、以下のプランが選択できます。
-
標準プロビジョニングスループット:
事前に設定したデータ処理の速度(スループット)の範囲内で、データベースが作動する仕組みです。 -
自動スケーリングスループット:
データ処理の量が変動する場合に、自動的にデータ処理能力(スループット)を調整してくれるオプションです。使った分だけ料金が発生します。 -
サーバーレス:
実際にデータを処理した分だけ課金される仕組みで、使用頻度が少ない場合に便利です。
リージョン、ストレージ、スループットに基づく従量課金制
2 ストレージ: データを保存する容量に対して、使った分だけ料金がかかります。
3 帯域幅: データをインターネットや他の地域に送信する際のデータ量に基づいて料金が発生します。
これらの要素を組み合わせて、実際の使用量に応じた料金が決まります。
詳細な料金計算は公式ページをご覧ください。
1年または3年の予約容量でコスト削減が可能
Cosmos DBの自動スケーリングプロビジョニング済みスループットの予約をすると、1年または3年の期間で、最大30%割引になります。
100 RU/秒からスループットを予約でき、そのスループットを複数のリージョンやAPIで共有可能です。
Azure Cosmos DBの始め方
では、実際にAzure Cosmos DBの利用を始めてみましょう。
Azure Portal、PowerShell、CLIからアカウントとデータベース、コンテナを作成
では、まずAzure Cosmos DBのアカウントを以下作成していきましょう。
- Cosmos DBアカウントの作成
前提準備として、Azureアカウントの作成を行ってください。
アカウントは、Azure Portal・PowerShell・CLIから作成できますが、ここでは主にAzure Portalからの作成方法についてご紹介します。
PowerShell、CLIでコマンドを使用して、スクリプトでアカウントを作成するときはこちらをご参照ください。
- Azureポータルにログインし、赤枠部分をクリック。
Azureポータル画面
-
その後、「リソースの作成」をクリックします。
リソースの作成
-
①検索バーに「Cosmos DB」と入力し、②表示された候補から選択します。
Cosmos DBの選択
- [API オプションの選択] ページで、APIを選択します。ここでは[コア(SQL) - 推奨] セクション内の [作成] オプションをクリックします。SQLは、Azure Cosmos DBのデフォルトで、最も一般的なAPIです。
他にもMongoDB、Gremlin、Table、Cassandra 、PostgreSQLの API がありますので、自分の環境に合わせて選択ができます。
APIの選択
- [Azure Cosmos DB アカウントの作成] ページで、次の情報を入力し,上記の入力が完了したら、[レビュー+作成] を選択します。
入力画面
設定 | 値 | 説明 |
---|---|---|
サブスクリプション | サブスクリプション名 | この Azure Cosmos DB アカウントに使う Azure サブスクリプションを選びます。 |
リソース グループ | リソース グループ名 | リソース グループを選択するか、[新規作成] を選択し、新しいリソース グループの一意の名前を入力します。 |
アカウント名 | 一意の名前 | グローバルに一意である必要があります。名前はFQDNの一部として使用され、3~44文字の英小文字、数字、ハイフン(-)が使えます。 |
場所 | ユーザーに最も近いリージョン | データへのアクセスが高速になるよう、ユーザーに最も近い場所を選択します。 |
容量モード | プロビジョニング スループットまたはサーバーレス | プロビジョニング スループットモードかサーバーレスモードを選択します。 |
Apply Azure Cosmos DB free tier discount | [適用] または [適用しない] | Free レベルを適用すると、最初の1000 RU/sと25 GBのストレージが無料で利用できます。 |
(参考:Microsoft)
- 指定した設定を確認したら[作成] を選択します。
データベース・コンテナの作成
Azure portal のデータ エクスプローラーを使用してデータベースとコンテナーを作成できます。
- ご使用の Azure Cosmos DB アカウント ページの左側のナビゲーションで [データ エクスプローラー] を選択します。
データエクスプローラー画面の外観はこのようになっています。
データエクスプローラー外観
① ナビゲーションパネル
左側には、Azure Cosmos DBアカウントの管理に関する項目があります。
② データ エクスプローラーのメインビュー
右側の大きな領域はデータ エクスプローラーのメインビューです。
③ アクションボタン
画面中央上部には、+ New Containerというボタンがあります。これをクリックすることで、新しいコンテナを追加できます。
-
③の[+ New Container]ボタンをクリックします。
-
右側に[New Container]ウィンドウが開きます。
New Containerウインドウ
以下の項目を入力してください。
- Database id(データベース ID)
- Database throughput (autoscale)(データベースのスループット)
- Database Max RU/s(データベースの最大 RU/秒)
- Container id(コンテナー ID)
- Indexing(インデックス化)
- Partition key(パーティションキー)
- 下の[OK] を選択します。
参考:Microsoft
ローカル開発用のAzure Cosmos DB Emulatorを利用可能[5][6]
Azure Cosmos DB Emulatorは、ローカル環境でAzure Cosmos DBを模擬的に動作させるためのツールです。これを利用すると、インターネット接続がなくても、ローカルPCでCosmos DBの機能を試したり、アプリケーションをテストしたりすることができます。
EmulatorはWindowsおよびLinuxで動作し、クラウド上のCosmos DBに移行する前にアプリケーションの開発やデバッグを行うのに役立ちます。
詳しい使用方法は公式サイトをご確認ください。
無料試用版やFree Tierで機能を試せる[4][7]
Azure Cosmos DBには、無料試用版やFree Tier(無料レベル)が用意されており、これを使って機能を試すこともできます。
Azure Cosmos DBには、以下の無料オプションが用意されています。
- 無料試用版
30日間、限られたリソースでAzure Cosmos DBを無料で試用でき、アプリケーションのテストに利用できます。
- Freeレベル
永続的に無料で利用でき、毎月1,000 RU/秒のスループットと25GBのストレージが提供されます。
最新の情報についてはマイクロソフトの公式サイトをご確認ください。
参考: 無料試用版 、 Freeレベル
まとめ
本記事では、Azure Cosmos DBの主要な機能や利点についてご紹介しました。クラウド環境でのアプリケーション開発がますます重要になる中で、Cosmos DBは大変役立つものとなるでしょう。ぜひCosmos DBを使って、高速かつ柔軟に拡張できるデータベースのメリットを体験してみてください!