ミッションクリティカルなシステムに対応できるAzure Cosmos DBの特徴や注意点を解説

AIやIoTなどを使用したデジタルトランスフォーメーション(DX)が話題になっています。DXの具体的な方法として注目すべきなのが、AIやIoTで収集されたビッグデータの活用。ビッグデータで業務が可視化されることにより業務の効率化や製品開発の促進などの効果が出た、という事例も紹介されるようになってきています。

ビッグデータの格納と抽出などの処理を行うのがデータベースですが、従来のリレーショナルデータベースでは、整合性には優れるものの書き込みや読み込みなどのスピードが遅いという課題がありました。「Azure Cosmos DB」は、No SQLの仕組みを採用した低遅延なデータベースサービスとして、ビッグデータの活用に大きな力を発揮しています。また、データベースを水平分散配置させることにより、必要に応じた拡張や高可用性も実現しています。

今回は、ミッションクリティカルなシステムにも対応できるAzure Cosmos DBの概要や特徴について解説します。

Azure Cosmos DBとは

Azure Cosmos DBはAzureの基盤上で動作するNoSQLを採用したデータベースサービスです。1桁ミリ秒の応答時間と99.999%の可用性のサービスレベルアグリーメント(SLA)が適用されており、世界中のどこからでも高速に書き込みや読み取りが行えます。

NoSQLとは

NoSQLとは、広義にはリレーショナルデータベース(RDB)以外のデータベースのことを指します。設計段階でスキーマを定義する必要があり、かつスキーマの変更に手間がかかるRDBに対し、決まった構造を持たないデータを柔軟に管理できることが特徴です。NoSQLのNoは”Not only”の略で、SQLの言語やインターフェースだけでない技術を使用するデータベースです。

また、NoSQLは、データベースの一貫性や入力チェック、複雑な検索などの機能を極力持たず、かつサーバーを水平分散配置できるようにしているため、データの処理が比較的早く、自由なリソース拡張が特徴です。

例えば、RDBは企業の基幹システムなどに、NoSQLはTwitterなどのSNSなど、特に大規模なWebサイトのデータベースなどに向いています。

Azure Cosmos DBの機能とメリット

Azure Cosmos DBは、SLAにより99.999%の可用性がコミットされており、障害などでの停止が許容されないミッションクリティカルなシステムに向いています。ここでは、その特徴を紹介していきます。

ターンキーグローバル分散で距離が近いサーバーと通信し応答時間を短縮

Azure Cosmos DBでは、Cosmos DBのアカウントと各リージョンのサーバーが関連づけられていれば、データが各リージョンのサーバーにすぐに同期されます。そして、ユーザーは、(データが同期された)最も近くにあるサーバーへのアクセスでデータが取得できるため、アプリケーションの応答時間が短縮されます。

この素早い同期を「ターンキーグローバル分散」と呼びます。「ターンキー」とは、「導入後すぐに使えるようにする」という意味で、ターンキーグローバル分散とは「導入後、すぐに使える世界的なデータ同期機能」です。

ミッションクリティカルなWebシステム、スマホゲーム、IoTアプリケーションなどでは、Cosmos DBの高可用性や、低い応答時間が大きな力になるでしょう。

柔軟性の高い運用が可能

Azure Cosmos DBは、管理画面上での簡単な操作で、世界中のリージョンをまたいで通信速度とストレージ容量を柔軟に変更できます。数ミリ秒(1桁)の高速データアクセスが利用できるため、高速なレスポンスを要するシステムにも問題なく利用できるでしょう。高いレスポンス性能を要求される世界的なインターネットゲームなどでも十分な応答が期待できますし、また、ユーザーの増加に合わせて通信速度とストレージ容量を柔軟に変更できます。

99.999%の非常に高い可用性

Azure Cosmos DBは、SLAの規定により事前にCosmos DBのアカウントが関連づけられた各リージョンへのデータ同期で99.999%という非常に高い可用性を実現しています。 Cosmosアカウントとは、Azure Cosmos DBを使い始める際に作成するアカウントのことです。Cosmosアカウントのリージョン間フェールオーバーをプログラムで呼び出す機能も提供されているため、リージョン規模の災害時でも事業継続が可能です。BCPの策定においても有効といえるでしょう。

スキーマやインデックスの管理が不要

NoSQLを使用するデータベースシステム全体にいえることですが、データベースエンジンがスキーマに依存しないため、スキーマ移行中のアプリケーションのダウンタイムを心配する必要がありません。通常RDBには、スキーマとスキーマの所有するすべてのデータを一度にコピーする機能がありません。そのため、スキーマ移行の際には、新規のユーザーを作成し、移行元ユーザーのオブジェクトをすべてインポートするという作業が必要になります。この対応がAzure Cosmos DBでは不要であり、管理の負荷が軽減できます。

また、Azure Cosmos DBでは、格納されたデータはツリー形式に変換され、インデックスも手動で操作することなく付加されます。インデックスとは、書籍などにおける一般的なインデックス(目次)と同様に、目的のデータを探しやすくするためのデータであり、データへ素早くアクセスすることを可能にするものです。

Azure Cosmos DBを使用するうえでの注意点

ここからは、Azure Cosmos DBを使用するうえでの注意点についてみていきましょう。

ジオ冗長性の有効化でリージョン追加と同等の料金が発生

ジオ冗長性を有効化すると、ペアとして使用されるデータセンターにデータベースが複製されグローバル分散構成となり、可用性のSLAは99.99%から99.999%に向上しますが、アカウントにリージョンを追加することと同等の課金が発生することに注意が必要です。

秒あたり要求ユニット(RU/s)は使用しなくても費用が発生

まず、特に「標準(手動)プロビジョニングスループット」プランを選択する場合、Azure Cosmos DBでは、サービスを利用した量に応じて請求する方式ではなく、コンテナの作成時に設定された「秒あたり要求ユニット(RU/s:Request Units per Seconds)」により費用が発生することを知っておきましょう。Azure Cosmos DB では、Azure Cosmos DBを運用しているサーバーに必要なRU/sを決定して使用を開始することになるのですが、データの追加・削除の精緻な頻度や大きさを構築時に正確に予測することは困難なため、実際にはRU/s数の精緻な予測は困難といえるでしょう。まずは、ある程度大きめなRU/sを設定しておいて、日々のRU/s利用量のトレンドを把握したうえで、正式なRU/s数を決めていくとよいでしょう。

他のプランにも共通しますが、Azure Cosmos DBでは要求されたRU/sが消費されなくても費用が発生します。コンテナを作成した時点で、格納しているデータが空であっても、設定したRU/s分の課金は開始されてしまいますので注意が必要です。

サーバーなどのリソースを削除すると復元できない

作成したサーバーなどのリソースを削除すると、すべての情報が削除され、元に戻すことはできなくなりますので、注意が必要です。

自動フェールオーバーの有効化を強く推奨

手動フェールオーバーでは、フェールオーバー中にデータが失われないように、整合性チェックを完了しておく必要があります。整合性チェックは、プライマリリージョンとセカンダリリージョン間を接続して読み込みと書き込みを行うことにより実施されますが、たとえば何らかの障害でプライマリリージョンが使用できない場合、整合性チェックが完了しないため、手動フェールオーバーが失敗しデータベースに接続できなくなります。自動フェールオーバーは、このようなリスクをクリアできるため、有効化が強く推奨されています。

Azure Cosmos DBの料金

既に述べた通り、Azure Cosmos DBでは『秒あたり要求ユニット(RU/s)』という情報で料金が決まっていきます。

詳しくは公式サイトの料金表でご確認ください
価格 - Azure Cosmos DB | Microsoft Azure(Microsoft Azure公式ページ)別ウィンドウで開きます

ミッションクリティカルなDBを運用するならAzure Cosmos DBの検討を

Azure Cosmos DBなら、ターンキーグローバル分散により、ユーザーが最も近い場所にあるデータと通信できるようになるため、レスポンス速度が高いアプリケーションの運用ができます。また、ジオ冗長性の有効化により、高可用性を持つデータベースシステムが運用できます。Cosmosアカウントのリージョン間フェールオーバーをプログラムで呼び出す機能も提供されているため、リージョン規模の災害時でも事業継続ができる頼もしいクラウドデータベースです。

Azureには他にもデータベースシステムが多数ありますので、自社のシステム要件を整理し、適切なサービス選択をしていくべきです。例えば、RDBを使う要件があり、かつ様々な要件にフィットさせたければ「Azure SQL Database」が、特定のデータベース(MySQLやPostgreSQLなど)を使いたければ、「Azure Database for MySQL」や「Azure Database for PostgreSQL」が向いています。

ミッションクリティカルDBを求めるなら、Azure Cosmos DBの採用を検討してみましょう。

ネットワークからクラウドまでトータルサポート!!
NTT東日本のクラウド導入・運用サービスを確認してください!!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る