データベースサービスを提供しているCloudantと、オラクルの高速クエリ技術をHadoopに応用し多様なデータを統合的かつシンプルにアクセスできるようにしたOracle Big Data SQLを紹介します。
IBMがCloudantの買収を発表したのは2014年2月。このたびCloudantのCTOであるAdam Kocoloski氏(写真)が来日したため、あらためてCloudantについて解説いただきました。
CloudantはDBaaSのサービスプロバイダーです。「Apache CouchDB」をベースにしたNoSQL型データベース「Cloudant」をフルマネージ型のデータベースサービスとして提供しつつ、新機能や機能改善など開発も進めています。運用だけではなく、開発も進めている点が単なるデータベースのホスティングとは違います。
データベース「サービス」なので、エンドユーザーがその存在を意識することはありません。アプリケーションからは、主にHTTPでAPIリクエストを使ってデータベースにアクセスします。Webアプリケーションや特にモバイルアプリからAPIを呼び出すと、RDBMSよりハードルが低いところが好まれています。
実際にCloudantではスマートフォンのゲームアプリで実績があります。周知の通り、スマートフォンのゲームアプリは突然人気に火が付くことがあり、運営側としては急増するアクセスをさばくための性能や最適な監視のための労力が必要になります。データベース部分でサービスを利用すれば、そこは全部「お任せ」できるわけです。必要な時に拡張できて、すぐに利用可能――そうした「サービス」がお手軽に利用できる時代となってきました。
データベースとしての特徴は地理空間データが扱えること、「Apache Lucene」をベースとした全文検索機能、クエリが豊かなことなどが強みとして挙げられるそうです。運送会社がリアルタイムの集荷や配送リクエストとトラックの現在地から効率的な配送ルートを計算するのに使う事例もあります。
それからデータの分散化。拡張性とも関連しますが、データセンター間、あるいはサーバーと各種端末間でデータの差分を同期するなど、効率的なデータ同期を行うのも特徴といえるでしょう。
ちょっと面白いのは「SoftLayer」との関係です。SoftLayerはIBMが買収したクラウドサービスで、現在はIBMが提供するPaaS型開発環境「Bluemix」のインフラとしても使われています。実はCloudantはIBMがSoftLayerを買収する前からSoftLayerを使っていたそうです。CloudantとしてはSoftLayerがIBMの投資を受け、グローバル展開が加速したため、間接的に恩恵を受けています。
そのCloudantもIBMに買収されました。これによりSoftLayerだけではなくIBM製品との技術融合が進むと期待できます。すでにBluemix上でCloudantが利用できていますし、将来的にはDB2が実装した「BLU」(データウェアハウス)や「Big Insights」(Hadoop)と連携することになりそうです。Kocoloski氏の本音としては買収により「大きなメガホンを手に入れたよう」と笑っていました。知名度や営業力が違うからです。加えて「強力なリサーチ部門が持てた」ことも個人的には大きいそうです。
筆者としては「Couchbase」との違いが気になりました。CloudantもCouchbaseもApache CouchDBを由来にしたデータベースです。それぞれのどう違うのでしょうか。Kocoloski氏は「(混乱しているのは)あなただけではないですよ」と苦笑いして説明してくれました。
源流となるApache CouchDBはオープンソースプロジェクトであり、現在も開発が続いています。CouchbaseはCouchDBと「Membase」との技術の融合を目指して生まれた製品です。今ではAPIなどのインターフェースが、基となるApache CouchDBから変化しており、独自の進化を遂げています。
一方、Cloudantはどうか。「Cloudant」という名前を見るとCouchbaseよりも本家Apache CouchDBから離れていますが、互換性で見ればCloudantの方がより近い存在だそうです。「Apache CouchDBで動くものはCloudantでも動きます」(Kocoloski氏)。
当初、CloudantはApache CouchDBのforkという位置付けだったのですが、現在ではApache CouchDBと接近しています。例えば次期版となるApache CouchDB 2.0で盛り込まれる予定のクラスタリング機能はCloudantからApache CouchDBに寄贈される機能です。CloudantはDBaaSという重要な側面もあるので単純に比較はできませんが、現状では、データベースやAPIで比較するとApache CouchDBにプラスアルファを加えたものがCloudantである、といえます。
CloudantとCouchbaseは「似ているが異なる」存在です。モバイル端末向けのSDKで見ると両者には共通するものが多く、ユーザーの中にはCouchbaseのSDKでCloudantにアクセスするユーザーもいるそうです。ただし、これはリスキーでもあります。現時点では問題なく利用できたとしても、Couchbaseで仕様を変えたSDKを出し、それを気付かずに使えば不具合が起きてしまうかもしれないからです。日本でここまで複雑なことをするユーザーはいないとは思いますが、API的にはCloudantを使うのか、Couchbaseを使うのか、どちらかをはっきりと決めた方がいいでしょう。
目指す世界観もよく似ています。モバイル端末を想定したデータの分散化なんて特にそうです。2014年2月号でお伝えしたとおり、Couchbaseは「JSON Anywhere」を標ぼうし、サーバーでもモバイル端末でも一貫してJSONが使えることをアピールしています。
Cloudantも目指す姿は似ています。しかし「モバイル端末に格納されるデータはJSONか?(=Couchbaseと同じか?)」と問うと、そこは難しいところのようです。少なくとも言えるのは「CloudantのSDKは『iOS』と『Android』にネイティブオブジェクトでアクセスする」ようにできている、というところまでで、それがJSONであるか否かは微妙のようです。根底にある発想や目指す世界は似ているものの、技術的なアプローチは同じではないと考えればいいのかもしれません。そう考えると、親は同じなのに、それぞれの道を歩んでいく兄弟のようですね。
さて、Cloudantを使うエンジニアに求められるスキルはどうでしょうか。Kocoloski氏は「Cloudantへのアクセスはダイナミックなプログラミング言語、例えば『Ruby』『Python』『JavaScript』(Node.js)などを使うことが多い」と話していました。それもそのはず、Cloudantはデータベースとはいえサービスなので、データベースの運用管理者よりもWebサービスAPIを介してフロントエンドを開発する開発者に身近な存在といえます。
CouchbaseはMembaseと、CloudantはIBMとともに歩むようになりました。両者は拡張性、分散化、モバイルでの利用に注力するという共通項を持ちつつも、独自の進化を遂げているところです。どちらもIoT時代の技術をけん引する存在として期待しています。
Copyright © ITmedia, Inc. All Rights Reserved.