読者です 読者をやめる 読者になる 読者になる

システム系論文輪読会で話してきた #pfisystemreading

先週の金曜日に、PFIで開催されたシステム系論文輪読会で話してきた。いい加減に積んであるものが多すぎて、こういった機会に便乗して自分を追い込まないと何もできないからである。


第2回 システム系論文輪読会 - connpass

僕が読んで解説したのは Peter Bailis et al., "Coordination-Avoiding Database Systems" VLDB 2015, to appear である。この論文がどれだけすごいものであるかという話についてはぼくのレジュメを参照いただくとして…この論文は神林さんに教えてもらったのだけど、VLDBやBailisのグループは要チェックだということを再確認した。この論文、なかに分散システムの証明が書いてあったりするのだけど、21回も続いている分散合意本読書会で鍛えた証明の読解力で割とスラスラとノリを理解できたので感動した。というわけで合意本を読めば…

Fault-Tolerant Agreement in Synchronous Message-Passing Systems (Synthesis Lectures on Distributed Computing Theory)

Fault-Tolerant Agreement in Synchronous Message-Passing Systems (Synthesis Lectures on Distributed Computing Theory)

といいたいところであるが、この本は一人で読み進めることは素人には不可能なのでなかなかキビシイ。ちなみに、わりとついてきた地力を使えば、CAP定理の証明 [1] くらいであれば、サクサクと読めるようになったりはする。

話を戻すと、この論文の内容はともかくとして、この論文がどうすごいのかを書いておこう、と思ったけど上のGistにだいたい書いてあった。クラウドとか分散KVSとか言ってるひとたち、この論文読まないとだめだよ。あとサーベイとしても非常によくできていて(各方面の歴史たちが共著者になっているので、歴史的に漏れがほとんどない)、参考文献リストの長さに顔が青くなること必至である。

まあ、流れでいうと、NoSQL的にトランザクションとかACIDとかレプリケーションをそこそこで割り切って作ったデータベースのよいところと、RDBMSとか2PCとかデータの整合性をキッチリキッチリやってきた流れがここで融合しているのがすごいのである。市場にも「トランザクションできるNoSQLだぜー」とか高速なRDBMSだぜーみたいな話は死ぬほどあるのだけど、どれもこれまでのデータベースの研究と製品の歴史を無視したマーケティングなので無視したらよい。製品にして使ったところでどこかでハマるのが原理的にわかっているので(ハマらないことが証明された設計になっているのであれば、それは論文にして出した方がマーケティングとしても効果が高い)。MongoDBやMySQLのようなタイプのレプリケーションをやっていると、ネットワーク分断、耐障害性、スケーラビリティのどこかで問題が出てくるし、CassandraやRiakのような設計でレプリケーションをやっているとスケーラビリティや耐障害性が十分であっても、整合性に限界があったりアプリケーション的なユースケースが限られたりする。

これはひとつのパラダイムでいろいろなデータベースの問題を解いて全てのユースケースをカバーできないということの証左であるわけだが、このCoordination Avoidingなデータベースでは、ひとつのデータベースで、ユースケース毎に理論的な限界をギリギリまで詰められることを証明した。具体的には、整合性を保ちつつスケーラビリティや分断耐性を追うためのユースケース分析をして、それをうまく使い分ける提案をしたわけだ。I-Confluenceの概念とその証明でだんだんテンションは上がって、TPC-Cのアクセスパターン分析でこの論文は最高に盛り上がる。

しかし原理の解説やTPC-Cの分析と実験は非常に興味深いのだけど、実装や設計の話がほとんどなくて、これじゃあちょっと再現とか実装してテストしてみるというわけにはいかなそうなのが難点である。きっとベンチャーを立ち上げるのだろう。

個人的には、この論文の実装が世にでるか出ないかのタイミングで「ひとつの用途にひとつのデータストア」の時代が終わるのではないかと予想している。今でも、AWSに入ってる各種データストアや、Orchestrate.ioなどが登場しており、データベースを個別にデプロイして使い分けるのではなく、複数のユースケースをなるべくシンプルなサービスにまとめて使い分けるという形が主流になっていくのではないか。手前味噌であるが、Riak も2.0のリリースでその第一歩を踏み出している

  • [1] Nancy Lynch and Seth Gilbert, “Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services”, ACM SIGACT News, Volume 33 Issue 2 (2002), pg. 51-59.