筑波大学でデータベースの話をしてきました

f:id:kuenishi:20140201231755j:plain

筑波大学の川島先生に呼ばれて木、金と情報システム特別講義Dというやつに参加してきた。こんなことになるとは思っていなかったが、あろうことか講師側で呼ばれてしまい、思えば遠くへ来たものだと感慨深い。フリは「RiakとNoSQLの話をしてもらえたら」という非常に自由度の高い内容なので、せっかくなので僕の知っていることを全部詰め込んで話してやろうと思ったら10分延長してさらにスライド10枚分くらいを消化不良で終了という、みっともない感じになってしまった。かなり端折ってポイントだけ説明したので流れが分からず苦労した方も多いと思うが、まあ僕の性格なので許してほしい。データベースの講義をひと通り終えた院生レベルを想定してスライドを作ったので、もしかすると、わりと難しかったり分かりにくかったりするかもしれないので、わからないことがあったら適当に質問してください。

言いたかったことの流れを僕なりにまとめると

  • SQLが登場する前はみんなNoSQLデータベースだった
  • NoSQLのポイントは、スケーリングの問題、整合性、可用性が大きなみっつの問題
  • スケーリングは二通りの流儀がある
  • 整合性はアトミックブロードキャストプロトコルで頑張る
  • 整合性の話はふたつの文脈がある(トランザクションとレプリケーション)
  • 死活監視のデモでCrash Failure, Crash Recovery, Timing Failure, Silent Failureなどを体感
  • Paxosの説明に失敗
  • 可用性とCAP定理
  • ACIDとBASEは異なる概念なので混同どころか比較できない
  • データストアの分類 NoSQLではなくNoACIDがおもしろい
    • これはよい質問があってそのときはどう答えたのか覚えていないのだけど、今答えると、データベースは関係代数のデータモデルとトランザクション管理のふたつの部分から成っているのだけど、NoSQLは前者に対応するべきで、NoACID的なのは後者に対応すべき。なのだけど世間では混同されているのでここは注意した方がよい
  • それなりの分類軸のはなし
  • スキーマとかスキーマレスとか、ドキュメント指向とかカラム指向とか
    • 実は、ドキュメント指向DBはJSONだけでなくXMLもドキュメントとして扱うものがおおいのだけど、実はXMLは2階の正規モデルだかなんだか?になっていてふつうにSQLでクエリが書ける…という指摘をいただきまして、確かにドキュメント指向DBがアヤシいところのひとつではある。ただ、これは2000年代のデータベースのトレンドだったと記憶しているんだけど実は現実世界で役に立っているところをあまり見たことがない。
  • というところで、データベースを知る観点をひととおり説明して、Riakはこうしていますよという話をして終了。

整合性にはふたつの文脈がある話と、NoSQL/NoACIDの見方考え方はどうしてもぼくが伝えたかった話なので、昨今のNoSQL Buzzマーケティング*1に騙されないためにも必要で、それだけでも伝わってるとよいのであるが。

そのあと、全員の講義が終わったあとに佐藤さんと星野さんにCRDTのデモをちょろっとしてあとは終了。他の講義もとても濃く、こんな話を聞けるのは日本でここだけだなー、データベースの研究してる人沢山いるはずなのにおかしいなーと思った次第でありました。

この手の話、日本語の教科書などは当然あるはずもなく、まああえていうならGuide to Reliable Distributed Systems: Building High-Assurance Applications and Cloud-Hosted Services (Texts in Computer Science)がそれにあたるかなと思うのだけどまだちゃんと読んでないので、興味ある人はリスクを承知のうえで読んでみるとよいかもしれない。

筑波はとても距離的にも遠く、ネット上で元気なTKB勢をみてると遠い世界だなーと思っていたのだけどふつうの総合大学でキャピキャピしてる人も多かったし、おいしいレストランもあったしで正直TKB舐めてたのをとても見なおした。すいませんでした。

*1:ついに実用段階に入ったとか、Web Scale Databaseがどうたらとか、いろいろありますね