第五回東北情報セキュリティ勉強会

2010/11/13

NoSQL

自己紹介

バスすごいね

カープが好きです

唐揚げが好きです

NoSQLとは

RDMSが得意なことはRDMSで、ふと行為なことは、用途のあったデータストアを使う

という考え方

RDMSの強み

データの一貫性(トランザクション)

更新時のコストが小さい

SQLによる複雑な条件での検索や集計

実績、ノウハウがある

RDMSの弱み

書き込みをスケールさせるのが難しい

-デュアルマスタ?サーバ分割?

-データ量が爆発的に増加する

-読み込みはレプリケーションでスケール

スキーマ変更時にロックが掛かる

・カラム・スキーム

NoSQL

Key-valueストア

TOKYO TYRANT

Redis

Kumofs

ドキュメント指向データベース

MongoDB

CouchDB

列指向データベース

Cassandra

HBASE

分散処理のフレームワーク

hadoop

特徴

MEMCACHED(メムキャッシュD)

揮発性Key-valueストア

-データはメモリ上に保持

複雑な問い合わせは行えない

-Keyによる完全な一致検索のみ

データの保存・読み出しは非常に高速

expire(有効期限)が設定できる

TOKYO TYRANT

永続性key-valueストア

データストレージはTokyo Cabinet

そのラッパーがTokyo Tyrant

-ネットワーク越しで使えるようになる

データ型によっては複雑な検索も可能

- B+treeDB,テーブルDB,...

mongoDB

ドキュメント指向データベース

-スキーマレス(毎回カラム名もすべて気ロック

-BSON(BinaryJSON)でデータを保持

JOINとトランザクション意外をサポート

- GROUP BYとかかなりトリッキーだけど...

更新性能が比較的高いのが特徴

Cassandra

列指向データベース

列単位でデータを保存している

大規模なデータの扱いが得意

データが増えても処理速度はそれほど低下しない

書き込みのスケーラビリティが高い

単一障害点(SPOF)がない

hadoop

GoogleのMapReduceのOSS

分散処理のフレームワーク

複数台サーバを使って処理を分散

-サーバを増やすだけで簡単にスケール

非リアルタイムな処理の救世主

Sharding ネットワーク越しにデータを分散させる

メリット

データがメモリに載りやすい

更新がスケール

バッチ処理が短時間で済む

Keyハッシュ値をサーバ台数で割り、そのあまりで保存するサーバを決めると簡単

サーバー台数が変わると(ry

RDBMSに負荷

ConsistentHashing

ハッシュ値でサーバーを決定

サーバ追加時に影響を受けるサーバーが少ない

RangePartitioning

mongoDBやHBaseで利用される

2007年はサーバ1、2008年はサーバ2

特定のサーバに負荷が集中

管理は別サーバ(Manager)

今後はどうなる?

NoSQLはRDBMSの弱みを補う

ただし、運用ノウハウがまだまだ少ない

トレードオフの理解も重要

-書き込みが高速ではあるが、同期しないのでエラー時にはデータが消える仕様だったり

MySQLをNoSQLのように使う事例も

-HandlerSocket Plugin

 

グループディスカッション

自己紹介

モバイルの話

Auのスマートフォンが月々8円

NoSQLってなんだろうね