フルマネージドのNoSQLデータベース「Azure Cosmos DB」とは?

フルマネージドのNoSQLデータベース「Azure Cosmos DB」とは?

はじめに

「Azure Cosmos DB」は、大規模なアプリケーション開発を支援し、「Coca-Cola」やソフトウェア会社の「NortonLifeLock」(旧:Symantec)、大手EC「ASOS」などでも使われている分散型データベースです。優れた応答性と高可用性を実現し、50以上のAzureリージョンで利用できます(2020年7月15日現在)。

また、可用性やスループット、一貫性などに関してSLA(Service Level Agreement)が適用されており、ミッションクリティカルなアプリケーションに利用可能です。本記事では、Azure Cosmos DBの概要を紹介していきましょう。

Cosmos DBの概要

Cosmos DBは、フルマネージドな分散型データベースサービスです。数ミリ秒の高速データアクセスが可能で、スループットや待機時間、可用性、一貫性については包括的なSLA(Service Level Agreement)が適用されています。

Azure Portal上の画面をクリックするだけで複数のAzureリージョンを跨いで、スループットとストレージを柔軟に変更可能であり、オンライン状態のままパフォーマンスを即座に変更することが可能です。

さらに、利用可能な50以上のAzureリージョンの中から、任意のリージョンをAzure Cosmosアカウントに紐付けると、選択した各リージョンにデータが自動的かつ透過的にレプリケートされます(Cosmos DBの利用にはAzure Cosmosアカウントが必要です)。

複数のAPIとデータモデルが利用可能

また、Cosmos DBは「マルチモデルのデータベースサービス」と説明されることがありますが、これはAPIとデータモデルを選択できるという特徴に由来しています。Cosmos DBでは以下のAPIが提供されています。

  • SQL API
  • MongoDB API
  • Azure Table API
  • Apache Gremlin API
  • Cassandra API
  • etcd API(プレビュー版)

Blockchain Data Managerを使用したCosmos DBと連携

Microsoftが提供するフルマージドのブロックチェーンサービス「Azure Blockchain Service」で使えるAzureサービス「Blockchain Data Manager」を活用することで、Cosmos DBにブロックチェーン上のトランザクションデータを記録することができます。記録されたトランザクションデータは「Azure Cosmos DB Data Explorer」を用いて検索可能です。

一般的なデータベースと比べて、ブロックチェーンは検索性能が劣る場合がありますが、上記のサービスを用いることで検索性能を向上させることができます。

Cosmos DBのメリット

Cosmos DBの主なメリットを簡単に紹介していきましょう。

Turn-key global distribution

優れた応答性と高可用性を実現するためには、アプリケーションのインスタンスを、物理的にユーザーに近いデータセンターにデプロイしなければなりません。前述したように、Cosmos DBでは50以上のAzureリージョンを選択して、データを透過的にレプリケートすることができます。したがって、ユーザーはもっとも近いリージョンにあるデータのレプリカと対話することができるのです。

そして、Cosmos DBではAzure Portal上の画面をクリックするだけで、自身のCosmosアカウントにAzureリージョンを追加/削除することができます。追加されたリージョンには、データがシームレスにレプリケートされます。レプリケーションにあたって、アプリケーションの一時停止や再デプロイは必要ありません。

Always On

Cosmos DBは読み取りと書き込みの両方に対して、99.999%の高可用性が提供されています。また、CosmosアカウントのフェールオーバーをプログラムあるいはPortalを介して呼び出す機能も利用可能です。したがって、特定のリージョンで大規模災害が発生した場合などにも、アプリケーションが自動で復旧するように設計できます。

需要に応じたスケーラビリティを世界規模で実現

Cosmos DBでは1回のAPI呼び出しで、世界中のどこでも秒間数千から数億のリクエストへとスケールアップすることができます。その際には、必要なスループットとストレージに対してのみ支払いが発生します。したがって、予期せぬリクエストの急増(スパイク)にも即座に対応可能です。

選択可能な5つの一貫性レベル

分散データベースにおいてデータの一貫性とパフォーマンス、可用性、待機時間はトレードオフの関係にあります。Cosmos DBでは、データの一貫性に関して5つレベルが提供されており、その概要は以下の通りです。

  1. Strong(厳密):厳密な一貫性を保証する。読み込み時には、最新版のデータが必ず返される
  2. Bounded staleness(有界整合性制約):データの読み取りが、最大Kバージョン分あるいはT時間分だけ、書き込みよりも遅れる可能性がある(TとKはユーザーが指定。TとKどちらか先に到達した数値分だけ遅れる)
  3. Session(セッション):単一のクライアントセッション内では、古いデータを読み取ったり、書き込んだ後にすぐに書き込み処理完了後のデータを読み取ったりできる(consistent-prefix,monotonic reads/writes,read-your-writes,write-follows-readsを保証。ただし、単一のライターセッションか複数のライターでセッショントークンを共有することが前提)
  4. Consistent prefix(整合性のあるプレフィックス):読み取ったデータが最新である保証は無いものの、最終的には一貫性を保った状態に収束する。また、書き込まれた順序通りの読み取りが保証される
  5. Eventual(最終的):読み取る際の順序の保証がなく、読み取ったデータが最新である保証は無いものの、最終的には一貫性を保った状態に収束する

なお、一貫性レベルに関しては、ドキュメントに記載されているアニメーションを見ると、直感的にイメージしやすいです。

参考:Azure Cosmos DB の整合性レベル

その他のメリット

上記以外にも以下のメリットが挙げられます。

  • 全世界で99パーセンタイルの低遅延を保証
  • スキーマとインデックスの管理が不要
  • Skype、Xbox、Office 365、Azureなどのミッションクリティカルなアプリケーションで10年近く使われてきたデータベースサービス(=厳しくテストされたデータベースサービスである)
  • 50以上のAzureリージョンで利用可能
  • デフォルトでのセキュリティ保護され、エンタープライズ用途にも対応
  • TCO(Total Cost of Ownership)の大幅な削減
  • 包括的なSLA(Service Level Agreement)
  • 人気のオープンソースソフトウェアAPIを使ったアプリ開発が可能
  • Cosmos DBに保存されたデータにApache Sparkを直接実行できる

参考:Azure Cosmos DB の概要

Cosmos DBの価格

Cosmos DBでは、プロビジョニングのスループットと時間あたりの使用ストレージに対して課金されます。目的に応じてプランを選択できるので、価格の詳細に関しては以下のページをご覧ください。

参考:Azure Cosmos DBの価格

Cosmos DBをとりあえず触ってみたい方は、Azure Cosmos DB の Free レベルを使用して期間限定・無料で試用することができます。Azureサブスクリプションへの課金がなくても問題ありません。また、最初の400RU/秒と5GBのストレージの範囲内であれば、30日間無料で利用可能です(RU= Request Units)。

まとめ

本記事冒頭でも紹介したように、Cosmos DBを活用することで大規模なアプリケーション開発を行うことができます。また、Blockchain Data Managerを利用することで、構築したブロックチェーンアプリケーションのトランザクションデータをCosmos DBに記録し、検索性を向上させることも可能です。

Microsoftは「Azure Cosmos DBのNoSQLデータを扱う」というラーニングパスを提供しており、Cosmos DBを用いたNoSQLデータ用のデータベースとコンテナの作成方法を学ぶことができます。

Azure Cosmos DBのNoSQLデータを扱うラーニングパス – Learn

その他、詳細についてはCosmos DBのドキュメントをご覧ください。

Azure Cosmos DBのドキュメント

BaaSカテゴリの最新記事