NoSQL
非リレーショナルデータベース
NoSQLは柔軟なスキーマと水平スケーラビリティを特徴とする データベース。用途に応じた様々なデータモデルがあり、大規模データや高速アクセスに適しています。
NoSQLの種類
| タイプ | 代表例 | ユースケース | 特徴 |
|---|---|---|---|
| Key-Value | Redis, Memcached, DynamoDB | キャッシュ、セッション | 超高速、シンプル |
| Document | MongoDB, Couchbase | CMS、カタログ | 柔軟なスキーマ |
| Wide Column | Cassandra, HBase | 時系列、IoT、ログ | 大規模分散 |
| Graph | Neo4j, Neptune | SNS、レコメンド | 関係性の表現 |
CAP定理
分散システムは以下の3つのうち、同時に2つまでしか満たせない:
C - Consistency
全ノードが同じデータを見る
A - Availability
常にレスポンスを返す
P - Partition Tolerance
ネットワーク分断でも動作
CP(一貫性 + 分断耐性)
MongoDB, HBase, Redis Cluster
分断時は一部ノードが応答不可になる
AP(可用性 + 分断耐性)
Cassandra, DynamoDB, CouchDB
結果整合性を許容、常に応答
BASE特性
ACIDの対となる概念。可用性とスケーラビリティを優先。
BA - Basically Available
基本的に常に利用可能
S - Soft State
状態は時間とともに変化しうる
E - Eventually Consistent
最終的に一貫性が保たれる
選定基準
RDBMS を選ぶ場合
トランザクションが重要、複雑なJOIN、データ整合性が最優先
NoSQL を選ぶ場合
大規模データ、高速読み書き、柔軟なスキーマ、水平スケール
ポリグロット永続化
用途に応じて複数のDBを組み合わせる(RDBMS + Redis + Elasticsearch等)