2020年から始める Azure Cosmos DB - 環境構築

![th.jpeg](https://www.bing.com/th?id=OIP.yovZnkelJ4W3sSoRk-oQtwHaD4&pid=Api&rs=1)

# この記事について

本記事は、2020年3月6日 \(米国時間\) にて、`Azure Cosmos DB` に新しく **Free Tier \(無償利用枠\)** が登場したことに伴い、改めて Azure Cosmos DB を色々と触っていく試みの初回です。
今回は、Free Tier にて Azure Cosmos DB の環境を新しく作成し、Azure Cosmos DB を試しに操作するまでを行います。

- [Build apps for free with Azure Cosmos DB Free Tier][CosmosDB-DevBlogs]

[CosmosDB-DevBlogs]:https://devblogs.microsoft.com/cosmosdb/build-apps-for-free-with-azure-cosmos-db-free-tier/

なんと、毎月 400 RU/秒、容量が5GB まで無料とのこと。

>With Azure Cosmos DB Free Tier enabled, you’ll get the first 400 RU/s throughput and 5 GB storage in your account for free each month, for the lifetime of the account.

推定 $24 USD / 月 \(日本円で約 2,500 円程度\) とありますが、400 RU/秒 や 容量が 5 GB を超過した分から、価格表に従い課金されるとのことです。

>Q: How does the Free Tier discount show up on my bill?
>A: In Free Tier accounts, you’ll get the first 400 RU/s and 5 GB of storage in your account for free. Any RU/s and storage beyond 400 RU/s and 5 GB will be billed at the regular pricing rates per the pricing page. On the bill, you will not see a charge or line item for the free 400 Ru/s and 5 GB, only the RU/s and storage beyond what is covered by free tier.

個人的な開発や検証で Azure Cosmos DB を無料で維持できる環境が作れることは、非常に嬉しい限りです。


# 対象読者

- Azure Cosmos DB について学習したい方
- Azure Cosmos DB を使ってみたい方


# Azure Cosmos DB とは

Azure Cosmos DB とは、Microsoft 社によってグローバルに配布されるマルチモデル データベース サービスで、いわゆる NoSQL を扱うサービスです。
従来の \(と言っても Azure Cosmos DB が発表されたのは 2017 年なのでもうかなり昔な感じがしますが\) Document DB を内包しており、SQL や MongoDB、Cassandra や Tables、Gremlin など、ユーザーが好みの API を使用し、高速にデータにアクセスすることができます。

![azure-cosmos-db.png](https://docs.microsoft.com/ja-jp/azure/cosmos-db/media/introduction/azure-cosmos-db.png)

詳しくは、[Microsoft Docs][RefLink1] の情報を参照してください。


# 環境作成

## Azure サブスクリプションの作成

Azure アカウントを持っていない方は、新しく作成してください。

- [Microsoft Azure Portal][AzurePortal]


[AzurePortal]:https://azure.microsoft.com/ja-jp/features/azure-portal/


## Azure Cosmos DB の新規作成

\[ホーム\] 画面より、\[リソースの作成\] を選択します。
\[Azure Marketplace\] より \[データベース\] を選択し、\[Azure Cosmos DB\] を選択します。

<img width="300" alt="screen1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/40046124-cde2-7a8d-b6a5-4a1c1fed6ec0.png">

\[Azure Cosmos DB アカウントの作成\] 画面が表示されるので、以下の情報を入力し、\[次: ネットワーク\] を選択します。

- **サブスクリプション**: *<任意のサブスクリプションを選択>*
- **リソースグループ**: *<任意のリソースグループを選択>*
- **アカウント名**: *<自分の Azure Cosmos アカウントを識別するための名前を入力>*
- **API**: コア (SQL)
- **Notebooks (Preview)**: Off
- **Apply Free Tier Discount**: Apply
- **場所**: *<任意のリージョンを選択>*
- **Account Type**: Non-Production
- **geo 冗長性**: 無効
- **マルチリージョン書き込み**: 無効

<img width="979" alt="screen2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/383eaa32-3d0d-123d-6b0d-6d4067427c70.png">


※アカウント名は、`指定した名前に documents.azure.com が付加されて URI が作成される`ため、**グローバルで一意の名前を使用**する必要があります。
※アカウント名に含めることができるのは、英小文字、数字、ハイフン (-) のみで、3 〜 31 文字である必要があります。

\[Network connectiivity\] 画面が表示されるので、以下の情報を入力し、\[確認と作成\]を選択します。。

- **Connectivity method**: All network

<img width="979" alt="screen3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/1532e5a5-d7e1-0f83-0ddb-303b5b25b900.png">

※タグについては、必要に応じて設定してください。

確認画面が表示されたら、内容を確認して、\[作成\]を選択します。
デプロイが完了するまで、待ちます。

![screen4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/0c80fe76-cf40-a3f9-745f-fb837383c1bc.png)



# コンテナ作成

Azure Cosmos DB のデプロイが完了したら、最初にコンテナを作成します。
\[Create 'Items' container\] を選択します。
※もしくは、後述の\[データ エクスプローラー\]を使って、任意のコンテナを作っても構いません。

<img width="1142" alt="screen5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/0ac2312c-875f-d2ec-39af-7d5d67532a7a.png">

\[データ エクスプローラー\] を選択します。

<img width="265" alt="screen6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/5ba99b85-9a65-0f0c-d7a1-a02e7a644d4a.png">

\[データ エクスプローラー\] 画面にて、先ほど作成した \[Items\] コンテナーが存在することを確認できます。

<img width="1173" alt="screen7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/f6d916fa-9ed7-5416-d455-dbbd37353e02.png">

# データ作成

試しにデータを作成してみます。
画面上部にある \[New Item\] を選択します。

<img width="109" alt="screen8.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/5fd0c434-384f-cdad-d840-43a697a60fa3.png">

新しく登録するデータがデフォルトで表示されることを確認します。
id を任意の値に変更し、\[Save\] を選択してデータを登録します。

<img width="652" alt="screen9.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/0d5ed10d-f2fa-45fc-a4e6-c07a64d8cbf8.png">

登録すると、システム側で他の値が付与されたものが、レコードとして正常に追加されたことを確認できます。

<img width="915" alt="screen10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/158e8716-aa13-91e4-4e31-4c75215d96c8.png">


# クエリ実行

新しい画面でクエリを実行し、先ほど登録したデータを参照します。
画面上部にある \[New SQL Query\] を選択します。

<img width="274" alt="screen11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/353b918e-fbec-fcba-1aea-2b740e737d21.png">

\[Query 1\] タブが開き、SQL の入力画面が表示されます。
以下のクエリを入力し、実行してみると、Itemsコンテナ内のデータを取得できることを確認できます。

```sql:クエリ
SELECT * FROM Items
```

<img width="917" alt="screen13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/a95b213b-4eb7-b6ea-cbaf-6ac8a29832b9.png">


# 関連リンク

- [2020年から始めるAzure Cosmos DB - Node.js で CRUD アプリを作る][NextLink1]


[NextLink1]:https://qiita.com/ymasaoka/items/0b0b726354c3cfd38021


# 参考情報

## Microsoft Docs

- [Azure Cosmos DB のドキュメント][RefLink1]

## Microsoft DevBlogs - Cosmos DB 

- [Build apps for free with Azure Cosmos DB Free Tier][CosmosDB-DevBlogs]


[RefLink1]:https://docs.microsoft.com/ja-jp/azure/cosmos-db/