SQLチャレンジ!ワンクエリで実現するシリアライズの世界(スクラップ)

一般的なDBをシリアル化する手順は以下の通り。
・DBMS通信
・カラムマッピング
・シリアライズ
構造によってはこれを複数回やる必要があり、N+1問題などを引き起こす。
このフローを
・DBMS通信1回
で完了させたら世界はどうなってしまうのか?
そういう妄想の話

課題
・そんなこと出来るのか?
出来る。可能性は非常に高い。
PostgresのJSON関数である程度表現できることは確認した。ただ、かなり難しく保守性は最悪と言える。
・型安全はどうなるのか?
従来はクラスを経由するので型安全は高度に保証される。今回のアプローチではstringが返却されるので型安全と言う点では劣る。しかしそれは単体テストで、検証可能だと思う。
例えばDBから返却したJSONをクラスにマッピング( デシリアライズ)してみたら検証可能。

というわけで保守性さえなんとかなれば現実的。
これはCarbunqleXとか言うSQLエディタの事例としてとても価値があると見ている。
前段にも書いているのだけど、単純なシリアライズなら成功している。
複雑なものもなんとなくゴールが見えた。
あとは汎化するだけの状態。

スクラップなので時系列無視して書くが、
シリアライズにおいてはカラムマッピングは完全にオーバーヘッドだろう。
クラスに突っ込んでJSONにいれるだけなので。
とは言ってもデシリアライズは、どこかで発生するのでクラス定義が要らないとか、そういうことではない。

これを語るにはまずはJSON関数の手組みから話す必要があるとかないとか

一旦全部CTEにしろ
親はそのまま使え
子はCTEに持っていけ、親も連れて行け
子の子は、子からみたら親だ、親は連れて行け
C#は子から順に親に遡れ
SQLは親から順に下れ
ただし、ルートは別だ、ルートは最後だ