こんにちは、最近6周年でアツいゲームに再点火した石川です。
今回は先日 Free レベルが公開され、無料で利用できるようになったAzure Cosmos DB を触ってみようと思います。(無料なので)
サブスクリプションなどは適宜準備してください。
もくじ
- Azure Cosmos DBとは
- 作ってみる
- 触ってみる
1. Azure Cosmos DBとは
あらゆるスケールに対応するグローバル分散型マルチモデル データベース サービス
Azure Cosmos DB ( https://azure.microsoft.com/ja-jp/services/cosmos-db/ ) より
らしいです。
抽象的すぎるのでもう少し具体的に書きます。
- あらゆるデータベースモデルに対応
- SQL
- Cassandra
- MongoDB
- Gremlin
- テーブル
いろいろなデータベースモデルでデータを扱うことができます。データベースといえばおなじみのSQLからNoSQLのMongoDBなどなど、用途に合わせて選択することが可能です。
- 優れた応答性と常時接続
- 応答性
- 世界を跨いで数ミリ秒の応答性を確保
- 読み書き両方に対し99.999%の高可用性
- 常時接続
- Azure インフラストラクチャと緊密な統合
- 災害に対するフェールオーバー
- 応答性
5Gも見据えられている中、応答速度は速いに越したことはありません。また、世界規模で展開するサービスの場合にはフェールオーバー等必須となる機能が標準で用意されています。
などなど挙げるといろいろあるんですが詳しくは公式のドキュメントをご確認ください。
2. 作ってみる
何はともあれ、まずはリソースの作成をしなければ話は始まりません。
Cosmos DBを検索して作成していきましょう。

発見。
早速、作成していきます。

基本的に書いてあることを埋めていくとOKですが、Free レベルで使いたい場合は赤枠のトグルスイッチを Apply
へ変更しておきましょう。今回データベースモデルはSQLを選択しました。
これをやらないとおそらく普通に課金されます。
あとは作成をするだけです。

完了したらリソースへ移動しましょう。

コードを書いてプログラムからデータを操作してもいいですがちょっと面倒そうなのでAzure ポータル上から行えるデータエクスプローラーを使ってみようと思います。
3. 触ってみる

ということでデータエクスプローラーへ移動してきました。
まずはデータ置き場としてContainerを作成してあげる必要があるようです。
早速作ってみます。

なんか色々出てますが読んで枠を埋めていきましょう。
- Database id
- データベースのID
- Throughput
- データベースのスループット
- RUはCosmos DB上での単位で、CPU, IOPS, メモリを統合的に考えたもの
- 400RUまで無料なので400で作ってみます
- Container id
- コンテナのID
- Partition key
- パーティションキー
- 複数サーバー間で自動的にパーティション分割するために使われる値
適当に値を入れて作ったものがこちら。

適当にアイテムを作ってみます。
{
"id": "",
"Person": {
"Name": "",
"Age": "",
"Address": {
"Country": "",
"Prefecture": ""
}
}
}
こんな感じのデータを数個放り込んでみます。

放り込んでみた結果がこちら。
これらのデータをデータベースを操作する感覚で操作できるのがCosmos DBの特徴のようです。
とりあえずPerson.Address.CountryがJapanの人を絞り込んでみます。

これじゃ絞り込めてるかわからないのでPerson.Address.PrefectureがTokyoのデータを検索してみます。

ばっちり検索できてますね。
触ってみた感想としてはデータベースというよりデータストアって感じがしました。SQLデータベースのような感覚で使うとなんか違うなー。ってなりますね。
おわりに
Cosmos DBを触ったことがなかったのですが無料枠が提供開始されたので気軽に触って試してみることができました。この記事では「触り」程度ですがこの機会にCosmos DBを触ってみてはいかがでしょうか!
それでは
おまけ

設定の中に データをグローバルにレプリケートする という項目がありここから全世界へデータの冗長化構成を行えるようになっています。
デフォルトの設定では、書き込みはメインのリージョンからのようでレプリケート先のリージョンでは読み取りのみ行えるようです。
リージョンの構成 の部分のトグルスイッチを切り替えると書き込みも行えそうですね。

地図から選べるのおもしろいですね。
ちょっとしたおまけでした。