Azure Managed Service Column <Azure運用コラム>

Azure Cosmos DBとは?RDBMSとの違いと最適な用途について解説

Category: 入門編

2021.08.06

はじめに

システムでデータを管理するためにデータベースが使われますが、データベースにはさまざまな種類があることはご存じでしょうか。

大量のデータを高速処理したいという企業では、従来のリレーショナルデータベース( RDBMS )ではなく、NoSQL データベースの導入が進んでいます。マイクロソフトが提供するクラウド、Microsoft Azure はマイクロソフト製品と親和性が高いため企業でも人気がありますが、Azure が提供している NoSQL データベースサービス「 Azure Cosmos DB 」はグローバルレベルでデータを分散配置することで、高いSLAとスケーラビリティ、応答性能を誇るサービスです。

本記事では、NoSQL とは何かを踏まえた上で、Azure Cosmos DB の概要やメリット、活用方法について解説します。

1. RDBMS と NoSQL

従来、データベースといえば Oracle や MySQL といったリレーショナルデータベース( RDBMS )がよく使われてきましたが、NoSQL とはどのようなものでしょうか。まずは NoSQL の概要と、一般的な RDBMS との違いについて解説します。

1.1 RDBMS とは

リレーショナルデータベース( RDBMS )とは、関係データベースとも呼ばれ、行と列で配列されたデータを表形式で構造的に管理するデータベースのことを指します。SQL というデータベース言語を使ってデータの参照と操作を行います。複雑なデータを扱えるというメリットがある一方で、処理が複雑になることで処理性能が悪化する場合があります。また、データの仕様変更に対する柔軟性が低いというデメリットもあります。データベースというと、一般的には RDBMS を指すケースが多いです。

1.2 NoSQL とは

NoSQL は「 Not only SQL 」の略で、非リレーショナルデータベースとも呼ばれます。RDBMS ではないデータベースの総称で、SQL 以外の方法でデータの参照と操作を行います。RDBMS のように表形式で構造化されておらず、キーバリュー型、グラフ型、ドキュメント指向型などさまざまなデータモデルを扱えるという特徴があります。データの格納と取り出しに特化した構成で、データの分散配置により可用性と拡張性に優れていることがメリットですが、複雑に構造化されたデータを扱うことは苦手です。

2. Azure Cosmos DB とは

Azure Cosmos DB とは、Microsoft Azure が提供している NoSQL データベースサービスです。ここでは、Azure Cosmos DB の概要と料金体系について解説します。

2.1 Azure Cosmos DB とは

Azure Cosmos DB は、Microsoft Azure が提供しているフルマネージド型の NoSQL データベースサービスです。グローバルでデータを分散保存することで、高いスケーラビリティと 1 桁ミリ秒の応答時間、99.999 % の高可用性を保証していることが大きな特徴です。

2.2 Azure Cosmos DB の料金体系

Azure Cosmos DB の料金体系は、データベースの操作を行うためのマシンリソースを抽象化した要求ユニット( RU )という単位で、利用した時間の従量課金となります。なお、一年間または三年間の期間でスループットを予約することで、本来の従量課金制と比較して最大 65 %のコストを削減することも可能です。

3. Azure Cosmos DB のメリットと活用方法

Azure Cosmos DB を利用すると、どのようなメリットがあるのでしょうか。Azure Cosmos DB の特徴とメリット、また最適な活用例について解説します。

3.1 Azure Cosmos DB のメリット

Azure Cosmos DB の特徴とメリットは下記の通りです。

  • ターンキーグローバル分散による高い可用性と応答性
  • 自動かつ即時のスケーラビリティ
  • マルチモデル・マルチ API によるデータベースの統合利用

3.1.1 ターンキーグローバル分散による高い可用性と応答性

ターンキーグローバル分散とは、Azure Cosmos DB を導入後すぐ利用できる(ターンキー)、世界中の Azure リージョンにデータを自動的に分散配置する仕組みです。

Azure リージョン全体から任意のリージョンを選択することで、惑星レベルのデータの分散保存を実現しており、読み取りと書き込みの両方において 99.999 % の可用性を保証しています。また、データベースとの通信においては、最も距離の近いリージョンと通信するため応答性が高いこともメリットです。

3.1.2 自動かつ即時のスケーラビリティ

Azure Cosmos DB は世界中で分散されていますが、それぞれの Azure リージョンにおいて自動的にスケールする仕組みとなっています。そのため、トラフィックの増減に応じてグローバルレベルで自動かつ即時にスケールするため、ピーク時の対応を必要とせず運用が可能となります。

3.1.3 マルチモデル・マルチ API によるデータベースの統合利用

Azure Cosmos DB は、マルチモデル・マルチ API という特徴を持っています。

マルチモデル・マルチ API とは、複数のデータモデルと、それぞれのデータモデルに対応する API( Application Programming Interface )を備えているという意味です。Azure Cosmos DB は KVS( Key-Value-Store )型、ドキュメント型、グラフ型など 4 つのデータモデルに対応しており、それぞれのデータモデルに応じた API が提供されています。データの保存方式と API を選択できるマルチモデル・マルチ API の実現により、異なる言語やデータモデルを使用するアプリケーションごとに異なるデータベースを用意することなく、統合して柔軟に利用することが可能です。

3.2 Azure Cosmos DB の活用方法

NoSQLデータベースである Azure Cosmos DB の適した用途について解説します。

  • 大量のデータ追加/削除/参照が行われるシステム
  • 半構造化データ・非構造化データを扱うシステム

3.2.1 大量のデータ追加/削除/参照が行われるシステム

Azure Cosmos DB は、IoT システムなど、大量データの追加や削除・参照が行われるシステムに適しています。例えば、自動車に搭載したカーナビや GPS などのデバイスをインターネット経由で接続するテレマティクスでは、さまざまな場所にある大量のデータをリアルタイムに取り込み、分析する必要があります。このような大量データの読み取りと書き込みが必要なシステムに対しては、Azure Cosmos DB が持つ 1 桁ミリ秒の高い応答性能が大きな力になるでしょう。

3.2.2 半構造化・非構造化データを扱うシステム

半構造化データとは、RDBMS が扱う、スキーマにより表形式に構造化されたデータではなく、JSON や XML のような柔軟で自由度の高いデータのことを指します。非構造化データとは、画像や音声データ・動画など、構造化できないファイルデータ全般のことです。これらのデータは、構造化データのようなスキーマやリレーション(関係性)を持たず、多種多様で柔軟なデータに対して迅速なスループットが求められる場合に利用されます。Azure Cosmos DB はこれらの半構造化データ、非構造化データをサポートしています。大容量の画像や動画コンテンツを発信する Web サービスなどにおいては、Azure Cosmos DB が適していると言えます。

まとめ

IT 技術の発展に伴い、これまでよりも多種多様な大量データを迅速に処理することが求められています。Azure Cosmos DB はこのようなビッグデータ時代に対応する NoSQL データベースです。RDBMS と NoSQL は得意とするデータモデルが異なるため、データベースサービスを選定する際は、どのようなデータモデルとするかをしっかり見極め、適切な製品やサービスを選択することが重要です。

Azure 設計・構築を相談したい

Azure構築サービス

Azure 構築サービス

Microsoft Azure を利用したシステムの設計・構築を代行します。お客様のご要件を実現する構成をご提案・実装いたします。

Free

資料ダウンロード

課題解決に役立つ詳しいサービス資料はこちら

資料ダウンロード
  • Azure導入支援・構築・運用サービス総合カタログ

    Microsoft Azure サービスの導入検討・PoC、設計、構築、運用までを一貫してご支援いたします。
    Azure導入・運用時のよくあるお悩み、お悩みを解決するためのアールワークスのご支援内容・方法、ご支援例などをご確認いただけます。

Azure導入個別相談会(無料)

Tag: Azure Cosmos DB DB

関連記事

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php