pg_graphql is een open source Postgres-extensie die wordt onderhouden door Supabase – het is geen uitvinding van Aurabase. Wat we hebben gebouwd is de native en opt-in-integratie in het platform: een vakje dat per project moet worden aangevinkt, geen service die moet worden geleverd. Dit bericht beschrijft de daadwerkelijke architectuur, laat zien hoe je deze kunt inschakelen en vergelijkt eerlijk de afwegingen met Hasura en PostGraphile v5.
pg_graphqlvoert uit in Postgres als een SQL-extensie - er is geen aparte GraphQL-server om te implementeren, in tegenstelling tot Hasura en PostGraphile.- De wrapperfunctie van Aurabase is
SECURITY INVOKER: uw RLS-beleid wordt automatisch toegepast, zonder dat er een tweede toestemmingssysteem parallel moet worden onderhouden. - Alleen opt-in-activering per project –
aura projects graphql-enableof de Studio – wordt nooit standaard geactiveerd, voor geen enkel project. - Hasura heeft zijn focus in juni 2025 officieel opnieuw gericht op PromptQL en AI-agents, zonder zijn GraphQL-engine op te geven.
- PostGraphile v5 werd algemeen beschikbaar op 24 maart 2026 – een directe en actieve concurrent, geen sluimerend project.
pg_graphql, in één zin
pg_graphql onderzoekt uw SQL-schema en genereert een GraphQL-schema dat voldoet aan de Relay-conventie: <table>Collection, edges, node, filters op kolomtype, paginering op cursor. Geen SDL om handmatig te schrijven of te onderhouden: het GraphQL-schema volgt uw Postgres-schema.
Het punt dat van belang is voor de architectuur: deze schemagenerator leeft in de database, als een SQL-functie, niet als een HTTP-proces ernaast. Aurabase pint de 1.6.1 versie van de extensie (uitgebracht op 7 mei 2026) in de Postgres-image — hetzelfde officiële .deb-pakket zoals gedistribueerd door Supabase. Het wordt zowel op het gedeelde cluster als op de speciale Postgres-instanties geïnstalleerd.
Als u van Supabase komt, waar pg_graphql al lange tijd native is ingeschakeld, zal de logica u bekend voorkomen. Onze gedetailleerde vergelijking en onze migratiegids behandelen de rest van het RLS-schema en het beleid, die hetzelfde blijven.
Wat is er veranderd bij Hasura en PostGraphile
Geen van de twee historische concurrenten van “instant GraphQL op Postgres” is verdwenen. Hun positionering is veranderd, en een bijgewerkt artikel zou dat moeten weerspiegelen in plaats van de toestand van twee jaar geleden te citeren.
Hasura publiceerde in juni 2025 een bericht met de expliciete titel, “From GraphQL to PromptQL: A New Chapter Begins”, ondertekend door mede-oprichter Tanmai Gopal. De boodschap: het bedrijf heroriënteert zijn roadmap op PromptQL, een laag voor gegevenstoegang die is ontworpen voor AI-agenten. De GraphQL-engine is niet verwijderd - Hasura's startpagina presenteert deze nog steeds als "door de strijd getest" - maar het is niet langer het prioriteitsbericht.
PostGraphiledeed op zijn beurt het tegenovergestelde. De versie 5, die sinds 2023 in ontwikkeling is in de vorm van bèta's, werd algemeen beschikbaar op 24 maart 2026, met een nieuwe engine voor queryplanning genaamd Grafast. Dit is geen project dat opraakt: de laatste release, 5.1.4, dateert van 5 augustus 2026. Het npm-pakket telde alleen al in de week van 16 tot 22 augustus 2026 119.230 downloads (npm-register, geraadpleegd op 23 augustus 2026).
Praktisch gevolg: de echte lege ruimte is niet “GraphQL op Postgres, niemand raakt het aan” – het is het specifieke GraphQL zero-config slot, geactiveerd in één opdracht, zonder dat er een service hoeft te worden gehost. Hasura wijkt ervan af door strategische keuze; PostGraphile heeft zich er nooit op gericht, het model blijft “Node.js-bibliotheek om jezelf te integreren”.
Waar elke oplossing daadwerkelijk om draait
Het verschil dat al het andere structureert – bedrijfskosten, aanvalsoppervlak, latentie – is waar de GraphQL-engine draait.
| Waar het draait | SQL-extensie, in Postgres | Aparte GraphQL-server (Go), vóór Postgres | Node.js-bibliotheek/server, vóór Postgres |
|---|---|---|---|
| Implementatie vereist | Geen — geactiveerd door een projectvlag | Ja: host en schaal de Hasura-engine | Ja: host het Node-proces of integreer het met uw server |
| Machtigingsmodel | Legacy Postgres RLS (VEILIGHEIDSINVOKER) | Hasura's eigen machtigingssysteem, per rol/tabel | RLS Postgres via pgSettings – ook native delegatie |
| Standaard introspectie | Uitgeschakeld | Afhankelijk van de motorconfiguratie | Afhankelijk van de serverconfiguratie |
| Positionering 2026 | Native optie van een Postgres BaaS | Sinds juni 2025 opnieuw gericht op PromptQL/IA | GA v5 sinds maart 2026, actief project |
| AURABAS | HASURA | POSTGRAFISCHE V5 |
Om eerlijk te zijn: PostGraphile delegeert ook autorisatie aan Postgres via pgSettings en het wisselen van rollen - native RLS is niet exclusief voor pg_graphql. Wat anders blijft, is wie deze bridge host en configureert: bij PostGraphile ben jij het; bij Aurabase is dit al gedaan.
Hoe Aurabase pg_graphql activeert voor een project
Activering is opt-in, per project, en gereserveerd voor Postgres-engineprojecten - een MongoDB-project weigert het verzoek (GRAPHQL_UNSUPPORTED_ENGINE), waarbij pg_graphql een Postgres-extensie is zonder equivalent op de andere engine.
Via de CLI of door direct het beheerplan op te roepen:
Aan de serverzijde voert de aanroep een graphql_enable-taak uit die de provisioner in één enkele transactie uitvoert: installatie van de extensie, creatie van de graphql()-functie in uw schema, GRANTs voor de applicatierollen. Als een stap mislukt, wordt alles geannuleerd. Er wordt nooit een wrapper halverwege geïnstalleerd, en graphql_enabled wordt pas na volledig succes verplaatst naar true.
Het werkt zowel op het gedeelde Postgres-cluster als op een speciale CNPG-instantie per project: twee verschillende Postgres-images, maar hetzelfde uitbreidingsmechanisme. Op speciale instanties wordt de extensie geïnstalleerd via het declaratieve manifest van de CNPG-operator in plaats van directe SQL – een recente correctie. Een speciaal cluster draait zonder applicatie-superuser-toegang, en pg_graphql vereist precies dit recht voor zijn CREATE EXTENSION.
Vanuit Studio gaat dezelfde stroom via het tabblad Tabelconfiguratie. Een knop daar activeert de extensie op projectniveau – dezelfde HTTP-oproep als hierboven, met polling tot convergentie. Een tweede besturingselement stelt vervolgens een @graphql-instructie per tabel in, om totalCount en de aggregatievelden in de GraphQL-verzameling wel of niet te activeren, zonder de editor te verlaten.
Weergave met één opdracht: activering → voorzien van taak met threads (idempotent, no-op indien al actief) → DDL-transactie (extensie, wrapper-functie, GRANTs) → vlag graphql_enabled alleen ingesteld na volledig succes → verzoeken mogelijk via /rpc/graphql.
Legacy RLS, geen tweede systeem om te onderhouden
De door Aurabase ingestelde functie is SECURITY INVOKER – standaardgedrag van Postgres, zo uitgelegd dat een toekomstige refactor dit niet per ongeluk verandert. Het werkt met de rechten van de daadwerkelijke beller (aura_anon, aura_authenticated of aura_service_role, afhankelijk van de JWT-claim), dus uw RLS-beleid is precies van toepassing op een REST-verzoek.
Een functie SECURITY DEFINER zou de volledige RLS omzeilen - intern gecontroleerd: het aanroepen van graphql.resolve onder een superuser-verbinding zonder de applicatierol te veranderen, retourneert de rijen van alle eigenaren, RLS of niet. Precies het cross-tenant risico dat deze keuze vermijdt.
Bij Hasura is de architectuur verschillend qua constructie: de engine converteert elke GraphQL-query naar een SQL-query, beperkt door toestemmingsregels die specifiek zijn voor Hasura. Deze regels worden per rol en per tabel in een eigen laag gedefinieerd: een systeem dat parallel loopt aan de Postgres RLS, en niet een delegatie ernaar. Twee plaatsen om de toegangsregels te controleren, in plaats van slechts één.
Introspectie ({ __schema { ... } }) blijft standaard uitgeschakeld voor elk Aurabase-project – een houding die consistent is met de rest van het platform. Het kan via een schema worden geactiveerd via COMMENT ON SCHEMA als een tool als Apollo Studio of graphql-codegen dit nodig heeft.
Schakel in en voer vervolgens een query uit op uw GraphQL API
Zodra graphql_enabled naar trueverschijnt, verschijnt er geen speciale /graphql-route op de gateway. Het verzoek gaat via de generieke RPC-proxy, net als elke Postgres-functie die vanuit de SDK wordt aangeroepen.
Het antwoord volgt de GraphQL-specificatie — { data, errors } — zonder extra Aurabase-wrapping: de gateway detecteert dat de beoogde RPC graphql is en verpakt deze niet opnieuw, in tegenstelling tot een gewone RPC. Een standaard GraphQL-client (Apollo, urql, graphql-request) verbruikt de uitvoer zoals deze is.
Bij activering worden standaard twee instellingen ingesteld via een @graphql-instructie in het diagram: max_rows: 1000 en inflect_names: true. pg_graphql beperkt zich standaard tot 10.000 rijen per verzameling. Zonder first:kan een grote tabel het geheugen verzadigen. inflect_names geeft leesbare typenamen in plaats van de onbewerkte snake_case van SQL-tabellen.
Wat pg_graphql (nog) niet doet
Om te documenteren in plaats van verborgen, in de geest van deze blog.
- Geen native GraphQL-abonnementen. pg_graphql heeft betrekking op zoekopdrachten en mutaties, niet op realtime
subscriptions— dit is een beperking van de extensie zelf, geen weglating van Aurabase. Real-time Aurabase bestaat, maar via een apart kanaal (postgres_changes), en niet via een GraphQL-abonnementsbrug. - Geen declaratieve acties à la Hasura. Het model “zakelijke webhook verbonden met een GraphQL-mutatie” heeft geen direct equivalent: op Aurabase gaat deze logica via een Postgres-functie of een Edge-functie, niet via een speciale GraphQL-configuratie.
- Gereserveerd voor de Postgres-engine. Een MongoDB-project kan dit niet inschakelen - er is geen oplossing voor bedoeld.
Waarom activering opt-in blijft in plaats van standaard: het gebied GRANT/Roles van de tenantdatabase heeft een gedocumenteerde geschiedenis van regressies. Dit is voldoende om te rechtvaardigen dat geen enkele functionaliteit hieraan raakt zonder expliciete validatie, project voor project, voordat een breder defect wordt overwogen.
Aurabase, Hasura of PostGraphile: afhankelijk van uw context
Alle drie de opties zijn legitiem: de juiste keuze hangt af van wat je al hebt en wat je wilt vermijden.
- pg_graphql op Aurabase — als uw RLS-database en -beleid al op Aurabase staan en u een tweede manier wilt om er query's op uit te voeren zonder extra services om te controleren.
- Hasura — als u meerdere gegevensbronnen (niet alleen Postgres) achter één enkel GraphQL-schema bundelt, of als PromptQL en de AI-agentbenadering ervan in uw roadmap passen.
- PostGraphile v5 — als u nauwkeurige controle wilt over het schema dat is gegenereerd via het plug-insysteem, en u al een Node.js-server gebruikt waarin u deze kunt integreren.
Voor de volledige syntaxis van de query (filters op kolomtype, orderBysorteren, paginering op cursor, insertInto<Table>Collection mutaties) zie de officiële pg_graphqldocumentatie. De Aurabase GraphQL-documentatie hieronder beschrijft ook de volledige cyclus.