データベースはテクノロジ産業の背骨だ。地味で目立たない存在だが、とても重要で、壊れたり改ざんされたりすると、たいへんなことになる。だから、データベースに関わる者は用心深い。これまで長年、企業目的で安心して使えるのはビッグスリー(Oracle、IBMのDB2、そしてたぶんSQL Server)だけ、とされていた。その後MySQLやPostgreSQLなどのオープンソース製品が、十分使えると認められた。そして最近の5年間で、データベースの界隈はおもしろくなってきた。
まず、歴史を回顧しよう。世紀のかわり目ごろにかけて、フォーマルに構造化・正規化され、SQLのさまざまな変種によってクェリされる関係データベースは、開発を助けるよりもむしろ妨害する、と見なす人びとがますます多くなった。その後の10年間で、さまざまな新しいデータベースが咲き乱れ、とりわけ、Webサイズの大きなデータ保存能力を必要とするGoogleは、BigTable、Megastore、Spannerなどの分散データベース・ソリューションを次々と作り出した。
さらにその間Apacheは、CassandraやHBase、そしてCouchDBを作り、ClustrixはMySQLをリプレースするプラグアンドプレイでスケーラブルなソリューション(NewSQL)を生み出し、Redisは多くのRails(などの)アプリケーションが必ず使う成分になった。そしてとりわけMongoDBは、批判の声も大きい中で、スタートアップたちのあいだでたいへんな人気者になった。とくに批判されたのは、ライトロック(write lock)をかけるためにデータベース全体にまたがる複数のライトの並行処理ができないことだったが、ありがたいことにその制約は近くかなり解消されるらしい。なお、ぼく自身はデベロッパとしてMongoDBを扱ったことがあるが、MongoDBのファンではない。
しかしこれらの、いわゆる“NoSQLデータベース”と呼ばれるデータベースの新しい波は、興味をそそることは確かだけれど、本当に真剣に取り上げているのは、一部の最先端のスタートアップや、ほんのひとにぎりの夢想家だけだ。データベースはきわめてミッションクリティカルな計算機資源だから、その安定性と安全性にすこしでも懸念があってはならない。データベースがデータとトランザクションの完全性を保証せず、いわゆるACIDなトランザクション“をサポートしないのなら、そのようなデータベースには、企業などで毎日実用システムを扱っているデータベース技術者は関心を持たない:
[ツイート訳: ACIDの保証は要らなくても、AとDを提供できないストレージエンジンは、最初から検討に値しないわね。]
[ツイート訳: ベンチマークしているときに糞して自分のデータを壊すストレージエンジンもあるわ。なんでベンチマークで壊れるのよ。]
MongoDBはACIDに対応していない。Cassandraもだ。Riakも、Redisも、等々々々。NoSQLデータベースは本質的にACID準拠でありえない、という説もあった。でもそれ嘘だ。GoogleのMegastoreは基本的にACIDであり、同社のSpannerはさらに良い。しかしMegastoreはGoogleの上でしか使えないから、あの独特のクセのあるApp Engineプラットホームで自分の全アプリケーションを構築する気でもないかぎり、採用は難しいだろう。
というわけで、2年前のTechCrunch Disruptのブースで”NoSQL, YesACID”(NoSQLだけどACID対応)というスローガンを掲げたFoundationDBという企業を見つけたときは、とても気になった。同社はACID完全対応1のキー-ヴァリュー(key-value)データベースを作って、その上に標準SQLのレイヤ(層)をかぶせる、という離れ業をやっていた。その同社が今週初め(米国時間12/10)に、FoundationDB 3.0のリリースを発表した。それはなんと、前のバージョンの25倍速いそうで、それは同社の協同ファウンダでCOOのNick Lavezzoの言葉では、データベースエンジンの“心臓と肺の移植手術を行った”からだそうだ。この新しいエンジンにより、毎秒1440万回のライト(write)が可能になった。
それは技術的にもすごいもので、同社のブログ記事によると、単純に毎秒1400万のライトではなく、“パブリッククラウドにある完全に順序化され完全なトランザクションをサポートしているデータベースで、100%マルチキーのクロスノードトランザクション(複数のノードにまたがるトランザクション)を行う場合の、毎秒1400万回のライトだ。別の言い方をすると、FoundationDBは利用料金1ペニーあたり、データベースのライトを360万回行う”、という。
企業のデータベースを何らかの形で担当している技術者は、この話を聞いて、関心を持たずにはいられないだろう。しかもこの速さなら、来たるべき物のインターネット(Internet of Things, IoT)の時代のレスポンス要請を無難にこなすだろう。その時代には、インターネットに接続された何十億ものデバイスが、大量のデータを24時間365日休みなく捉え続けるのだ。
しかもこれは、多くの競合他社たちの改良努力を刺激する。またそれによって非常に多くのユーザ企業が、OracleやDB2を使っている青銅器時代からそろそろ卒業すべきか、と思い始める。そして、ゆっくりと、すこしずつ、そして大胆に、新しい時代へと移行していく。その新しい時代には、デベロッパはシンプルなキー-ヴァリューのセマンティクスで楽(らく)ができ、ITは高速化された古典的なSQLでクェリでき、完全にACID化された分散トランザクションを同時一斉に行える。長期的には企業も人間も、今より良い生き方ができるはずだ。それまでの過渡期には、データベースの能力拡大、限界の克服に挑み続ける多くの無名のデータベース技術者たちの、努力の積み重ねがある。われわれには見えないところで彼らは日々、世界と社会に大きな貢献を提供している。
1ACIDの中のC、すなわち”consistency”(一貫性、整合性、無矛盾性) の説明がここにはない。たしかに無矛盾性は、それに比べると中世のピンの頭の上に乗れる天使の数に関する議論すらノックノック・ジョークの一種と思えてしまうぐらいの難解な話題だ。でも技術用語としてのそれは、結果的にそうであるという無矛盾性ではなくて、システムの動的構造が最初から明示的に、矛盾を許容しない、生成しない、という意味だ。
[原文へ]
(翻訳:iwatani(a.k.a. hiwa))