Microsoft AzureのNoSQLデータベース「Cosmos DB」における設計方法を知る
Microsoft AzureのNoSQLデータベース「Cosmos DB」を使ってみよう 第2回
本連載では、Microsoft Azureのサービスラインナップの1つで、NoSQLデータベースのPaaSであるCosmos DBについて全4回(概要/設計/実装/運用)に分けて説明します。2回目の今回は、設計編としてCosmos DBを使い始める際に考慮すべきポイントについて説明します。なお、第1回ではサービスの旧名称である「DocumentDB」を本文中に使用していましたが、今回からは「Cosmos DB」に名称を統一しています。
対象読者
- Microsoft Azureや他のクラウドサービスを利用している方
- NoSQLデータベースを利用している方
- Cosmos DBの仕組みを理解したい方
検証環境
本稿では、以下の環境で動作を確認しています。
- macOS Sierra 10.12.4
- Firefox 53.0.3
- Google Chrome 58
Cosmos DBにおける設計のポイント
Cosmos DBをデータベースとして利用するための設計ポイントを、以下の3項目に分けて説明していきます。
- ドキュメントのデータモデリング
- ドキュメント指向型データベースにおける一般的なモデリングに、Cosmos DBの特性を加味して検討します。
- データサイズとRUの見積もり
- 課金に影響するこれら2つの要素に対するアプローチを紹介します。
- インデックス作成ポリシーの検討
- Cosmos DBにおけるインデックス作成について説明し、効率的なインデックスの作成を目指します。
Cosmos DBの制約
設計のポイントを説明する前に、設計を行う上で注意すべきCosmos DBのリソースにおける制限・制約について説明します。
Cosmos DBのリソースの上限は、選択したプランによってそれぞれ異なります。
表1は、各プランでのリソースの制限・制約をまとめたものです。
| リソース | 単一コンテナ(パーティション分割なし) | パーティション分割コンテナ |
|---|---|---|
| コレクションに割り当てられるストレージサイズ | 10GB固定 | 10TB(※) |
| 1ドキュメントのサイズ | 2MB | 2MB |
| ページあたりの応答サイズ | 4MB | 4MB |
| コレクションのスループット | 400~10,000RU/秒 | 2,500~100,000RU/秒(※) |
表中のパーティション分割とは、Cosmos DBがスケーラビリティを向上させるために、ドキュメントを物理リソース上に自動で分散配置する機能です。
パーティション分割コンテナでは、コレクションの作成時にパーティション分割するためのキーとなるJSONプロパティを指定する必要があります。このキーには、均等に分散している値を持つJSONプロパティを選ぶことが推奨されています。
一般的には、ユーザーIDなどの必ずユニークとなる値を設定します。
- 修正履歴
-
- 2017/08/20 17:13 「表1 プランごとのリソースの制限・制約」の「1ドキュメントのサイズ」を512KBから2MBに、「ページあたりの応答サイズ」を1MBから4MBに修正しました。お詫びして訂正いたします。
この記事は参考になりましたか?
- 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編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
