2012年1月2日月曜日

NoSQL:現状のまとめ

これまでいくつかのNoSQLを試してきましたが、この業界”栄枯盛衰”が激しく、競争が激しいです。ちょっと現状での状況をまとめておきます。


  1. CouchDB:ドキュメント指向という考え方で、今人気です。インターフェースもHTTPを持っており、非常に使いやすいと評判です。
  2. Redis:有名なオンメモリDBのmemcachedをファイルに永続化する機能を持っています。(以前、気に入っていたTTとかKTと考え方は同じです)インターフェースがtelnetしかないのが玉にキズですが、爆速だとのこと。(ただクライアントにjavaが用意されているのがちょっと理解しにくいですが。確かに今時のjavaは速いんですが、時にGC入ってしまって制御できないのが使いにくいんですが。)
  3. Cassandra:Facebookで開発され公開された有名なjavaで作成されたDBです。とにかくスケールするのが簡単で、巨大なDBもなんなく構築できます。インターフェースには、これまた特別に開発したthriftも開発がしやすく、魅力的です。
  4. HBase:Facebookのメッセージシステムに使われているそうです。インターフェースにはHTTP/thriftが用意されており、巨大テーブルが使えるのが特徴だとか。
  5. LevelDB:googleの公開しているnoSQLです。コンセプトはRedisと同じで、とにかく高速なのと、chrome内に内蔵させているSQLiteの入れ替えを考えているそうです。(ファイルへのデータの永続化に、高速圧縮ルーチン"Snappy"を使っているのも特徴です)昔、mixiでTTやKTを開発した方が今はgoogleに入社していますが、特にこれにはタッチしていないようですが、速度比較にはKTが使わています)

基本的に高速性をうたっているため、memcachedのファイル永続化をしているのがほとんどですが、なにせファイルベースだと、1ファイルのサイズの大きさにDBの大きさが制約されてしまう制限ができてしまいます。(だから速いんですが)

RDBMSだとデータベース管理者がどうしても必要になります。(ログの整理とか、バックアップなど時間のかかる手間がかかります)一方、NoSQLは手間がかからないかといえば、基本的にバックアップはマシンを増やして、そちらにコピーを常時作るという考え方なので、システムをスケールするのにかかる手間がどうかという話になります。ただそれでも、とにかく巨大なDB(TB級)が欲しいとなるとCassandraに行き着くんでしょうか。でも、結局技術の移り変わりが激しいんで、データベース管理者は減らせても、システム開発者は必要になるので、DBを「道具として」簡単に使ってシステム組みたい場合は従来のMySQLみたいなものの方で妥協してしまいますね。

0 件のコメント:

コメントを投稿