NoSQL
NoSQL
リレーショナルでない4種(key-value / document / wide-column / graph)の総称。データは非正規化され、JOINはアプリで行う。多くは厳密なACIDより可用性・結果整合性(BASE)を優先する。
ACID(SQL) vs BASE(NoSQL)
NoSQLの思想を理解する鍵が、ACIDの対比概念 BASE です。
- ACID(SQLの世界): 厳密。常に正しい状態を保証する。その代わり融通が利かず、スケールしづらい。
- BASE(NoSQLの世界): ゆるい。多少の一時的な不整合は許す代わりに、止まらず・スケールしやすい。
BASEの中身:
| 文字 | 意味 | かみ砕くと |
|---|---|---|
| Basically Available | 基本的に使える | とにかく応答は返す(可用性優先) |
| Soft state | 柔らかい状態 | 入力がなくても裏で状態が変わりうる(伝播中など) |
| Eventual consistency | 結果整合性 | 今は食い違っても、最終的には揃う |
BASEはCAP定理でいうAP寄り、つまり一貫性より可用性を優先する立場です。
図を描画中...
4タイプの早見
| タイプ | データの抽象 | 得意なこと |
|---|---|---|
| key-value | ハッシュテーブル | 超高速な単純読み書き |
| document | 値がドキュメント(JSON等) | 柔軟な構造のデータ |
| wide-column | ネストしたマップ | 超大規模・高可用 |
| graph | グラフ(ノードと関係) | 複雑な関係(SNS等) |
各タイプは個別コンセプトで詳しく扱います。
つまずきポイント
- 『NoSQL = SQLより新しくて優れている』ではない。得意分野が違うだけ。整合性が命の決済にNoSQLは不向き。
- JOINがない(弱い)ので、SQLなら1クエリだったものをアプリ側で複数回問い合わせて組み立てる必要がある。その複雑さがアプリ層に移る。
- 『非正規化が前提』なので、同じデータを複数箇所に持つ設計になりやすく、整合性は自分で気をつける。
📊 図解
図解: NoSQL 4タイプの分類
4タイプ(key-value / document / wide-column / graph)を、抽象モデル・用途・代表例で整理したマインドマップ。
図を描画中...