雑談日記エントリーです。雑多な話題の寄せ集めです。カン拡張のちゃんとした説明とかはありませんからアシカラズ。
タイトルにある3つの単語:
- データベース
- カン拡張
- 思い出
は、10月8日(日曜)にあった圏論食事会で話題になったことです。
内容:
圏論勉強会の系譜
圏論食事会に集まったメンバーは、
- 深川くん(a.k.a. ジョニー)
- たけをさん
- Kuwataくん、
- 日比野さん
- たんちけさん
と僕です。集まった名目は、「圏論勉強会100回達成を祝う」というものです。
「圏論勉強会」という名前の勉強会はいくつかあります。混乱をさけるために、主催者の名前から「たんちけ勉強会」としましょう。100回を迎えたのはたんちけ勉強会です。
たんちけ勉強会の発端は、竹内さんの『層・圏・トポス』を皆んなで読もう、とジョニーが呼びかけたことです。
この日付を見るに、たんちけ勉強会は2009年5月から始まったのでしょう。
勉強会テキストである『層・圏・トポス』について、2009年4月30日にコメントしています。
たんちけ勉強会が始まるずっと以前に、僕は、別な圏論勉強会に参加しています。
たんちけ勉強会開始の2年前、2007年5月ですね。主たる目的は量子ファイナンス工学の普及活動だと記憶してます(たけをさんにも確認済み)。
今日、2007年の記事を確認して驚いたことがあります。当該記事から次の記事へのリンクがあります。
当時、どうも僕はこのテ(↑)の話をしたようです。なんと、10年後の2007年に名古屋で話したネタが同じ(フロベニウス代数)だった、-- という事に気が付きました。ほんと進歩ないなー >自分
僕が2007年から顔を出すようになった圏論勉強会は、さかいさんが主催者エライ人なのでさかい勉強会と呼びましょう。さかい勉強会は、「さかいさんが学部学生の頃から始まった」とたけをさんから聞きました。
僕のこのブログ内での言及は2005年3月にあります(「なんと、圏論記事への言及が」)。さかいさんの「ヒビルテ」のアーカイブを探すと2005年10月に「第十回圏論勉強会」への言及があります。ということは、2004年か2005年初頭にさかい勉強会は始まったのでしょう。
さかいさんは、2002年(学部2年)の時点で、「圏論への誘い」なんて発表をしています。今から15年前です!
当時の少年たちは大人になり、当時既にオッサンだった僕はジイサンになりました。
データベースの話
割と最近、「奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか」という記事を書きました。このネタも、実は圏論食事会で話題にしたものです。そのとき話したことは:
- zhanponさんのQiita記事をみつけた。
- トンデモ本を期待して奥野本を買った。
- 残念! まともな本だった。
- が、zhanponさんの気持ち(「奥野さん、イイカゲンなこと書き過ぎ」)はよく分かる。
- でも、冷静になると擁護できる点もある。
- 2章はダメだが、2章を修正しても後で論理を使ってないので、その事のほうがダメだと思う。
と、口頭で言った内容をまとめたのがくだんの記事です。
「どこがダメなのか」記事を書いた後で、クリス・デイト(C.J. Date)の本『データベース実践講義 ―エンジニアのためのリレーショナル理論』も眺めてみたんですけど、どうも純粋リレーション主義者とでも呼ぶべき人々がいるようです。
僕は、純粋主義が心情的に嫌いなんですけど、理屈からいっても純粋リレーション主義は全然ダメだと思う。「どこがダメなのか」はおいおい書いていくつもりですが、ザックリ言えば、徳目主義・教条主義に堕していて、破綻に目をつむり、自己欺瞞のなかで閉塞しています。
奥野さんは、「ER図とリレーショナルモデルは何の関係もありません」と言い、クリス・デイトもER図を嫌っているようです。この事から、純粋リレーション主義者は、ER図も拒否していると気付きました -- SQL標準規格とSQL準拠製品に批判的なのは昔から知ってました。批判は全然いいのだけど、近隣分野との境界線を引いて、その境界の内側に篭もるのはどうなのよ?
データベースに対する新しい定式化としてスピヴァックの関手データモデルがあります。スピヴァックは、リレーショナルデータベースの言葉を使って説明しようと試みているので、「関手データモデルはリレーショナルモデルと相性がいい」と僕は思い込んでいました。しかし、改めてスピヴァック理論を眺めてみると、ER図の圏論的定式化の形になっています。そして、使っている言葉はSQLの用語(テーブル、カラム)です。
となると、「ER図は嫌い、SQLはけしからん」と言っている純粋リレーション主義者は、関手データモデルをハナから相手にしないでしょう。関手データモデルは、リレーショナルモデルと対立するものではなくて、むしろ、クリーンな再定式化と拡張のチャンスを与えるものなんだけど。
データベースとカン拡張
スピヴァックは当初、関手データモデルの説明に、圏論的概念・用語を出来るだけ使わないようにしていました。データベースコミュニティに受け入れられやすいようにだと思います。しかし一方で、背後にある圏論的構造が見えにくくなる弊害もありました。
例えばスピヴァックは、実際のデータの圏として集合圏Setだけを使っています。僕は、なんで関係圏Relを使わないのか疑問でした。どうも、関係の代わりに集合圏のスパンを使えばいいだろう、ということらしいです。あるいは、ベキ集合モナドによるクライスリ圏を使ったクライスリ・データベースを使ってもいいでしょう。
「圏論的概念・用語を出来るだけ使わない」なら、カン拡張なんて持ち出してはダメです。実際、以前のスピヴァックの論文にカン拡張はほとんど出てきません(最近の代数データベース論では平気でカン拡張使ってますが)。これは、言葉を出してないだけで、当初からカン拡張は本質的に使っています。
スピヴァックの言うスキーマとは、およそER図のことです。スキーマSのインスタンスとは、ER図のノードに集合、辺に写像を対応付ける写像(圏論用語の関手)です。スキーマSからスキーマTへのスキーマ射とは、およそ(有向グラフと考えた)ER図の埋め込み*1のことです。
[追記]スピヴァックのスキーマと、リレーショナルデータベース(RDB)におけるスキーマは、雰囲気は似てますが別物です。RDBスキーマは、どちらかと言うとスピヴァックのインスタンスです。もっと正確に言うと、部分的に定義されたインスタンス -- 部分インスタンス(partial instance)とでも呼ぶべきものです。このへんの齟齬も、誤解や混乱を招く原因となります。困ったもんだ。[/追記]
J:S→T がスキーマ射(関手)で、G:S→Set がインスタンス(これも関手)のとき、S上のインスタンスGを、スキーマ射Jに沿って拡張したい時がしばしばあります。既存データベースへの問い合わせ結果の構成や、スキーマ変更にともなうデータ移行に必要なのです。
スキーマ射Jに沿ってインスタンスGをうまいこと拡張した新しいインスタンスを JG:T→Set とします。「うまいこと」の意味は、次の同型が成立することです。ここで、'*'は図式順の関手の結合、[-, -]は関手圏を表します。
- [S, Set](J*F, G) [T, Set](F, JG)
JGは、Gの(Jに沿った)右カン拡張(right Kan extension)と呼びます。上の同型(カン対応(Kan bijection))は、Jによる前結合(pre-composition)とJに沿った右カン拡張が随伴ペアになることを示しています。今使った記号法などは次の記事を参照してください。
右カン拡張の双対である左カン拡張も、使う機会は少ないものの、データベース操作に実際に使います。左右のカン拡張は、関手データモデル(あるいは、その拡張である代数データベース)における重要なデータベース操作なのです。
カン拡張祭り
たんちけ勉強会の100回記念(なのか?)で、カン拡張祭りが企画されています。企画があるという以上の情報を僕は知りません。開催が決まれば、@tanchikeや@hiroki_fあたりで告知があると思います。
"All Concepts are Kan Extensions"は有名な言葉で、カン拡張は、すべての普遍的構成を生み出す母のように見なされています。僕自身はシリアスにカン拡張を使う機会がなかったので、カン拡張のご利益をうまく説明できないのですが、右も左も(だいた極限と余極限に相当する)カン拡張がデータベース操作として出てくることは、カン拡張が普遍的である証左でしょう。
*1:埋め込みでない、一般の関手も考えますが、埋め込みの場合が簡単です。