33
28

More than 3 years have passed since last update.

PostGraphileとは

Last updated at Posted at 2021-08-09

PostGraphile(ポストグラファイル)は、PostgreSQLのスキーマからGraphQL APIを構築するミドルウェアです。

PostGraphileのメリットは工数削減

PostgreSQLのデータベースをすでに使っているなら、PostGraphileを配置するだけで、GraphQLのAPIが手に入ります。一般的な開発方法でGraphQL APIを作ろうとすると、データベースに問い合わせするコードをApollo Serverなどを利用して、プログラマー自身が実装する必要があります。PostGraphileを使うと、そのようなバックエンドプログラミングの工数を大幅に削減でき、開発時間を節約できます。

PostGraphileの特徴

PostgreSQLのスキーマからGraphQL APIを自動生成

PostGraphileはPostgreSQLのスキーマから、GraphQL APIを自動生成します。なので、DBのスキーマとGraphQLのスキーマを二重で管理するといった手間はありません。

テーブルの関連も自動で認識されるので、GraphQLの醍醐味のひとつである、関連データをひとつのGQLで問い合わせるのもすぐにできます。

GraphQLのCRUDミューテーションも自動生成されます。また、特殊な処理を行うミューテーションを作りたい場合は、PostgreSQLのストアドプロシージャーを定義した上で、それをGraphQLのミューテーションにすることもできます。

データベーススキーマが変更した際には、GraphQL APIも自動的に新しいスキーマに追従するように作られています。

オープンソース

PostGraphileはオープンソースで開発されていて、誰でも無料で使えます。クラウドベンダーロックインのリスクがありません。PostGraphileをホスティングするサーバーは自分で選べます。

先読みでN+1問題を回避する

PostgreSQLをバックエンドにしたGraphQLは、しばしばN+1問題が起こります。この問題を回避するために、DataLoaderを使ってリクエストをバッチ処理する方法がありますが、DataLoaderは常に最適な方法ではありません。PostGraphileでも、DataLoaderが使えますが、より最適なSQLを出せるように先読み機能がPostGraphileにはあります。

PostGraphileのパフォーマンスは、改善が重ねられてきており、Prismaよりもかなり速くなっています

認可はPostgreSQLのロールベースgrantや行レベルセキュリティーを用いる

データベースをバックエンドにGraphQL APIを構築するミドルウェアは、PostGraphile以外にもHasuraなどがあります。それらと、PostGraphileの違いは、認可システムにPostgreSQLの認可機能をそのまま用いていることです。なので、認可についてミドルウェア独自のACLを学習する必要がありません。PostgreSQLの伝統的なロールベースgrantや、行レベルセキュリティーを学べばよく、これはデーターベース管理スキルとしても応用できるスキルになるので、学びが無駄になることが避けられます。

GraphQLのサブスクリプションに対応

チャットアプリやGoogle Docsのようなアプリでは、リアルタイムにデータベースの変更イベントを受信する必要があります。このようなリアルタイム要件を達成するために、GraphQLにはサブスクリプションがあります。PostGraphileはGraphQLのサブスクリプションに対応しています。PostgreSQLのLISTEN/NOTIFYを用いて実現しています。

起動方法がシンプル

PostGraphileはNPMパッケージとして提供されています。そのため、インストールが簡単でDockerなどの環境がなくとも起動できます。NPMがインストールされていれば、次のような1行のコマンドで起動できます:

npx postgraphile -c 'postgres://user:pass@localhost/mydb' --watch --enhance-graphiql --dynamic-json

もちろん、Docker上で起動することもできます。

プラグインによる拡張

PostGraphileにはプラグイン機構があります。必要に応じてGraphile Engineに機能を足せます。

つづき

33
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
28