Azure Cosmos DB: 業界初のグローバル分散型マルチモデル データベース サービス
執筆者: Dharma Shukla (Distinguished Engineer & General Manager, OSS Analytics and NoSQL)
このポストは、5 月 10 日に投稿された Azure Cosmos DB: The industry’s first globally-distributed, multi-model database service の翻訳です。
マイクロソフトは本日、Azure Cosmos DB の一般提供を開始したことを発表しました。Azure Cosmos DB は複数のリージョンにスループットとストレージを弾力的にスケーリング可能な初のグローバル分散型データ サービスで、業界で最も包括的な SLA により低レイテンシ、高可用性、整合性を保証します。Azure Cosmos DB は、今日の IoT とモバイル アプリの強化と、AI が活躍する未来のサポートを目指して設計されたものです。
Azure Cosmos DB は多くのデータ モデルと主要なクエリ API をネイティブにサポートした初のクラウド データベースであり、大量のデータを持続的に取り込むことが可能なデータベース エンジン上に構築され、スキーマまたはインデックスの管理なしに高速クエリを実行します。さらに、5 段階の整合性モデルが明確に定義された初のクラウド データベースでもあるため、アプリに最適な整合性モデルの選択が可能です。
5 段階の整合性レベルや Azure Cosmos DB の機能の多くは、何十年にもわたる分散システムとデータベースの研究と、世界トップレベルの厳格なエンジニアリング作業の積み重ねによって実現したものです。Azure Cosmos DB に実装された研究結果については、チューリング賞を受賞した Microsoft Research の研究者で、分散システムの大家である Leslie Lamport 博士の動画をご覧ください。
Azure Cosmos DB: クラウドベースのアプリ開発を変革
Azure Cosmos DB の登場により、クラウドベース アプリの開発手法が根本的に変わることが考えられます。
- グローバル分散型アプリの開発が容易になる
Azure Cosmos DB では、ターンキー型のグローバルな分散が可能になり、ワンクリックでいつでも複数の Azure リージョンを Azure Cosmos DB データベースで追加または削除できます。ユーザーのリージョンに関係なく、データは Azure Cosmos DB によってシームレスにレプリケートされます。
- いつでもどこでも必要に応じてスループットとストレージを弾力的にスケーリングできる
Azure Cosmos DB では、必要に応じて世界規模でアプリケーションのスループットとストレージを弾力的にスケーリングできます。世界中のどこにいても、1 回の API 呼び出しで 1 秒あたりの要求数を数千件から数億件に弾力的にスケールアップすることが可能で、料金は必要な分のスループット (およびストレージ) に対して発生します。Azure Cosmos DB は、秒単位と分単位の両方でスループットをスケーリングできる唯一のクラウド データベースです。ピーク時用にオーバー プロビジョニングすることなく、ワークロードの想定外のスパイクにも適切に対応することができます。
「当社では、トランザクション処理システムに Azure Cosmos DB を採用しています。1 秒間にきわめて大量の書き込みが可能で、整合性を予測しやすいため、お客様が求めている高いパフォーマンスと信頼性を提供できます。コレクションごとにスループットをスケーリングできるため、パフォーマンスとコストのバランスを細かく調整し、お客様に最高の価値を提供することができます」。
- Blackboard、アプリケーション アーキテクチャ担当シニア ディレクター、Andrew Hochstetler 氏
- 応答性の高いアプリを開発できる
Azure Cosmos DB では、リージョンに関係なく 99 パーセンタイルでアプリの 10 ミリ秒未満のレイテンシを保証します。Azure Cosmos DB の中核となるのは、書き込みに最適化されたラッチを使用しないログ構造のデータベース エンジンで、持続的なデータ取り込みときわめて高速なクエリにより、満足できるアプリの応答性を実現します。
- 常時利用可能なアプリを開発できる
Azure Cosmos DB では、アプリは自動的に常時利用可能になります。各リージョンおよびリージョン間でデータの高可用性が保証されるほか、マルチホーム機能により、地域的な災害が発生した場合でも、複雑なアプリの再デプロイメントを行うことなくアプリケーションとデータの両方の高可用性を維持することができます。
「マイクロソフトの Xpander チームは、Windows と Xbox の多数のミッションクリティカルなフローを実行する重要なサービスを開発しています。そのため、非常に高い可用性と厳しいレイテンシの要件が求められ、世界各地の主要データセンターに分散される必要があります。以前のストレージ ソリューションから Azure Cosmos DB に移行して以来、総合的な信頼性とパフォーマンス特性が大幅に向上したほか、トランザクション全体の 0.001% で 1 日 1 分未満の影響を及ぼす ”マイクロ障害によるタイムアウト” が大幅に削減されました」。
- Xpander、主任ソフトウェア エンジニアリング リード、Cary Mitchell
- アプリに最適な整合性モデルを選択できる
Azure Cosmos DB では、開発者が極端な整合性の選択 (Strong または Eventual 整合性モデル) を迫られることはありません。5 段階の整合性レベル (Strong、Bounded-Staleness、Session、Consistent-Prefix、Eventual) が明確に定義されており、アプリに最適なモデルを選択することができます。
「Johnson Controls は 7 つの大陸で事業を展開するグローバル企業です。Azure Cosmos DB のようなグローバル データベースを利用することで、お客様と機器をサポートするためのアプリケーションを、場所を問わずに非常に簡単に開発できます。低レイテンシが実現し、整合性を詳細に制御できることで、当社のアプリケーションに最適なパフォーマンスを選択できます。マイクロソフトのチームには、世界中から優秀な人材が集まっており、非常に厳格な SLA も信頼できます」。
- JCI Connected Offerings、データ エンジニア、Erik Paulson 氏
- スキーマやインデックスを考慮せずにアプリをすばやく改良できる
グローバル分散型アプリでは、データベースのスキーマやインデックスとアプリケーションのスキーマの同期などに特に手間がかかります。Azure Cosmos DB は、スキーマやインデックスに対応する必要がありません。データベース エンジンがスキーマにまったく依存しないためです。これにより、スキーマ移行中のアプリケーションのダウンタイムを心配する必要もありません。すべてのデータのインデックスが自動的に作成され、高速クエリを実行します。
「Citrix では ID プラットフォームのサポートに Azure Cosmos DB を採用し、世界 40 万社以上の企業と 1 億人以上のユーザーのシングル サインオンを実現しました。以前の NoSQL データベースでは、インデックス作成とコードの定期的な変更が必要でしたが、Azure Cosmos DB に切り替えたことで、この課題が解決しました。既定で、取り込んだレコードのすべてのプロパティに自動的にインデックスが作成されるようになりました」。
- Citrix、主任アーキテクト、Tom Kludy 氏
- アプリに適切なデータ モデルを使用できる
Azure Cosmos DB のデータベース エンジンは、ほぼすべてのデータ モデルをネイティブにサポートするように設計されています。今回のリリースでは、キー値、ドキュメント、グラフが有効になります。また、このエンジンは拡張可能で、新しい種類のデータ モデルを効率的にサポートできるように設計されていますので、引き続きご注目ください。
- 任意の API を使用できる
Azure Cosmos DB が目指すのは、使い慣れたツールや API を使用して、より簡単にグローバル分散型アプリを開発できるようにすることです。Azure Cosmos DB のデータベース エンジンは、DocumentDB の SQL 言語、MongoDB API、Gremlin (グラフ) API、Azure Table Storage API をネイティブにサポートしています。今後は、選択肢を増やして柔軟性を向上させるため、その他の主要データ アクセス API のネイティブ サポートも予定しています。
- 業界をリードする包括的な SLA
Azure Cosmos DB は、返金制度を備えた包括的な SLA を提供する唯一のグローバル分散型データベース サービスです。SLA により、99 パーセンタイルでの高可用性と低レイテンシに加えて整合性とスループットが保証されます。
「当社では、NoSQL プラットフォームについて複数の市場製品を比較検討しましたが、最終的に多面的に優れた Azure Cosmos DB を選択しました。第 1 に、サービスとしてのマネージド データベースであることが非常に魅力的でした。小売業者である当社は、データベースの実行自体ではなく、データベースを実際に使用して価値提案を生み出すことを重視しています。そのため、サービスの可用性と SLA がエンタープライズ レベルであることが必要でした。第 2 に、当社は世界各地にお客様を持っており、パフォーマンスと耐障害性の確保のために、簡単にデータをレプリケーションする機能を重視しました。第 3 に、当社はマイクロサービス アーキテクチャを実行しており、サービスごとにワークロードやパフォーマンス特性が異なります。そのため、テクノロジを切り替えることなく整合性レベルを変更できるのは大きなメリットでした。Azure Cosmos DB は既に当社のアーキテクチャの重要な部分を占めており、今後はさらに価値提案の核となることを期待しています」。
- ASOS、エンタープライズ アプリケーション アーキテクト、Dave Green 氏
Cosmos のこれまでの経緯
Azure Cosmos DB の開発は当初、マイクロソフト社内の大規模アプリケーションで開発者が直面していた問題を解決するために、2010 年に「Project Florence」として開始されました。その後、グローバル分散型アプリの開発に伴う課題はマイクロソフト固有の問題ではないことが明らかになり、2015 年には Azure 開発者に向けて、このテクノロジの第 1 世代を Azure DocumentDB という形で提供しました。以降、多数の画期的な新機能を導入し、誕生したのが Azure Cosmos DB です。Azure Cosmos DB は、大規模なグローバル分散型クラウド データベースにおけるさらなる飛躍をもたらすものです。今回のリリースに伴い、DocumentDB のお客様とデータは自動的に Azure Cosmos DB に移行されます。移行はシームレスに行われ、お客様は Azure Cosmos DB で提供される新しい画期的なシステムと機能をご利用いただけるようになります。
技術的な概要については、私のチームがお届けするブログ シリーズの第 1 回目の記事 (英語) をご覧ください。この記事では、「Foundations of Azure Cosmos DB (英語)」というタイトルで Leslie Lamport 博士との詳しい対談内容も紹介しています。
Azure Cosmos DB のミッションは、驚くほど優れた宇宙規模のアプリを世界中で簡単に開発できるようにすることです。今回のリリースは、Azure Cosmos DB チームにとってのビッグバンともいえる一大イベントであり、世界中の開発者やユーザーの皆様に紹介できることをたいへん喜ばしく思っています。
ぜひ #AzureCosmosDB をお試しのうえ、ご意見をお聞かせください。皆様の開発にお役立ていただければ幸いです。
— Azure Cosmos DB チーム (@AzureCosmosDB)