この本は一体?
2011 年 5 月 1 日の発売日に買って、ペラペラっと見て本棚の肥やしになってた。
200ページ弱で、字も大きいので、本気で取り組めば半日くらいで読み終わりそう。しかし、そこまでガッツリ取り組むほどの内容ではない。
なんで今更読もうと思ったかというと、先日「全文検索エンジンgroongaを囲む夕べ 3」というイベントの Ust を見て、「RDB じゃないデータストアって、かなりカジュアルに活用されるようになったなー。ナウいなー」とか思ったからでした。
Chapter 1
NoSQL と言っても、「No! SQL!」とか、そう言うんじゃなくて「Not only SQL」ですんで。
RDB(リレーショナルデータベース)の理論は 1969 年に提唱されたが、ハードウェア性能が足りて無くて実現出来なかった。
しばらくの間は階層型データベース(ディレクトリ構造みたいなあれ)、ネットワーク型データベース(重複を潰した階層型?)が主流でした。
その後、近年のハードウェアの進化で RDB が実用的なパフォーマンスで登場したようです。
RDB の強み
- データの一貫性
- 正規化
- SQL
- 実績やノウハウ
RDB の弱み
- 大量データの書き込み
- インデックス付きのテーブルへの更新
- スキーマ変更
- 即応性
じゃ、NoSQL はどうなん
とりあえず key, value みたいな単純な構造のデータを超大量に書き込むのが得意だね。
あと、単純だからこそ、ぶつ切りにして複数のサーバーに分散させて読み書きする事が出来たりする。
ぶつ切りに出来るってことは、サーバーを増やすだけで簡単にスケールアウトできるって事。これは有利ですね。
まぁ、キャッシュとかログとかに使うのが良いんじゃないかな。
NoSQL ってどんなのがあんの?
揮発性key-valueストア:memcached, (Redis)
要するにメモリー上に key, value のセットを置いて、高速にアクセスするよって事。
DB が落ちたらデータも消える。
永続性key-valueストア:Tokyo Tyrand, Flare, ROMA, (Redis)
ディスク上に key, value のセットを置いて、高速にアクセスするよって事。
DB が落ちても、再起動したらデータは残ってるよ。
ドキュメント指向データベース:MongoDB, CouchDB
スキーマレスが特徴。JSON とかみたいに、データ構造ごと保存して使う感じかね。
列指向データベース:Cassandra, HBase, HyperTable
特定のカラムだけを大量に取得したり、一括更新したりするのが得意なデータベース。
単一カラムだけ見れば key-value げなので、key-value と同じく、大量データの読み書きが得意っぽい。
ってな具合に分類出来るよ。
NoSQL はどういうときに使える?
基本的には RDB が何でも出来ちゃうから、出番は無い。
でも、とにかく速度、とか、とにかくスケーラビリティっていうようなケースが出てきたら、RDB を補完するために呼んであげてね。
とりあえずまとめ
RDB がデータのストックに向いているとすれば、NoSQL はフローの扱いに向いている感じなんでしょうね。
Chapter 2 からは実際に memcached やら Tokyo Tyrant、Redis, MongoDB, MySQL+HandlerSocket の実演です。
MySQL+HandlerSocket とかはちょっと面白そうな感じがする。
まぁ、次回がいつになるかは知りませんけれども。
ピンバック: [技術書つまみ食い] 『MongoDB イン・アクション』第一回 | UPEC Blog