うさぎ小屋(仮)

📅  2021-10-31

Go製のgraphQLサーバで導入するためのdataloaderのライブラリ比較


背景

golang製のgraphQLサーバでN+1問題が発生する際の対処法としてDataLoaderの導入を検討しました。

DataLoaderとは

DataLoaderは、データアクセス層が効率的にデータ取得を行うための「バッチ処理機能」と「キャッシュ機能」を抽象化したライブラリ。

要はまとめてとってくることでN+1が発生するgraphQLサーバの問題を解消しようという試み。

graphQLの問題以外にも使えます。

golang製のdataloaderライブラリ

https://github.com/vektah/dataloaden

  • gqlgenの作者の一人が作ったdataloader
  • star数:399(11/1時点)
  • gqlgenと同様コマンドでコードを生成してくれる
go run github.com/vektah/dataloaden UserLoader string *github.com/dataloaden/example.User
  • モデルの配置先とかがっつりコマンドで指定するので後から導入する場合は厳しいかもしれない。

https://github.com/graph-gophers/dataloader

  • 本家facebookのDataloaderのGolang実装
  • star数: 733(11/1時点)
  • dataloder自体はgraphQLのN+1問題以外でも使えるので、まとめたい処理でも柔軟に使えそう。

現時点で

実装さえ確定できてしまえばコマンドである程度生成できるdataloadenのほうが良さそうな感触です。