NoSQLにはスキーマがないというわけではない。NoSQLにもスキーマはある(あるべきだ)。
だが、NoSQLでは柔軟なスキーマを利用でき、読み込み時(書き込み時ではなく)にスキーマを適用できる。DataStaxのScott Hirleman氏によれば、その効果は劇的だ。
NoSQL系のデータベースは、データが大きく、多様性が高いオンラインアプリケーションに適している。NoSQL系データベースは、(特に新たな機能を導入する際に)機敏に対応でき、より柔軟で(多様で複雑なデータタイプを保存できる)、コストの上昇や複雑さを避けつつ、規模を大きくすることができる。
機敏さ、柔軟性などの特長が役立つのは、GoogleやFacebookだけではない。主な大企業は、みなこういった特長を必要としている。
では、自社のアプリケーションにNoSQL系データベースを利用できるかどうかは、どのように判断すればよいのだろうか。
NoSQLを自社で使えるか
もちろん、世の中にたくさん出回っている評価記事を読むという方法はある。それらは大抵「独自の」調査であり、あるデータベースが優れているという結論が示されている。
たとえば、ある評価記事には、MongoDBは他のNoSQL系データベースに比べて、規模性が13倍高いと書かれている。一方別の記事では、Cassandraはさまざまなワークロードで、他のデータベースよりもはるかに高いパフォーマンスを示している。
しかし、評価記事はあまりよい情報源とは言えない。
Baron Schwarts氏が書いているように、データベースの成熟度(「実際の機能と細部まで配慮が行き届いているか」)を測り、それが自分の会社に適しているかどうかを知る最善の方法は、そのデータベースの成功談を徹底的に調べることだ。
成功談が重要なのは当然のことのように思えるが、商用データベースの世界では、うまくいった話の方が強調されやすい。しかし、Schwarts氏によれば、オープンソースの世界では必ずしもそうではないという。
成功談とユーザーのコミュニティは密接に関係している。もし、あらゆる問題を完璧に解決できるとされている魔法のデータベースと、広く利用されており、Googleで調べると多くの議論が出てくるデータベースのどちらかを選ぶ必要があれば、前者について力を入れて調べることはしない。私はネット上で、利用例や、実際に発生して解決された規模の問題の話、特徴、スクリプト、使用する際のヒントや小技などについて読みたいのだ。Stack Exchangeの議論やブログの記事をたくさん調べられることが望ましい。私の事例に近いと考えられるワークロードにそのデータベースを使っている人たちの例を知りたいし、他のワークロードについても調べたいし、利点や欠点についての話を聞きたい。
自社にとってのNoSQLの有効性を調べるもっとも簡単な方法は、とにかくよさそうなものをダウンロードして、使ってみることだ。「Hadoop」と組み合わせるなら「Hbase」を選ぶのが自然だろうし、Cassandraは、シンプルだが規模が大きい時には頼りになる。MongoDBはおそらく、もっともとっつきやすく、幅広いワークロードに利用できる。
これらのデータベースはみな、数千社から数万社の会社で実際に使われており、大抵は何らかのビッグデータの処理に利用されている。誰かがNoSQLが必要だと言っても信じてはいけない。実際にダウンロードしてみて、成功談(と失敗談)を読みあさり、自分に適しているかどうかを自分で判断してほしい。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。