NoSQL
[データベース]の講義
定義が広い/曖昧?
1998: RDBMSからを除外したを指す用語として定義された
2009: [リレーショナルデータベース]]以外の[[データベース]を指す用語として定義された
のための新しい世代の
を持つ
強み
データ容量が大きい(大量のデータを扱える)
...
[データベース]
NoSQL
定義が広い/曖昧?
- 1998: RDBMSからSQLを除外したデータモデルを指す用語として定義された
- 2009: リレーショナルデータベース以外の [データベース]を指す用語として定義された
BASE特性を持つ
強み
弱み (大体は歴史の浅さが原因)
- 発展途上のシステム
- 重要な機能が未実装だったり
- サポート体制が整備されていなかったり
- 多くのシステムはOSS、即座に不具合に対応してもらえないことも
- システム管理に高いスキルが必要
- プログラミングコストが高い、SQLのように標準化
標準化
#誰のためのデザイン 7章に詳しく書かれてる、長いのでここには書かない ...
- 専門家が不足している
- 発展途上のシステム
NoSQLのアーキテクチャ: 分散データベース
- スキーマレス
- データ構造の最小単位: Aggregate (タプル的な一対一のデータ)
- 様々なデータモデルが存在する(「NoSQL」はSQLでないというだけの言葉なので)
- 例
- KVS (Key Value Store)
- 向いているユースケース
- Keyのみで情報が一意に特定できる場合
- ex: ユーザ情報, 商品情報などの参照, 更新
- Keyのみで情報が一意に特定できる場合
- 向いてないユースケース
- 複数のaggregate(key-value pair)の集合演算をしたい場合
- valueから検索したい場合
- 向いているユースケース
- ドキュメントデータベース
- カラムストア
- ドキュメントデータベースとリレーショナルデータベースの中間的な
- rowの中にcolumnがある
- ただ、リレーショナルデータベースみたいに全rowが同じcolumnを持つ必要はない
- 向いているユースケース
- スキーマが多くの場合同じだけど、たまに異なることもある場合
- ex: イベントロギング, コンテンツ管理システム, ブログ管理システム
- スキーマが多くの場合同じだけど、たまに異なることもある場合
- 向いていないユースケース
- ACID特性が求められる場合
- 問合せ処理結果の集約演算が必要な場合
- プロトタイプ(クエリパターンが変わりやすい)の場合
- グラフデータベース
- データをグラフ
グラフ
プロットするグラフと、のグラフの二つの意味がある このscrapboxでは、のグラフを指す 使用頻度/リンクされる価値はこっちの方が高いかなーと プロットするグラフは、とかの言葉を使う https://ja.wikipedia.org/wiki/グラフ理論 種類 密vs疎 ...
- エンティティ間の関連性を保存する
- プロパティグラフ: グラフのノードと[[辺]]がプロパティ(ラベル、名前とか)を持つ
- グラフ理論のアルゴリズムを応用できる
- 向いていないユースケース
- 大規模なバッチ処理が必要な場合
- 巨大なグラフデータを扱う場合
- スケーラビリティ確保が難しい
- なぜなら、NoSQLでよくやる手段(データを分割して分散させる)がやりにくいから
- データをグラフ
- KVS (Key Value Store)