TL;DR
関係データベース管理システム(RDBMS)以外のデータベース管理システムをまとめて指す、おおまかな分類語。「Not only SQL」の略として理解するのが望ましいとされる。
なぜ必要か
Wikipedia によると、NoSQL には、関係データベースが一律に使われてきたことを見直し、別の構造のデータベースの普及を促す運動の標語という意味もある。多くの NoSQL は機能を絞って最適化しているので、その制約の範囲内では RDBMS より高い性能を出せる。
仕組み
NoSQL のデータベースは、固定されたスキーマに縛られず、関係モデルの結合操作を使わない。水平スケーリングしやすいものが多い。分散アーキテクチャのものは、分散ハッシュテーブルでデータを複数のサーバに冗長に配置するので、サーバを足すだけでスケールでき、障害にも強くなる。
主な種類は次の 4 つである。
- キーバリュー型: キーに値を対応付ける単純な構造
- ソート済みカラム指向: 行キーに対してカラムの集合を持ち、カラム名でソートする。時系列データに向く
- ドキュメント指向(ドキュメントデータベース): JSON や XML のような、スキーマのない柔軟な構造を持つ
- グラフ指向: ノード、エッジ、プロパティで構成され、ノード間の関係の管理に特化する
例
Amazon DynamoDB は、キーバリュー型の NoSQL データベースである。
注意点
高度なトランザクション処理を使えないものが多い。一貫性の保証も弱く設計されることが多く、結果整合性だけを保証するものや、トランザクションを単一のデータ項目に限るものがある。