狈辞厂蚕尝に関するまとめ
- 2. NoSQLとは?
? Not Only SQLの略
– 元々は本当に「No SQL」だったみたいだけ
ど、印象悪いのでこうなったらしい
? SQLを使わない非リレーショナルなデータ
ベースの総称
– おおざっぱに言うとMySQLとかPostgreSQL以外
? どんなものがあるか
– kumofs, redis, Amazon
SimpleDB, hBase, Cassandra, memcachedb, Couch
DB, MongoDB, ...
- 5. ACIDからBASEへ
? ACID: データベースのトランザクション特性
– Atomicity - トランザクションに含まれるタスクが
全て実行されるか、あるいは全く実行されないこ
とを保証する性質
– Consistency -トランザクション開始と終了時にあ
らかじめ与えられた整合性を満たすことを保証す
る性質
– Isolation -トランザクション中に行われる操作の過
程が他の操作から隠蔽されることを指す
– Durability -トランザクション操作の完了通知を
ユーザが受けた時点で、その操作は永続的とな
り、結果が失われないことを指す。
- 7. BASE
? Basically Available
– いつでもデータにアクセスできることが重要
? Soft-state
– ゆるい状態管理/データ管理
– 高負荷時の耐性が高い
? Eventual consistency
– 結果整合性。途中でデータに不整合が起きて
も、結果的に整合性がとれてればOK
- 9. ACID対BASE
ACID
? Strong Consistency
? Isolation
? Focus on “commit”
? Nested transactions
? Availability?
? Conservative(pessimistic)
? Difficult evolution(e.g.
schema)
BASE
? Weak consistency – stale
data ok
? Availability first
? Best effor
? Approximate answers OK
? Aggressive(optimistic)
? Simpler!
? Faster
? Easier evolution
- 11. CAP定理
? スケーラビリティや整合性に関する定理
? Consitency
– 誰かがデータを更新したら、その後は必ず更新後の
データが返る
? Availability
– クライアントは必ずデータにアクセスできる
? Partition tolerance
– 耐ネットワーク分断性
– データを複数サーバに分散して保存できる、と読み
替えても良い
? この3つのうち、2つまでしか同時に満たせない、
というのがCAP定理
- 13. CAP定理の適用
? AvailabilityとPartition torelance
– データは分散され、いつでもデータにアクセスでき
る
– データ複製中は不整合な状態になりえる
– DNSなんかはその例
? 大規模分散システムにはこのAとPを満たすことが
重要
? Cはある程度妥協する(Eventual Consistency)
? ただし、VerticaはNoSQLながらもStrong Consitency
らしい
? CとAを満たすものがRDB。CとPやAとPを満たすも
のがNoSQL
- 21. データモデルで分類したソフト
ウェア
? Key-Value
– Tokyo Cabinet, Dynamo, Redis, Kai, kumofs
? 列指向
– Cassndra, hBase, HyperTable, BigTable, Vertica
? ドキュメント指向
– CouchDB, SimpleDB, MongoDB, Terrastore
- 31. 参考リンク
? NoSQL登場の背景、CAP定理、データモデルの分類
– http://www.publickey1.jp/blog/10/nosqlcap.html
? クラウド上のリレーショナルデータベースはなぜ難しいの
か? BASEとCAP定理について
– http://www.publickey1.jp/blog/09/_basecap.html
? CAP と BASE について調べたこと
– http://yohei-y.blogspot.com/2009/03/cap-base.html
? CAPのCとACIDのC
– http://yohei-y.blogspot.com/2009/04/yokohamapm-eventually-
consistent.html
? 分散環境でのデータ管理におけるソフトステートのロバスト
性の評価
– http://www-imase.ist.osaka-u.ac.jp/paper/Yamaguchi05_IN12-J.pdf
? この辺から辿れるところを読んでおけば大体把握できるかと