NoSQL
[データベース]の講義
定義が広い/曖昧?
- 1998: RDBMSからSQLを除外したデータモデルを指す用語として定義された
- 2009: リレーショナルデータベース以外の [データベース]を指す用語として定義された
BASE特性を持つ
強み
弱み (大体は歴史の浅さが原因)
NoSQLのアーキテクチャ: 分散データベース
- スキーマレス
- データ構造の最小単位: Aggregate (タプル的な一対一のデータ)
- 様々なデータモデルが存在する(「NoSQL」はSQLでないというだけの言葉なので)
- 例
- KVS (Key Value Store)
- 向いているユースケース
- Keyのみで情報が一意に特定できる場合
- ex: ユーザ情報, 商品情報などの参照, 更新
- Keyのみで情報が一意に特定できる場合
- 向いてないユースケース
- 複数のaggregate(key-value pair)の集合演算をしたい場合
- valueから検索したい場合
- 向いているユースケース
- ドキュメントデータベース
- カラムストア
- ドキュメントデータベースとリレーショナルデータベースの中間的な
- rowの中にcolumnがある
- ただ、リレーショナルデータベースみたいに全rowが同じcolumnを持つ必要はない
- 向いているユースケース
- スキーマが多くの場合同じだけど、たまに異なることもある場合
- ex: イベントロギング, コンテンツ管理システム, ブログ管理システム
- スキーマが多くの場合同じだけど、たまに異なることもある場合
- 向いていないユースケース
- ACID特性が求められる場合
- 問合せ処理結果の集約演算が必要な場合
- プロトタイプ(クエリパターンが変わりやすい)の場合
- グラフデータベース
- KVS (Key Value Store)