SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZineニュース

Supabase、GraphQLを用いてデータベースクエリを実行できるPostgreSQL拡張機能「pg_graphql 1.0」をリリース

  • X ポスト
  • このエントリーをはてなブックマークに追加

  • X ポスト
  • このエントリーをはてなブックマークに追加

 シンガポールのSupabaseは、GraphQLを用いてデータベースクエリを実行できるようにする、PostgreSQL拡張機能pg_graphqlの最新バージョンとなる「pg_graphql 1.0」の一般提供を、12月16日(現地時間)に開始した。

 pg_graphqlは、1GBのメモリを搭載したサーバで実行されている、Supabaseの無料枠において、可能な限り省メモリで動作することを目指して開発されている。

 開発の初期段階では、GraphQLをSQLに変換するための、C言語で記述されたパーサを備え、PostgRESTのRPC機能を使用して唯一のSQL関数であるgraphql.resolve(...)を、HTTP経由で公開するアプローチが採用された。

 データは、標準的な特権のないSQL関数を通じてアクセスされるので、Postgresロールのパーミッションと行レベルセキュリティ(RLS)ポリシーは、Postgresの場合とまったく同じように機能する。セキュリティモデルは一度定義すると、SQL、REST、Realtime、GraphQLなど、あらゆる場所に適用される。

 また、個別のプロセスを持たないため、ラウンドトリップ時間がなく、データベースのスキーマ検査は、キャッシュを必要とせず常に同期している。

 pg_graphqlのパフォーマンスは、データベースのサイズに比例し、ユーザーのパフォーマンスのニーズが増加した場合、データベースインスタンスをアップグレードすることで、外部プロセスを管理することなくGraphQLのスループットも向上させられる。

 なお、GraphQL APIを通じて、原子性、一貫性、独立性、永続性が保証されるため、マルチミューテーションGraphQLリクエストの一部が失敗した場合、リクエスト全体をロールバックしてデータベースを一貫した状態に保つことができる。

 pg_graphqlは、バージョン0.5.0から純粋なRustプロジェクトとして書き直されており、コードベースがより保守しやすい状態にリファクタリングされ、開発スピードが向上するとともに、パフォーマンスの大幅な向上を実現した。

 今回、リリースされたバージョン1.0の時点で、pg_graphqlの導入によるオーバーヘッドはSupabaseの無料枠が実行されているハードウェアにおいて、リクエストあたり300μ秒未満で、SQLから実行すると接続ごとに1秒あたり最大1060クエリが表示される。Auth+HTTPスタック全体では、無料利用枠は1秒あたり最大645のリクエストを処理可能であり、より大きなインスタンスではスタックが1秒あたり10000リクエスト以上を処理できる。

 「pg_graphql 1.0」は、安定性に関しては重要なマイルストーンではあるものの、機能を拡張する余地はまだ十分にあり、今後のロードマップで追加が求められている機能としては、

  • String型のためのstartsWithやネスト可能なand/orブロックといった拡張フィルタリングオプション
  • ユーザー定義関数のサポート
  • ビューのサポート

が挙げられる。また、長期的には移行用のAPI、supabase/wrappersによるサードパーティサービスとの統合、サブスクリプション用のスケーラブルなソリューションといった、より野心的な機能の実装も検討している。

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17068 2022/12/21 13:10

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング