このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

データベースとカン拡張と思い出

雑談日記エントリーです。雑多な話題の寄せ集めです。カン拡張のちゃんとした説明とかはありませんからアシカラズ。

タイトルにある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年前です!

当時の少年たちは大人になり、当時既にオッサンだった僕はジイサンになりました。

データベースの話

割と最近、「奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか」という記事を書きました。このネタも、実は圏論食事会で話題にしたものです。そのとき話したことは:

  1. zhanponさんのQiita記事をみつけた。
  2. トンデモ本を期待して奥野本を買った。
  3. 残念! まともな本だった。
  4. が、zhanponさんの気持ち(「奥野さん、イイカゲンなこと書き過ぎ」)はよく分かる。
  5. でも、冷静になると擁護できる点もある。
  6. 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:STスキーマ射(関手)で、G:SSetインスタンス(これも関手)のとき、S上のインスタンスGを、スキーマ射Jに沿って拡張したい時がしばしばあります。既存データベースへの問い合わせ結果の構成や、スキーマ変更にともなうデータ移行に必要なのです。

スキーマ射Jに沿ってインスタンスGをうまいこと拡張した新しいインスタンスJG:TSet とします。「うまいこと」の意味は、次の同型が成立することです。ここで、'*'は図式順の関手の結合、[-, -]は関手圏を表します。

  • [S, Set](J*F, G) \stackrel{\sim}{=} [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:埋め込みでない、一般の関手も考えますが、埋め込みの場合が簡単です。