Peter Bell氏が現在のNoSQLのトレンドを紹介している。NoSQLは高速進化しているデータベースの分野でさまざまなソリューションを提供する。氏は自身が創立したPragmatic Learningでトレーナーを努め、GitHubのトレーニングチームのメンバでもあり、開発者の採用と管理を支援する企業Speak Geekの創業者でもある。定期的にMongoDB、Neo4j、RedisのようなNoSQLについてトレーニングとプレゼンを行っており、MongoDBマスターでもある。
InfoQ: ここ数年で新しいNoSQLは新しいソリューションだけに適用できる二次的な技術から、多くのアプリケーションの標準的な技術スタックへと進化しました。何がこのような高速な進化を実現したのでしょうか。
NoSQLを推進したのは3つの力です。まず、需要です。ここ数年のインターネットとモバイルトラフィックの興隆によって、多くの企業が数年前には考えられなかったスケールに対処しています。従来のリレーショナルデータベースは簡単にノードをまたいでスケーリングできるように設計されていません。したがって、NoSQLは素早く簡単に、そしてコスト効率がよい方法でスケールしたい企業で人気になったのです。
そして可用性です。ここ数年でオープンソースソフトウエアは大変成熟しました。現在、成熟したオープンソースのNoSQLが多く利用できます。企業は自身のニーズに合ったデータベースを選択できるのです。
そして、NoSQLがトレンディだということです。私は関係データベースのほうが適切なアプリケーションにもNoSQLが使われている場合があると思います。でも、NoSQLデータベースが新奇なものから、メインストリームへ、そして、ありふれたものになるにつれて、開発者が適切な選択をするようになると願っています。
InfoQ: 最近、比較的新しいベンダが参入してきて、NewSQLという名称で呼ばれているようです(これらのベンダ以外では使われていない名称のようですが)。NewSQLとは何なのでしょう。NewSQLはトランザクショナルなデータベースの保証を要求する企業ユーザの間で、非関係データベースの利用を増やすでしょうか。
NewSQLという言葉はNuoDBのような簡単にノードをまたいでスケールできる能力とSQLのサポートを併せ持つモダンなデータベースに対して使われます。例えば、ひとつのサーバでは処理できないロードを抱えてしまいながらも、SQLに対応していないデータベースに対してプログラミングできるように開発者を再教育するのは避けたい場合、NewSQLは検討に値するでしょう。今はNewSQL革命の始まりのときだと思います。ただし、あるケースではNoSQLのほうが関係モデルよりも優れた抽象を提供するのは間違いない一方で、プログラミングしやすいスケーラブルなデータベースが適している場合もあります。
InfoQ: Neo4Jのようなグラフデータベースはノード間の関連をモデル化するグラフ理論に基づいています。これは複雑なように思えますが、どのような利点があるのでしょうか。この分野はメインストリームに受け入れられる余地はありますか。
世界はグラフです。異なる役割の複数のグループに属するユーザのファイルのアクセス権を管理する場合、どの友人がデリーのレストランをおすすめしてくれるか、上海からロンドンへの荷物湯輸送の最適な経路の計算、いずれの場合もドメインをモデル化するのにグラフは最適です。eコマースからコンテンツ管理、バイオインフォマティクスからレコメンデーションまで、グラフは既存のデータから多くの価値を引き出します。例えば、“Kevin Baconの6次”をSQLを使って求めることを考えてください。cypher (Neo4jで利用されるSQLに似たグラフ問い合わせ言語)を使えば簡単です。
Facebookは独自のグラフ検索を立ち上げました。Googleはナレッジグラフを利用して検索結果を改善しています。グラフデータベースはスタートアップにとっても大企業にとっても最も興味深いイノベーションの源泉になりつつあると思います。初めてグラフデータベースを使ったとき、私はソーシャルアプリケーションのようなニッチな分野でしか使えないと思いました(Glassdoorはneo4jを使っています)。しかし、neo4jを使うにつれてグラフベースのモデルを活用できない分野はほとんどないということに思い至りました。ストレージソリューションにおいて、グラフが第一のモデリングパラダイムになるとは思いませんが、幅広い分野で利用できると思います。
InfoQ: Redisは"先進的なkey-value"ストアと自称しています。しかし、あなたは単なるkey-valueストア以上のものだと指摘しているようですね。それはどういう意味ですか。
Redisはkey:valueストア(ドキュメント、グラフ、列指向ではなく)ですが、単なるキーとバリューではありません。Redisはリスト、セット、ソートセット、pub:sub機能を提供し、幅広い問題を解決できます。さらにインメモリソリューションであるためスナップショットやログをディスクに残せます。Redisは一般用途向けではありませんが、データ永続化ソリューションについて何らかの意思決定をするなら、どんなものか見てみる価値はあります。素晴らしい機能を備えていますので。
InfoQ: 知っておくべきほかのトレンドはありますか。
NoSQL後の次の大きなトレンドは不変データストアです。ここ数年で、複数のサーバをまたがった効率的なスケーリング処理における関数型プログラミングの価値について多くの議論がされてきました。共有の変化しやすい状態を最小限にすることで関数型プログラミングモデルは、オブジェクト指向プログラミングを苦しめたデットロックの問題を回避したのです。
しかし、スケーリングにとって共有の変化しやすい状態が問題であれば、データベースが変化しやすいをなぜ許すのでしょう。この点について考えると、データベースは巨大な共有の変化しやすいデータストア(サーバ間で共有されるグローバル変数のコレクションににています)にすぎないことがわかります。多くの企業(Twitterを含む)が不変のデータストアの性質を検証しています。新しい事実は記録できるものの、既に記録したデータは変更もできなければ削除もできないデータベースです。このトレンドを追いかけるのにちょうどいいのはDatomicでしょう。これはClojureの作者であるRich Hickey氏が作っているデータストアです。