このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

データマイグレーション関手の解釈

スピヴァック理論スゲーッ、とずっと言い続けているが、簡単な命題に簡単な具体例を入れると、ソフトウェア的にはけっこうな発見だったり、が毎日続いている。

本編に書いたderivatorの道具立てと用語で考えるとして、スキーマ射uに伴う前層の引き戻し(逆像 inverse image)関手はバックワード(逆方向)データマイグレーション関手だが、その左随伴はホモロジカル順像関手、右随伴はコホモロジカル順像関手と呼ぶ。なんで(コ)ホモロジカルなんだ? って話はあるが、ともかくも、

となる。これらの言葉があながち無関係でもないことを見るには、Xを任意のスキーマとして、1を自明なスキーマとする。このとき、u = !X:X→1 が存在するが、このuに関して、引き戻しと左前送り、右前送りを考える。

引き戻しは、定数値をX全体に広げることで、基本データ型をすべてテーブルにコピーすること。個々のテーブルに依存しない普遍的なデータを、データベースワイドで考えることになる。

右前送りは、一般のデータベースを単なる1個の集合にすることだが、これは、F:X→Set という関手の極限を取ることと同じになる。Xのすべてのテーブルのジョインを作ることになる。別な解釈としては、データベースをX上のデータバンドル(データファイブレーション)と見て、セクションの空間を考える。このセクションはファイバーごとにテンデンバラバラじゃなくて、全体が接続(Xの射による平行移動)に対して一貫している。Xを空間とみたときの連続なセクションだが、位相は入ってないのでコヒーレントなセクションと呼ぼう。すると、右前送り Πu の像は、コヒーレントなセクション全体の集合となる。

セクションとしてコヒーレントでないものは意味がないので、単にセクションと言えばコヒーレントだとする。すると、Πu は大域セクションの集合となる。Γ(X, F) とも書いて、X上のF係数のセクション集合と呼ぶ。大域セクションの集合は、X上の0次のF係数コホモロジーを与える。それでコホモロジカルとなる。なるほど。

Πu = Γ(X, F) は、ある時点でのデータベース状態(スナップショット)を単一テーブルとしてダンプすることになる。これを単一テーブルとみして無邪気に変更すると滅茶苦茶になるので原則イミュータブルだが、アーカイブには使える。運用はできないが情報欠損はない。

一方の左前送りΣuだが、これは情報が欠損する。かなり潰れる。Πuの双対なので、F:X→Setの余極限になるが、別な見方として状態遷移グラフで考えると、ナビゲーション同値による商集合となる。ナビゲーション同値とは、ナビゲーション(リンク)で移れる状態は同値とみなす同値関係。これで同値類を作ると、だいたいは連結成分の集合となる。あーなるほど、0次のホモロジーが出てきた。

左前送りは、直和以外では関連する情報群を潰してしまうので使えないだろう。リンクが同値関係とみなせるときに、冗長性を排除するためには使えるかもしれない。データベースで主に使うのは、右前送り=コホモロジカル順像=ホモトピー極限=ジョイン構成 ということになる。

一番簡単な例を考えるだけでも、大域セクションと連結成分が出てくる。これは0次だが、高次のコホモロジーはどうやって作るのだろう? 単体的手法/ナーブといったところか? いずれにしても、今までとはリアリティが違う気がする。確かな具体例がある。