BLOGAzureブログ

リレーショナル以外のデータベースっていまいちピンとこない、よし体験してみよう

2025.01.06

クラウドサーバーご検討中の方必見 お役立ち資料一覧

皆さまこんにちは、SB C&Sの八釼(やつるぎ)です。
突然ですが、「データベース」と聞いてどのようなイメージをしますか?あくまで一般的にはMicrosoft SQL ServerデータベースやOracle Database、PostgreSQLといったリレーショナルデータベース(管理システム)の名前が思い浮かび、表形式の「テーブル」をパッと想像するのではないでしょうか?

ですが、もちろんデータベースは必ずしもリレーショナルとは限りません。データはテーブル以外に格納される場合もあるのです。
ただ・・・リレーショナル以外のデータベースってその方面のエンジニアでない限り正直ピンとこないですよね。

ということで、今回は世間一般では認知の低いデータベースの世界の一端をAzureを使って覗いてみましょう。イメージが湧かないものを理解するにはまずは実際に見て体験してみるのが最も効果的です。Azure Cosmos DBを触ってみましょう!

Azure Cosmos DBとは

詳細については公式ドキュメントをご確認いただければと思いますが、細かなことはさておきざっくりNoSQLデータベース(リレーショナル以外のデータベース)のサービスと考えていただいて差し支えありません。

若干ややこしいのはCosmos DBがさまざまなデータベースを提供している、Azureでよくあるサービス群であるということです。用途の方法性は異なりますが、Azure Storageみたいな感じです。BLOBやファイル、キューなど色々ありますよね。

Cosmos DBも似ています。使用するための最上位のリソースであるAzure Cosmos DB アカウントをまず最初に作成します。Azure Storageの場合にはストレージアカウントですね。そしてデータベースの種類も多くあります。ざっくり「キーバリューストア」、「ドキュメントデータベース」、「グラフデータベース」 といった感じです。

全部は大変ですしこの記事では、ドキュメントデータベースについて体験してみようと思います。

どのようなアプリケーションに対して使うのか?

以下の公式ドキュメントには、「高速な応答時間を必要とし、迅速かつグローバルにスケーリングする必要があるサーバーレスアプリケーションに最適」と記載されています。まあグローバルで展開したり、半/非構造化データ(画像や動画コンテンツ)を発信するWebサービスなどに適していると考えればよいでしょう。

高速がキーワードですが、読み取りの整合性については調節できかなり厳密なレベルにも可能です。ちなみに、詳細については割愛しますが次の5つの整合性レベル中から最適なものを一つ必ず選択する必要があります。整合性とレイテンシのトレードオフを検討し要件に合うものを選びましょう。

  • ・強固 (Storong)
  • ・有界整合性制約 (Bounded Staleness)
  • ・セッション (Session)
  • ・一貫性のあるプレフィックス (Consistent Prefix)
  • ・最終的 (Eventual)

ConsistencyLevelsCosmosDB_01.gif

ただ、もし厳密な一貫性を最優先したいならRDBMSには敵いません。

クイックスタートの実施

今回は以下のクイックスタートを行ってみます。
クイックスタート: Visual Studio Code を使用して Azure Functions を Azure Cosmos DB に接続する

ちなみに、過去に掲載したこちら(Azure Functionsでなんちゃってアプリケーション開発体験をしてみよう)の記事で実施した内容の続きとしてできるので、非常に効率的です。

Cosmos DB環境の準備

前述の通りまずはCosmos DBアカウントを作成し、続いてデータベースとコンテナーを作成します。

AzureResources.png

その後、Cosmos DBアカウントへの接続文字列をアプリの設定に追加することで接続できるようにします。出力バインドを使用するのでその辺の処理も必要になりますが、細かなことは気にせずそのまま進めましょう。

関数アプリの修正

クイックスタートの指示の通り以下のコードを追記しましょう。もしくはfunction_app.pyの中身を丸っとコピペで書き換えてしまっても問題ありません。ただ、個人的にはアプリケーション開発っぽい雰囲気を味わっていただきたいので前者をおすすめします。

                        
                            @app.cosmos_db_output(arg_name="outputDocument", database_name="my-database", container_name="my-container", connection="CosmosDbConnectionSetting")
                        
                    

関数の実行

まずはローカルで実行してみます。

vscode_notification.png

ちゃんと動作して新しく

{ "id": "Azure" }
となっているJSONドキュメントが作成されたことも確認できました。

data-explorer2.png

ソースコードを修正したので、アプリも更新します(Azureに更新版をデプロイ)。

そして今度はWebブラウザで入力してみると

Hello-SBCS.png

こちらでも問題なく入力した文字列が含まれたJSONドキュメントが新しくアイテムとして作成されていました。

edited_AP-Hello-SBCS.png

最後に

本記事で取り上げたのはドキュメントDBでしたが、何となくはイメージできたのではないでしょうか?またソースコード修正と再デプロイもしたので、アプリケーション開発についても若干は理解が深まったのではないでしょうか。
グラフDBなど他のデータベースについてもご興味がありましたらぜひ触ってみてください。あと、図らずともGitのリポジトリになっていますので、こちらについても使用したことがなく興味・余力があれば体験してみてはいかがでしょうか?

Azure Cosmos DBの活用については色々とお困りごとが出てくるかもしれませんが、その際にはぜひとも法人でのAzure導入前の相談窓口であるAzure相談センターまでお気軽にお問い合わせいただけますと幸いです。弊社では、ユーザー様のご状況やご要望を踏まえて最適な形でのAzureの導入のご支援を提供しており、Azure に精通したスタッフが丁寧にご回答させていただきます。

  • 【 著者紹介 】
    八釼 友輔 - Azure エヴァンジェリスト
    SB C&S株式会社 ICT事業本部 クラウド・ソフトウェア推進本部
    クラウド・ソフトウェア戦略企画部 1課
yyatsurugi-image-v3.png

Azureの導入や運用に関するお悩みは SoftBankグループのSB C&Sにご相談ください

SoftBankグループのSB C&Sは、さまざまな分野のエキスパート企業との協力なパートナーシップによって、多岐にわたるAzure関連ソリューションをご提供しています。

「Azureのサービスを提供している企業が多すぎて、どの企業が自社にベストか分からない」
「Azure導入のメリット・デメリットを知りたい」
「Azureがどういう課題を解決してくれるのか知りたい」
など、Azureに関するお悩みならお気軽にお問い合わせください。
中立的な立場で、貴社に最適なソリューションをご提案いたします。

クラウドサーバーご検討中の方必見
お役立ち資料一覧

クラウドサーバーご検討中の方必見 お役立ち資料一覧
  • クラウドサーバーの導入を検討しているがオンプレミスとどう違うのか
  • AWSとAzureの違いについて知りたい
  • そもそもAzureについて基礎から知りたい
  • 今、話題の「WVD」って何?

そのようなお悩みはありませんか?
Azure相談センターでは、上記のようなお悩みを解決する
ダウンロード資料を豊富にご用意しています。
是非、ご覧ください。

Azureの導入・運用に役立つ資料を
無料でダウンロードしていただけますDOWNLOAD

オンプレミスからクラウドへの移行を検討している方のために、安心・スムーズな移行を実現する方法を解説し、
運用コストの削減に有効な「リザーブドインスタンス」もご紹介するホワイトペーパーです。

Azureのことなら、
SB C&Sにご相談を!

導入から活用まで専門スタッフが回答いたします。
お気軽にお問い合わせください。