自己紹介
バスすごいね
カープが好きです
唐揚げが好きです
RDMSが得意なことはRDMSで、ふと行為なことは、用途のあったデータストアを使う
という考え方
データの一貫性(トランザクション)
更新時のコストが小さい
SQLによる複雑な条件での検索や集計
実績、ノウハウがある
書き込みをスケールさせるのが難しい
-デュアルマスタ?サーバ分割?
-データ量が爆発的に増加する
-読み込みはレプリケーションでスケール
スキーマ変更時にロックが掛かる
・カラム・スキーム
TOKYO TYRANT
Redis
Kumofs
MongoDB
CouchDB
Cassandra
HBASE
hadoop
揮発性Key-valueストア
-データはメモリ上に保持
複雑な問い合わせは行えない
-Keyによる完全な一致検索のみ
データの保存・読み出しは非常に高速
expire(有効期限)が設定できる
永続性key-valueストア
データストレージはTokyo Cabinet
そのラッパーがTokyo Tyrant
-ネットワーク越しで使えるようになる
データ型によっては複雑な検索も可能
- B+treeDB,テーブルDB,...
ドキュメント指向データベース
-スキーマレス(毎回カラム名もすべて気ロック
-BSON(BinaryJSON)でデータを保持
JOINとトランザクション意外をサポート
- GROUP BYとかかなりトリッキーだけど...
更新性能が比較的高いのが特徴
列単位でデータを保存している
データが増えても処理速度はそれほど低下しない
書き込みのスケーラビリティが高い
GoogleのMapReduceのOSS
分散処理のフレームワーク
複数台サーバを使って処理を分散
-サーバを増やすだけで簡単にスケール
非リアルタイムな処理の救世主
メリット
データがメモリに載りやすい
更新がスケール
バッチ処理が短時間で済む
Keyハッシュ値をサーバ台数で割り、そのあまりで保存するサーバを決めると簡単
サーバー台数が変わると(ry
RDBMSに負荷
ハッシュ値でサーバーを決定
サーバ追加時に影響を受けるサーバーが少ない
mongoDBやHBaseで利用される
2007年はサーバ1、2008年はサーバ2
特定のサーバに負荷が集中
管理は別サーバ(Manager)
NoSQLはRDBMSの弱みを補う
ただし、運用ノウハウがまだまだ少ない
トレードオフの理解も重要
-書き込みが高速ではあるが、同期しないのでエラー時にはデータが消える仕様だったり
MySQLをNoSQLのように使う事例も
-HandlerSocket Plugin
自己紹介
モバイルの話
Auのスマートフォンが月々8円
NoSQLってなんだろうね