クラウドエンジニアブログ

【番外編】プラネットスケールのNoSQLサービス!Azure Cosmos DB

human04

立脇 裕太

皆さん、こんにちは!
2日間に渡って開催された de:code 2017もとうとう終わってしまいましたね。
今回は番外編として、Build 2017でも発表のあった Azure Cosmos DB をさっそく取り上げたいと思います。

Azure Cosmos DB はプラネットスケールの NoSQL サービスで、前身は Azure DocumentDB というサービス名称でした。特徴としては以下があります。

  1. グローバル分散
  2. マルチモデル/API
  3. 伸縮性のあるスケールアウト
  4. 保証された低レイテンシ
  5. 5つの整合性モデル
  6. 包括的な SLA

◆グローバル分散

Azure Cosmos DB は、グローバルで複数のリージョンへのレプリケーションが可能です。嬉しいことに東日本、西日本リージョンは既に対応済みです。
現時点では、書込はプライマリの1リージョンのみでその他のリージョンはすべて読取専用になります。今後、書込も複数リージョンに対応させたいと考えているようです。
アプリケーション側からのリクエストがあった場合は、透過的に最寄りのリージョンが応答する仕組みとなっています。
もし、プライマリに障害があった場合は、読み取り専用のいずれかのリージョンがプライマリに昇格します。どのリージョンを先に昇格させるかは PowerShell で制御することができます。

◆マルチデータモデル/API

Azure Cosmos DB では、以下の4つのデータモデルに対応しています。

  1. Key-Value
  2. ドキュメント
  3. グラフ
  4. 列指向

また、データにアクセスするため以下のようにさまざまな API をサポートしています。

  1. DocumentDB
  2. MongoDB
  3. Table(プレビュー)
  4. Graph(プレビュー)

ちなみに、Table Storage はいずれ Cosmos DB へ完全統合する予定があるようです。

◆伸縮性のあるスケールアウト

Azure Cosmos DB は、ディスク容量とスループットの2つの要素でスケールアウトさせることが可能です。
ディスク容量は、ペタバイト(PB)クラスまでスケールできます。
スループットは、秒単位の要求ユニット(RU/s)とは別に分単位の要求ユニット(RU/m)も指定できます。秒単位とは別に分単位で指定する目的としては秒単位で指定した以上の要求があった場合、分単位の割り当てから消費させることによりスパイクや予期せぬスループットのニーズに対応できるようにすることにあります。

◆保証された低レイテンシ

Azure Cosmos DB は、同一リージョン内に限りますが、パーセンタイル値に応じてレイテンシを以下のとおり保証します。なお、別リージョンの場合は保証されません。de:code のセッションデモでも別リージョンは100~200ms 程度かかっていました。

パーセンタイル値 読込(1KB) インデックス付書込(1KB)
50%(中央値) < 2ms < 6ms
99% < 10ms < 15ms

◆5つの整合性モデル

Azure Cosmos DB は、5つの整合性モデルがあります。整合性とは、簡単にいうと分散データベースで一つのデータベースに書き込んでから他のデータベースに同期するまで、どこまで待つかの度合いのことをいいます。強い整合性を実現するほど同期し終わるまで待つ必要があるため、パフォーマンスが低下します。逆に多少の期間、データが古くてもよければ整合性を弱めてパフォーマンスを向上させることができます。そのため、整合性の強さとパフォーマンスはトレードオフの関係にあります。 5つの整合性モデルは以下があり、下に行けばいくほど整合性が強くなります。

  1. Eventual(自身のセッションでも他のセッションでも最新の保証はなく、書込順序もバラバラ。いつか最新の結果になる。同期を待つ必要がないため、一番読込書込が高速)
  2. Consistent Prefix(書込順序は保証される以外は、Eventual と同じ)
  3. Session(自身のセッションからの書き込みは即読み込める、書込順序は保証される。他のセッションから見ると Consistent Prefix)
  4. Bounded Staleness(t 単位時間以降は、k 世代以内のデータが読める。t と K は指定可能。t=0、k=1 は Strong に該当)
  5. Strong(あるセッションが書き込んだら、どのセッションから読んでも常に最新)

なお、整合性はアプリケーションの処理ごとにオーバライド可能なため、処理に応じて整合性を切り替えることができます。

◆包括的な SLA

Azure Cosmos DB は、以下4つの側面の包括的な SLA を備えた唯一のデータベースです。これだけの大規模サービスで、ここまで SLA もしっかり定義されているのは凄すぎです。

  1. 可用性:99.99%を保証
  2. スループット:要求の99.99%が正常終了することを保証
  3. レイテンシ:99パーセンタイルで、99.99%の確率で<10ms を保証
  4. 整合性:読み取り要求すべてに対し、指定した整合性レベルを保証

プラネットスケールの NoSQL データベース、いかがでしたでしょうか。その名に恥じぬサービス内容だと思います。
個人的には、複数リージョンの書込対応楽しみです。他にも魅力的な機能が順次拡張されるため、今後も目が離せません!

皆さんも是非お試しください!それでは!


次回予告


【総合】お問い合わせ

ソリューションに関する全般的なお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録