-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureCosmosDB
- 戻る(Azureのデータ・ストア)
スケールに対応したオープン API を備えた、高速な NoSQL データベース
補足(Cosmos DB の位置づけ): 「オープン API を備えた」という表現が
本ページの主題である。Cosmos DB は単一のエンジンの上に、
複数の既存 NoSQL の API を被せた製品として設計されている。[ SQL(NoSQL) API ] [ MongoDB API ] [ Cassandra API ] [ Gremlin ] [ Table ] └──────────────┴───────┬───────┴────────────────┘ ▼ 共通のエンジン(分散・レプリケーション・インデックス)これにより「既存の MongoDB アプリを、コードをほぼ変えずに
マネージドへ移せる」という移行のしやすさを狙っている。
ただし互換性は完全ではないため、実際には検証が要る。
- RDB の SQL ではなく、JSON に対する SQL。
- PostgreSQL の jsonb 型カラムに対する SQL のようなもの。
補足(最新化): SQL API は現在 NoSQL 用 API(API for NoSQL)に
改称されている。これが Cosmos DB のネイティブな API であり、
新規開発では原則こちらを選ぶ
(他の API は既存資産の移行用と位置づけられている)。
中身は良く解らないが、インターフェイスは MongoDB
中身は良く解らないが、インターフェイスは Cassandra
中身は良く解らないが、インターフェイスは Gremlin。
補足: Gremlin は Apache TinkerPop のグラフ走査言語。
「A さんの友人の友人で、この商品を買った人」といった
関係をたどるクエリを書くための API である。
Azure Digital Twins が扱うような
グラフ構造のデータに向く。
中身は良く解らないが、インターフェイスは Azure Table Storage。
補足(原文の「中身は良く解らないが」への補足): これらの API は
エンジンそのものが MongoDB や Cassandra なのではなく、
Cosmos DB のエンジンがそれらのワイヤ プロトコルを話す実装である。
したがって、
- 既存のドライバ・ツールがそのまま使える(接続文字列を変えるだけ)、
- 一方で未実装の機能・演算子がある(バージョンごとに対応状況が違う)、
という性質を持つ。移行時は使用している機能の対応状況の確認が必須。
なお、MongoDB API には後から
vCore ベース(実際に MongoDB 互換エンジンを動かす構成)が追加され、
従来の RU ベースより互換性が高くなっている。
補足(Cosmos DB を理解する 3 つの鍵): 原文には無いが、
実務で最初に押さえるべきは次の 3 点である。データはパーティション キーの値でノードに分散される。
この選択が性能とコストをほぼ決める。
良いキー 悪いキー 値の種類が多い(カーディナリティが高い) 値が少数(偏る=ホット パーティション) クエリの絞り込み条件に含まれる クエリで指定しない(全パーティション検索になる) パーティション キーは後から変更できない(コンテナー再作成が必要)ため、
設計時に最も時間をかけるべきところ。課金と性能の単位。読み書きの「重さ」を正規化した数値で、
プロビジョニング済み(毎秒 N RU を確保)か
サーバーレス(使った分だけ)かを選ぶ。
RU を超えると **429(スロットリング)**が返るため、
リトライ設計が前提になる。5 段階(Strong / Bounded Staleness / Session / Consistent Prefix / Eventual)から選べる。
強くすると遅く・高くなり、弱くすると速く・安くなる。
既定の Session は「自分の書き込みは自分で読める」保証で、
多くのアプリで妥当な落とし所になる。
- Azure Cosmos DB – 非リレーショナル データベース
https://azure.microsoft.com/ja-jp/products/cosmos-db/
-
Azure Cosmos DB
https://learn.microsoft.com/ja-jp/azure/cosmos-db/- .NET SDK を使用して Azure Cosmos DB for NoSQL リソースを管理する
https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-dotnet - Azure Cosmos DB for Apache Cassandra の概要
https://learn.microsoft.com/ja-jp/azure/cosmos-db/cassandra/introduction - Azure Cosmos DB for MongoDB の概要
https://learn.microsoft.com/ja-jp/azure/cosmos-db/mongodb/introduction - Azure Cosmos DB for Apache Gremlin の概要
https://learn.microsoft.com/ja-jp/azure/cosmos-db/gremlin/introduction - Azure Cosmos DB for Table の概要
https://learn.microsoft.com/ja-jp/azure/cosmos-db/table/introduction - パーティション分割の概要
https://learn.microsoft.com/ja-jp/azure/cosmos-db/partitioning-overview
- .NET SDK を使用して Azure Cosmos DB for NoSQL リソースを管理する
Tags: 移行, クラウド, Azure, データアクセス
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。