集合演算
2025/5/29 23:21:00
SQLのクエリって文字列だけど、クエリ自体を集合として操作可能にして結合とかの操作ができたら便利そう。
クエリAとクエリBを結合したクエリCを実行すると、クエリAの結果とクエリBの結果を結合した結果が得られる、みたいなことがしたい。
これができると何がうれしいかというと、レポジトリを作った際にイケてるインターフェースが作れる。
例えばUserRepositoryを考えたときに、
userRepository
.findByName()
.findByAge()
.retrieve()
みたいなことができる。
ここではfindByNameやfindByAgeを実行した際にはDBとの通信は行わず、クエリの合成(クエリの積集合の作成)だけがされる。
さいごのretrieveで作成されたクエリが実行されてDBからデータが取り出される。
といいなぁ。
SQLって書いちゃったけど、RDB・NoSQL・GraphQLなどのクエリに対して集合演算を定義できれば、それらを統一的に取り扱えるので、簡単に置き換え可能になるだろうという目論見もある。
Repositoryパターンが脳に染みてきて、集合演算できるインターフェースを作ればオブジェクト指向の世界でリレーショナルやぁとか思ったんだけど、それLINQちゃうか。