(メモ) NoSQL じゃなくて RDB を使う理由
今のところ ぶいてく: KVS上でアプリを動作させるために必要なたった2つのこと とほぼ同意見です。
- トランザクションを使う必要がある
- 単一の主キー以外で検索したい
この2つが主要な理由だと思います。
NoSQL になくて RDB にある機能としては、他にもテーブルの Join などありますが、スキーマレスな NoSQL であれば、頑張って Join する以外にもいろいろやりようはありそうな気がします。
一方で、上に挙げた2つの機能を実装した NoSQL もあります。 Google の BigTable が一例です。 Amazon の DynamoDB にはトランザクションはありませんが、擬似的にトランザクションを実現することはできるようです。
BigTable, DynamoDB については別記事にまとめました。
- (メモ) BigTable のトランザクション・インデックスについて - weblog of key_amb
- (メモ) AWS DynamoDB のトランザクション・インデックスについて - weblog of key_amb
それ以外の NoSQL 製品でもこういった機能がサポートされているものもあります。
ので、これまで RDB を使わざるを得なかった部分でも NoSQL の採用は進んでいくのではないかな、と思いました。
上に挙げた2つの機能が満たされる NoSQL であれば、NoSQL の持つ高いスケーラビリティと柔軟性の恩恵が享受できるだろうと想像します。
余談
LINE が使っている HBase は BigTable の OSS 版ですね。