Azure Cosmos DBとは
Azure Cosmos DBとは、マイクロソフト社が提供するAzureクラウドコンピューティングサービスのプラットフォーム製品(PaaS)の1つです。フルマネージドのNoSQLデータベースを、サーバーレスでサービス提供します。
【参考】:Azure Cosmos DB 【参考】:Azure Cosmos DB の概要
サーバーレスとは
サーバーレスとは、事前にキャパシティを計画することなく利用できるサービスです。最小料金も不要で、トラフィックの急増や不定期に発生するワークロードを処理する際の、データベース操作単位の消費リソースに基づいて利用料が発生します。
RDBMSとは
RDBMSとは、リレーショナルデータベース管理システムの略を指します。DBMSの種類の1つで、代表的なデータベースであるリレーショナルデータモデルを管理します。データに属性を持たせて、複数のデータを行と列で表します。全体を表形式で表し、テーブルとして管理します。
RDBMSへのアクセスはSQL(Structured Query Language)を用います。主なソフトウェアは、マイクロソフト社のSQL Server、オラクル社のOracle Database、オープンソースのPostgreSQLやMySQLなどがあります。
NoSQLとは
NoSQLとは、Not Only SQLで、大まかに言うと、RDBMS以外のデータベース管理システムを指します。RDBMSで必要とするスキーマやデータモデルを用いず、キーバリュー型やJSON・XMLを用いるドキュメント指向など、いくつかの方式があります。
各方式で共通していることは、SQLを使わないことです。SQLはリレーショナルデータベースで用いられる言語です。主なソフトウェアは、Apache Cassandra・Apache HBase、MongoDBなどがあります。
Azure Cosmos DBの料金体系
Azure Cosmos DBの料金体系は、実際のデータベース操作や使用済みストレージ、オプションの専用ゲートウェイに応じて課金されます。データベース操作については、事前選択済みの「プロビジョニング済みスループット」と「サーバーレス」の2種類のモデルが設定されており、ニーズに応じて選択できます。
「プロビジョニング済みスループット」モードでは、リソースが事前確保されるので最低料金が発生します。「サーバーレス」では、事前設定の最低料金はありません。
【参考】:Azure Cosmos DB の価格 【参考】:Azure Cosmos DB の価格モデル
Azure Cosmos DBの無料サービス
Azure Cosmos DBには、いくつかの無料サービスがあります。まずは、最初に使ってみたところで、サービス契約を検討するのも良いでしょう。具体的には、30日間無料、Freeレベル、Azure 無料アカウント、Azure Cosmos DB ローカル エミュレーターで、Azure Cosmos DBが無料で開始できます。
Freeレベルの従量課金制では、1,000要求ユニット/秒のプロビジョニング済みスループット、25GBのストレージが無料枠に設定されます。
【参考】:Azure Cosmos DBを無料で試す 【参考】:Azure Cosmos DB の価格
Azure Cosmos DBの特徴
Azure Cosmos DBは、パフォーマンスと可用性を兼ね備えたNoSQLデータベースです。具体的には、ミリ秒単位のレスポンス時間を持ち、99.999%の可能性が確保されます。実装においては、Apache CassandraやMongoDBなどのオープンソースNoSQL APIで実装されており、アプリ開発を迅速に行うことができます。
Azure Cosmos DBのメリット
Azure Cosmos DBのメリットは、NoSQLデータベースとクラウドサービスのメリットが活かされていることです。具体的には、以下のポイントが挙げられます。
・システムの場所と時間に制限されない Azureのグローバルネットワークを活用し、世界中でサービスを必要な時に開始できます。サーバーレスであり、必要な時に即座にサービスを提供する俊敏性が保証されます。
・企業向けのセキュリティと可用性に対応 ビジネスニーズを満たすセキュリティ機能や、99.999%の可能性を確保したことでミッションクリティカルワークロードに対応します。
・ニーズを満たしコスト削減効果が高い データベース操作に「プロビジョニング済みスループット」と「サーバーレス」の2つのオプションを用意したことで、ニーズに対応しながらコスト削減を行うことができます。
・Apache Cassandraとのシームレスな連携 Apache Cassandra APIとAzure Managed Instance for Apache Cassandraをシームレスに連携し、NoSQLデータベースを使用したリフトアンドシフトで、ハイブリッドクラウド活用が可能です。
【参考】:Azure Managed Instance for Apache Cassandra
Azure Cosmos DBのデメリット
Azure Cosmos DBのデメリットと言い切れるわけではありませんが、RDBMSのメリットが上回る場合はRDBMSを利用するのが得策です。
具体的には、RDBMSは業務トランザクションの安定性と一貫性があり、最も利用されています。同一のフォーマットの処理が連続する、銀行口座のようなレコードの参照や更新はトランザクションが一定で処理時間が予測しやすいRDBMSに分があります。
逆に、突発的に発生する処理やSNSなどのメッセージ集計などは、大量のデータが生成されるにつれてNoSQLデータベースの方が優位性が高まる領域です。ただし、管理を成り行きに任せてしまうと不要な費用が発生し、請求が高額になる恐れもありますので、やはりキャパシティ計画は注意すべき点です。
Azure Cosmos DBの活用用途
Azure Cosmos DBは、NoSQLデータベースであり、非構造化データのようなテキストや画像・映像、あるいはその組み合わせで活用すると効果的です。膨大な更新・参照・削除に対応できます。
例えば、IoTやモバイル端末から発生するデータは、あらゆる場所から送られてきます。そのデータを分析するために、データベースに蓄積が必要です。その際のデータ蓄積には、Azure Cosmos DBを活用すると良いでしょう。事例データでは、IoTのデータ処理や、小売サービス、分散アプリケーションの活用性などが掲載されています。
【参考】:Azure Cosmos DB お客様事例 【参考】:Microsoft Ignite Cosmos DB ソリューションアーキテクチャ 【参考】:Azure Cosmos DB の一般的なユース ケース
Azure Cosmos DBの使い方
Azure Cosmos DBを使うには、Azure Cosmos DBアカウントを作成し、そこでデータベースとデータが格納されるコンテナーを作成します。Azure Cosmos DBアカウントは、Azure portalやAzure PowerShell、Azure CLIなどを用いて管理します。
【参考】:Azure Cosmos DB の概要 【参考】:Azure portal を使用して Azure Cosmos アカウントを管理する
アカウントの作成
アカウントは、Azure portalのホームから「リソースの作成」「新規」ページで、「Azure Cosmos DB」を検索し選択します。そこで「API オプションの選択」から5種類のAPIから必要なAPIを選択します。選択できるのは、コア(SQL) および MongoDB・Gremlin・Azure Table・Cassandraです。
その後、「Azure Cosmos DB アカウントの作成」のページで基本設定を進めていきます。なお、Azure Cosmos DBアカウント毎に1つのAPIのみが選択可能です。サブスクリプション全体では、最大50件ものAzure Cosmos DBアカウントが作成できます。
【参考】:Azure Cosmos DB リソース モデル 【参考】:Azure Cosmos DB を無料で試す
Azure Cosmos DB APIを使ってみる
Azure Cosmos DB APIは、用途別に5種類用意されています。すでに MongoDBやApache Cassandra、Gremlinをお使いの場合は、該当するAPIを利用することで移行を容易にします。
【参考】:Azure Cosmos DB で API を選択する
SQL APIでは、NoSQLながらSQLのクエリが利用できます。Oracle Database・Amazon DynamoDB・Apache HBaseなどからの移行や、JSONオブジェクトを参照する際に有効です。Table APIは、Azure Table Storage用APIで、オブジェクトストレージサービスの利用に用います。
【参考】:Azure Cosmos DB SQL API のドキュメント 【参考】:Azure Cosmos DB MongoDB API のドキュメント 【参考】:Azure Cosmos DB Cassandra API のドキュメント 【参考】:Azure Cosmos DB Gremlin API のドキュメント 【参考】:Azure Cosmos DB Table API のドキュメント
Azure Cosmos DB ローカル エミュレーターを使ってみる
Azure Cosmos DB向けに開発をする場合ですが、Azure Cosmos DB ローカル エミュレーター(Azure Cosmos DB Emulator)が提供されます。アプリケーションの開発とテストをローカル環境で行い、クラウドサービスのリソースを使用せずに作業することができます。
エミュレータは、Windowsで提供されます。macOS・Linuxでは、Windows仮想マシンあるいはLinux Emulator(プレビュー)を使用します。
【参考】:ローカルでの開発とテストのために Azure Cosmos DB Emulator をインストールして使用する
今後も増加が見込まれる大量データに対応しましょう
Azure Cosmos DBは、NoSQLデータベースのフルマネージドサービスです。IoTやモバイル端末から発生する大量データの追加・参照・削除を行うシステムに最適です。テキスト・画像・動画問わず発生する非構造化データは今後も増加が予測されます。
Azure Cosmos DBはサーバーレスを有効活用し、大量データを効率的に管理する際におすすめのサービスです。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから