変更要約: Cosmos DB にベクトル検索/セマンティック検索(埋め込み・RAG 用途)を追記=2026改訂の非リレーショナルドメインの AI 強調を反映。
3.1非リレーショナルデータと Azure Cosmos DB
非リレーショナル(NoSQL)データの4種類(キー値・ドキュメント・列ファミリ・グラフ)、リレーショナルとの違い、Azure Cosmos DB の特徴・複数 API・グローバル分散を理解します。
非リレーショナル(NoSQL) データベースは、固定スキーマに縛られず柔軟な形でデータを保存します。リレーショナルが「行と列の厳密な表」なのに対し、NoSQL は項目がデータごとに違ってもよく、大量・多様なデータや、高い拡張性(スケール)が必要な場面に向きます。NoSQL は1種類ではなく、保存の形によって4つに分かれます。「どんな形のデータか/何を高速にしたいか」で種類を選ぶのが基本です。
3.1.1NoSQL の4種類
- キー値(key-value):キーに対して値を保存する最も単純な形。キーを指定した取得が非常に高速。例:セッション情報・キャッシュ。
- ドキュメント(document):JSON などの文書を1件ずつ保存。項目が文書ごとに違ってよく柔軟。例:商品カタログ・ユーザープロファイル。
- 列ファミリ(column-family):列のグループを持つ行で構成し、巨大な表を高速に扱う。例:IoT の大量データ。
- グラフ(graph):ノード(点)とエッジ(線)で「関係」を表す。つながりの探索が得意。例:SNS の友人関係・推薦。
| 種類 | 保存の形 | 向く用途 | 例(Cosmos DB API 等) |
|---|---|---|---|
| キー値 | キー→値 | 高速な単純取得・キャッシュ | Table API / Table storage |
| ドキュメント | JSON 文書 | 柔軟な属性のデータ | NoSQL(Core) / MongoDB API |
| 列ファミリ | 列グループの行 | 大規模・高スループット | Cassandra API |
| グラフ | ノードとエッジ | 関係(つながり)の探索 | Gremlin API |
3.1.2リレーショナルとの違い
リレーショナルは固定スキーマと強い整合性を持ち、複雑な結合や厳密な取引(ACID)に強い反面、構造変更が重く、水平方向の拡張が難しいことがあります。NoSQL はスキーマ柔軟・水平スケールが容易で、膨大なデータや変化の速いアプリに向きますが、複雑な結合や厳密な整合性は不得意なことがあります。どちらが優れているという話ではなく、用途に応じて使い分けるのが正解です。前章の「構造化=リレーショナル」「半構造化=NoSQL(ドキュメント)」という対応も思い出しましょう。
3.1.3Azure Cosmos DB
- Azure Cosmos DB は、グローバル分散・低遅延・自動スケールのフルマネージド NoSQL データベース。
- 複数の API に対応:NoSQL(Core/ドキュメント)、MongoDB、Cassandra、Gremlin(グラフ)、Table。既存アプリの API に合わせて選べる。
- 世界中のリージョンへ複製でき、ユーザーに近い場所から低遅延で応答。スループットと遅延の SLA が保証される。
- ベクトル検索/セマンティック検索:近年は AI 向けに、データをベクトル(埋め込み)として格納し「意味の近さ」で検索する機能が加わった(生成AIアプリの根拠検索=RAG などに利用)。
シナリオ:グローバルな EC アプリ。 各国の利用者に低遅延で応答したい→Cosmos DB を複数リージョンに複製。商品データは項目が多様なのでドキュメント(NoSQL API)、買い物カゴの一時情報はキー値、レコメンドの「この商品を買った人は…」という関係はグラフ(Gremlin API)で表現。1つのアプリで複数のデータ形が登場します。
混同に注意:
①ドキュメント(JSON・柔軟な属性)とキー値(キーで取得する単純な値)を取り違えない。
②関係(つながり)が主役ならグラフ(Gremlin)。
③Cosmos DB は非リレーショナル。前章の Azure SQL(リレーショナル)と役割が違う。
④Cosmos DB の「複数 API」は、エンジンを丸ごと別物にするのではなく同じ基盤を異なる API で使えるという意味。
Q. NoSQL はリレーショナルの上位互換? いいえ。複雑な結合や厳密な整合性はリレーショナルが得意で、用途で使い分けます。Q. Cosmos DB はどの種類? 主にドキュメントですが、複数 API によりキー値(Table)・グラフ(Gremlin)・列ファミリ(Cassandra)も扱えます。Q. グローバル分散の利点は? 利用者に近いリージョンから応答でき低遅延、障害時の可用性も高まります。
「関係(つながり)を扱う=グラフ(Gremlin)」「JSON文書=ドキュメント」「キーで高速取得=キー値」「大規模・高スループット=列ファミリ(Cassandra)」の対応が頻出です。Cosmos DB が複数 API・グローバル分散・低遅延である点も押さえましょう。
3.1.4この節のまとめ
- NoSQL=キー値(高速取得)/ドキュメント(JSON)/列ファミリ(大規模)/グラフ(関係)
- リレーショナルは整合性・結合に強く、NoSQL はスキーマ柔軟・水平スケールに強い(用途で使い分け)
- Cosmos DB=複数 API(NoSQL/MongoDB/Cassandra/Gremlin/Table)・グローバル分散・低遅延の NoSQL
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. ソーシャルネットワークの「人と人のつながり」を表現するのに最も適した NoSQL はどれですか?
Q2. JSON 形式の柔軟な文書を保存するのに適した NoSQL の種類はどれですか?
Q3. Azure Cosmos DB の特徴として正しいものはどれですか?
Q4. キーを指定して値を非常に高速に取得する、最も単純な NoSQL の種類はどれですか?
Q5. リレーショナルと比べた NoSQL の一般的な特徴として正しいものはどれですか?

