前回は「NoSQLがRDBMSよりも大規模データに向く理由」と題し、NoSQLの1つのジャンルであるキー・バリューストアを例に、NoSQLとRDBMS(リレーショナルデータベース)の考え方の違いについて、取り上げました。
もちろん、NoSQLはキー・バリューストアだけではありませんので、前回の解説に当てはまらない製品や使い方もありますが、その点は、分かりやすさを優先したということでご理解いただきたいと思います。
第2回は、本連載のポリシーである「ビジネスの現場で実際に問題となること」の中から、前回に引き続き「お客様によく聞かれる話題」を取り上げ、「現場で使うNoSQL」の視点から説明したいと思います。
今回はこんな話題です。
「RDBMSより不便ですよね。どこで、どうやって使うの?」
――最も多く、特にIT技術者から受けることが多い質問です。
実は、そのまま会話していると、私もその通りだと思ってしまうことがよくあります。 なぜ「その通り」かというと…この質問を受けるケースには共通項があります。
皆さんまず間違いなく、頭の中でRDBMSを前提とした処理を組み立て、多くの場合、SQL文を使うイメージと対比しながら、不便だと見なしています。業務要件を聞き、瞬時にRDBMSを使用した処理を思い浮かべるその話し方は、まるで、本能による条件反射のようです。
これはいかにRDBMSが普及しているか、ということの証しともいえると思いますが一方で、技術者として「それでよいのか」とも思ってしまいます。
もちろん結果としてRDBMSで構築することがベストなシステムもありますから、それが認識として正しいこともあるでしょう。
でもちょっと待ってください。
RDBMSで構築したほうがよいかどうか、そこを検討しましたか?という問題提起をしたいのです。
確かにRDBMSで構築した方がよいシステムは多くあります。
あるNoSQLデータベースのベンダーが言うには、「少なくとも世の中にあるデータベースを使用したシステムのうち、3~4割はNoSQLで置き換え可能」とのことです。逆に言うと、「6割~7割はRDBMSで実装した方が便利」ということかもしれません。
この数字はあくまでもイメージであり、実際に世界中のシステムを調査した結果ではないので、正確ではないと思いますが、データベースを選択する際の1つの側面を的確に表わしているのではないでしょうか。
「RDBMSでも恐らく実装できるけれど、先入観を持たず考えれば、3~4割はRDBMS以外を採用した方が効果的かつ効率的なこともある」ということです。
話を「どこに使うの?」に戻しましょう。
繰り返しになりますが、NoSQLには様々なタイプがあります。いずれにも言えることは、RDBMSと比較して、特徴的なメリットを持っているということです。 そのメリットも大別すると3種類に集約されます。
- 性能
- 拡張性
- 非構造化データの取り扱い
多くのNoSQLプロダクトが有償、無償、様々な形で入手可能ですが、それらの発想の源流は1つです。
「RDBMSは、よくできた、非常に堅牢な仕組みではあるけれども、どうしても苦手なことがある。そこに対して無理やりRDBMSを使っている現状を何とかしたい」