Skip to content

MS_AzureCosmosDB

nishi_74322014 edited this page Sep 11, 2026 · 2 revisions

Azure Cosmos DB

概要

スケールに対応したオープン API を備えた、高速な NoSQL データベース

補足(Cosmos DB の位置づけ): 「オープン API を備えた」という表現が
本ページの主題である。Cosmos DB は単一のエンジンの上に、
複数の既存 NoSQL の API を被せた
製品として設計されている。

 [ SQL(NoSQL) API ] [ MongoDB API ] [ Cassandra API ] [ Gremlin ] [ Table ]
         └──────────────┴───────┬───────┴────────────────┘
                                ▼
           共通のエンジン(分散・レプリケーション・インデックス)

これにより「既存の MongoDB アプリを、コードをほぼ変えずに
マネージドへ移せる」という移行のしやすさを狙っている。
ただし互換性は完全ではないため、実際には検証が要る。

詳細

SQL API

  • RDB の SQL ではなく、JSON に対する SQL。
  • PostgreSQL の jsonb 型カラムに対する SQL のようなもの。

補足(最新化): SQL API は現在 NoSQL 用 API(API for NoSQL)に
改称されている。これが Cosmos DB のネイティブな API であり、
新規開発では原則こちらを選ぶ
(他の API は既存資産の移行用と位置づけられている)。

MongoDB API

中身は良く解らないが、インターフェイスは MongoDB

Cassandra API

中身は良く解らないが、インターフェイスは Cassandra

Gremlin API

中身は良く解らないが、インターフェイスは Gremlin。

補足: Gremlin は Apache TinkerPop のグラフ走査言語
「A さんの友人の友人で、この商品を買った人」といった
関係をたどるクエリを書くための API である。
Azure Digital Twins が扱うような
グラフ構造のデータに向く。

Table API

中身は良く解らないが、インターフェイスは Azure Table Storage

補足(原文の「中身は良く解らないが」への補足): これらの API は
エンジンそのものが MongoDB や Cassandra なのではなく、
Cosmos DB のエンジンがそれらのワイヤ プロトコルを話す
実装である。
したがって、

  • 既存のドライバ・ツールがそのまま使える(接続文字列を変えるだけ)、
  • 一方で未実装の機能・演算子がある(バージョンごとに対応状況が違う)、

という性質を持つ。移行時は使用している機能の対応状況の確認が必須。

なお、MongoDB API には後から
vCore ベース(実際に MongoDB 互換エンジンを動かす構成)が追加され、
従来の RU ベースより互換性が高くなっている。

補足(Cosmos DB を理解する 3 つの鍵): 原文には無いが、
実務で最初に押さえるべきは次の 3 点である。

① パーティション キー

データはパーティション キーの値でノードに分散される。
この選択が性能とコストをほぼ決める。

良いキー 悪いキー
値の種類が多い(カーディナリティが高い) 値が少数(偏る=ホット パーティション)
クエリの絞り込み条件に含まれる クエリで指定しない(全パーティション検索になる)

パーティション キーは後から変更できない(コンテナー再作成が必要)ため、
設計時に最も時間をかけるべきところ。

② RU(Request Unit)

課金と性能の単位。読み書きの「重さ」を正規化した数値で、
プロビジョニング済み(毎秒 N RU を確保)か
サーバーレス(使った分だけ)かを選ぶ。
RU を超えると **429(スロットリング)**が返るため、
リトライ設計が前提になる。

③ 整合性レベル

5 段階(Strong / Bounded Staleness / Session / Consistent Prefix / Eventual)から選べる。
強くすると遅く・高くなり、弱くすると速く・安くなる。
既定の Session は「自分の書き込みは自分で読める」保証で、
多くのアプリで妥当な落とし所になる。

参考

microsoft.com

Microsoft Azure

Microsoft Learn


Tags: 移行, クラウド, Azure, データアクセス

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally