PRODसंप्रभु यूरोपीय BaaS मंचडैशबोर्ड खोलें →

इंजीनियरिंग · 10 मिनट पढ़ा

pg_graphql बनाम Hasura और PostGraphile Postgres पर

Affane Daylami · Fondateur · 31 जुलाई 2026

ब्लॉग पर वापस जाएँ

पोस्टग्रेज़ पर ग्राफक्यूएल एपीआई का मतलब टूल के आधार पर बहुत अलग चीजें हैं। पोस्टग्राफ़ाइल एक अलग नोड सर्वर तैनात करता है। हसुरा आपके डेटाबेस के सामने एक ग्राफक्यूएल इंजन तैनात करता है। pg_graphql Postgres में चलता है - यह Aurabase द्वारा अपनाया गया दृष्टिकोण है। यह कोई कार्यान्वयन विवरण नहीं है: यह आपको होस्ट करने, सुरक्षित करने और बनाए रखने के लिए आवश्यक चीज़ों को बदलता है।

यह अंग्रेजी पाठ फ़्रेंच मूल से स्वचालित रूप से उत्पन्न हुआ था और अभी तक इसकी समीक्षा नहीं की गई है।
यह पृष्ठ स्वचालित रूप से अनुवादित किया गया था. अंग्रेजी संस्करण प्रामाणिक है.

pg_graphql एक खुला स्रोत पोस्टग्रेज एक्सटेंशन है जिसका रखरखाव सुपाबेस द्वारा किया जाता है - यह ऑराबेस आविष्कार नहीं है। हमने जो बनाया है वह प्लेटफ़ॉर्म में इसका मूल और ऑप्ट-इन एकीकरण है: प्रति प्रोजेक्ट चेक करने के लिए एक बॉक्स, प्रावधान के लिए सेवा नहीं। यह पोस्ट वास्तविक आर्किटेक्चर का विवरण देती है, दिखाती है कि इसे कैसे सक्षम किया जाए, और ईमानदारी से हसुरा और पोस्टग्राफाइल v5 के मुकाबले ट्रेड-ऑफ की तुलना करती है।

अनिवार्य है
  • pg_graphql Postgres में SQL एक्सटेंशन के रूप में चलता है - हसुरा और PostGraphile के विपरीत, तैनात करने के लिए कोई अलग GraphQL सर्वर नहीं है।
  • ऑराबेस द्वारा प्रदान किया गया रैपर फ़ंक्शन SECURITY INVOKERहै: आपकी आरएलएस नीतियां स्वचालित रूप से लागू होती हैं, समानांतर में बनाए रखने के लिए दूसरी अनुमति प्रणाली के बिना।
  • केवल प्रति प्रोजेक्ट ऑप्ट-इन सक्रियण - aura projects graphql-enable या स्टूडियो - किसी भी प्रोजेक्ट पर डिफ़ॉल्ट रूप से कभी भी सक्रिय नहीं होता है।
  • हसुरा ने आधिकारिक तौर पर जून 2025 में अपने ग्राफक्यूएल इंजन को छोड़े बिना, प्रॉम्प्टक्यूएल और एआई एजेंटों पर अपना ध्यान केंद्रित किया।
  • पोस्टग्राफ़ाइल v5 आम तौर पर 24 मार्च, 2026 को उपलब्ध हो गया - एक प्रत्यक्ष और सक्रिय प्रतियोगी, न कि एक निष्क्रिय परियोजना।
#
सिंहावलोकन

pg_graphql, एक वाक्य में

pg_graphql आपके SQL स्कीमा का आत्मनिरीक्षण करता है और रिले कन्वेंशन के अनुरूप एक ग्राफक्यूएल स्कीमा उत्पन्न करता है - <table>Collection, edges, node, कॉलम प्रकार द्वारा फ़िल्टर, कर्सर द्वारा पेजिनेशन। हाथ से लिखने या बनाए रखने के लिए कोई एसडीएल नहीं: ग्राफक्यूएल स्कीमा आपके पोस्टग्रेज स्कीमा का अनुसरण करता है।

वह बिंदु जो आर्किटेक्चर के लिए मायने रखता है: यह स्कीमा जनरेटर डेटाबेस के अंदर एक SQL फ़ंक्शन के रूप में रहता है, न कि इसके बगल में एक HTTP प्रक्रिया के रूप में। ऑराबेस एक्सटेंशन के 1.6.1 संस्करण को अपनी पोस्टग्रेज छवि में पिन करता है - वही आधिकारिक .deb पैकेज जो सुपाबेस द्वारा वितरित किया गया है। यह साझा क्लस्टर और समर्पित पोस्टग्रेज इंस्टेंसेस दोनों पर स्थापित है।

यदि आप सुपाबेस से आते हैं, जहां pg_graphql लंबे समय से मूल रूप से सक्षम है, तो तर्क से आप परिचित होंगे। हमारी विस्तृत तुलना और हमारी माइग्रेशन मार्गदर्शिका बाकी आरएलएस स्कीमा और नीतियों को कवर करती है, जो समान रहती हैं।

#
प्रसंग 2026

हसुरा और पोस्टग्राफाइल में क्या बदलाव आया है

"इंस्टेंट ग्राफक्यूएल ऑन पोस्टग्रेज़" के दो ऐतिहासिक प्रतिस्पर्धियों में से कोई भी गायब नहीं हुआ है। उनकी स्थिति बदल गई है, और एक अद्यतन लेख को दो साल पहले की स्थिति का हवाला देने के बजाय इसे प्रतिबिंबित करना चाहिए।

हसूरा ने जून 2025 में स्पष्ट शीर्षक के साथ एक पोस्ट प्रकाशित की, "ग्राफक्यूएल से प्रॉम्प्टक्यूएल तक: एक नया अध्याय शुरू होता है", इसके सह-संस्थापक तन्मई गोपाल द्वारा हस्ताक्षरित। संदेश: कंपनी अपने रोडमैप को PromptQLपर फिर से केंद्रित कर रही है, जो AI एजेंटों के लिए डिज़ाइन की गई डेटा एक्सेस लेयर है। ग्राफक्यूएल इंजन को हटाया नहीं गया है - हसुरा का होम पेज अभी भी इसे "युद्ध-परीक्षण" के रूप में प्रस्तुत करता है - लेकिन यह अब प्राथमिकता संदेश नहीं है।

पोस्टग्राफाइलने, अपनी ओर से, इसके विपरीत किया। इसका संस्करण 5, 2023 से बीटा के रूप में विकास में, 24 मार्च, 2026 को ग्राफ़स्ट नामक एक नए क्वेरी प्लानिंग इंजन के साथ आम तौर पर उपलब्ध हो गया। यह कोई ऐसा प्रोजेक्ट नहीं है जो ख़त्म हो रहा है: अंतिम रिलीज़, 5.1.4, 5 अगस्त, 2026 की है। npm पैकेज ने अकेले 16 से 22 अगस्त, 2026 के सप्ताह में 119,230 डाउनलोड गिने (npm रजिस्ट्री, 23 अगस्त, 2026 को परामर्श दिया)।

अस्टुसे

व्यावहारिक परिणाम: वास्तविक रिक्त स्थान "पोस्टग्रेज़ पर ग्राफक्यूएल नहीं है, कोई भी इसे नहीं छूता है" - यह विशिष्ट ग्राफक्यूएल शून्य-कॉन्फ़िगरेशन स्लॉट है, जो एक कमांड में सक्रिय होता है, जिसमें होस्ट करने के लिए कोई सेवा नहीं होती है। हसूरा रणनीतिक विकल्प से इससे दूर चला जाता है; PostGraphile ने इसे कभी लक्षित नहीं किया है, इसका मॉडल "स्वयं को एकीकृत करने के लिए Node.js लाइब्रेरी" बना हुआ है।

#
वास्तुकला

जहाँ प्रत्येक समाधान वास्तव में बदल जाता है

वह अंतर जो बाकी सभी चीजों की संरचना करता है - परिचालन लागत, हमले की सतह, विलंबता - वह है जहां ग्राफक्यूएल इंजन चलता है।

जहां यह मुड़ता हैPostgres में SQL एक्सटेंशनपोस्टग्रेज के सामने अलग ग्राफक्यूएल सर्वर (गो)।Node.js लाइब्रेरी/सर्वर, पोस्टग्रेज से आगे
परिनियोजन आवश्यक हैकोई नहीं - प्रोजेक्ट फ़्लैग द्वारा सक्रियहाँ - हसुरा इंजन को होस्ट और स्केल करेंहां - नोड प्रक्रिया को होस्ट करें या इसे अपने सर्वर के साथ एकीकृत करें
अनुमतियाँ मॉडललीगेसी पोस्टग्रेस आरएलएस (सुरक्षा आविष्कारक)हसुरा की अपनी अनुमति प्रणाली, प्रति भूमिका/तालिकाआरएलएस पीजीसेटिंग्स के माध्यम से पोस्टग्रेज करता है - मूल प्रतिनिधिमंडल भी
डिफ़ॉल्ट रूप से आत्मनिरीक्षणअक्षमइंजन विन्यास पर निर्भर करता हैसर्वर कॉन्फ़िगरेशन पर निर्भर करता है
पोजिशनिंग 2026Postgres BaaS का मूल विकल्पजून 2025 से PromptQL/IA पर पुनः ध्यान केंद्रित किया गयामार्च 2026 से GA v5, सक्रिय प्रोजेक्ट
औराबेसहसूरापोस्टग्राफिक V5

ईमानदार होने के लिए: PostGraphile pgSettings और भूमिका स्विचिंग के माध्यम से Postgres को प्राधिकरण भी सौंपता है - मूल RLS pg_graphql के लिए विशिष्ट नहीं है। जो बात अलग है वह यह है कि इस ब्रिज को कौन होस्ट और कॉन्फ़िगर करता है: पोस्टग्राफ़ाइल में, यह आप हैं; ऑराबेस में, यह पहले ही किया जा चुका है।

#
हुड के नीचे

ऑराबेस किसी प्रोजेक्ट पर pg_graphql को कैसे सक्रिय करता है

सक्रियण प्रति प्रोजेक्ट ऑप्ट-इन है, और पोस्टग्रेज इंजन प्रोजेक्ट्स के लिए आरक्षित है - एक MongoDB प्रोजेक्ट अनुरोध को अस्वीकार कर देता है (GRAPHQL_UNSUPPORTED_ENGINE), pg_graphql एक पोस्टग्रेज एक्सटेंशन है जिसका अन्य इंजन पर कोई समकक्ष नहीं है।

CLI के माध्यम से या सीधे प्रबंधन योजना को कॉल करके:

terminalbash
# इडेम्पोटेंट: पहले से सक्रिय प्रोजेक्ट को याद करने से कुछ भी दोबारा नहीं बनता है
aura projects graphql-enable <project_id>

# HTTP समकक्ष (प्रबंधन विमान, JWT कंसोल)
curl -X POST "$AURA_CONTROL_URL/v1/control/projects/$PROJECT_ID/graphql/enable" \
  -H "Authorization: Bearer $CONSOLE_JWT"

सर्वर साइड पर, कॉल एक graphql_enable कार्य निष्पादित करता है जिसे प्रावधानकर्ता एकल लेनदेन में निष्पादित करता है: एक्सटेंशन की स्थापना, आपके स्कीमा में graphql() फ़ंक्शन का निर्माण, एप्लिकेशन भूमिकाओं को अनुदान। यदि कोई चरण विफल हो जाता है, तो सब कुछ रद्द कर दिया जाता है - कभी भी कोई रैपर आधा स्थापित नहीं किया जाता है, और graphql_enabled पूर्ण सफलता के बाद ही true पर जाता है।

यह साझा पोस्टग्रेज क्लस्टर और प्रति प्रोजेक्ट समर्पित सीएनपीजी इंस्टेंस दोनों पर काम करता है - दो अलग-अलग पोस्टग्रेज छवियां, लेकिन एक ही एक्सटेंशन तंत्र। समर्पित उदाहरणों पर, एक्सटेंशन को सीधे SQL के बजाय CNPG ऑपरेटर के घोषणात्मक मैनिफ़ेस्ट के माध्यम से स्थापित किया जाता है - एक हालिया सुधार। एक समर्पित क्लस्टर एप्लिकेशन सुपरयूज़र एक्सेस के बिना चलता है, और pg_graphql को इसके CREATE EXTENSIONके लिए ठीक इसी विशेषाधिकार की आवश्यकता होती है।

स्टूडियो से, वही प्रवाह तालिका कॉन्फ़िगरेशन टैब के माध्यम से जाता है। वहां एक बटन प्रोजेक्ट स्तर पर एक्सटेंशन को सक्रिय करता है - ऊपर जैसा ही HTTP कॉल, अभिसरण तक मतदान के साथ। फिर दूसरा नियंत्रण, संपादक को छोड़े बिना, totalCount और इसके ग्राफक्यूएल संग्रह पर एकत्रीकरण फ़ील्ड को सक्रिय करने या न करने के लिए, प्रति तालिका एक @graphql निर्देश सेट करता है।

एकल कमांड दृश्य: सक्रियण → प्रोविजनिंग जॉब थ्रेडेड (इमपोटेंट, नो-ऑप यदि पहले से ही उड़ान में है) → डीडीएल लेनदेन (एक्सटेंशन, रैपर फ़ंक्शन, अनुदान) → ध्वज graphql_enabled पूर्ण सफलता के बाद ही सेट करें → /rpc/graphqlके माध्यम से अनुरोध संभव है।

#
सुरक्षा

विरासत आरएलएस, बनाए रखने के लिए दूसरी प्रणाली नहीं

ऑराबेस द्वारा निर्धारित फ़ंक्शन SECURITY INVOKER है - पोस्टग्रेज का डिफ़ॉल्ट व्यवहार, समझाया गया है ताकि भविष्य का रिफैक्टर इसे दुर्घटना से न बदल दे। यह वास्तविक कॉलर (aura_anon, aura_authenticated या aura_service_role, JWT दावे के आधार पर) के विशेषाधिकारों के साथ चलता है, इसलिए आपकी RLS नीतियां बिल्कुल REST अनुरोध के लिए लागू होती हैं।

सुरक्षा परिभाषाक क्यों नहीं

एक SECURITY DEFINER फ़ंक्शन संपूर्ण RLS को बायपास कर देगा - आंतरिक रूप से जाँच की गई: एप्लिकेशन भूमिका को बदले बिना सुपरयूज़र कनेक्शन के तहत graphql.resolve को कॉल करने से सभी मालिकों की पंक्तियाँ वापस आ जाती हैं, चाहे RLS हों या नहीं। बिल्कुल क्रॉस-टेनेंट जोखिम जिससे यह विकल्प बचता है।

हसुरा में, आर्किटेक्चर निर्माण के अनुसार भिन्न होता है: इंजन प्रत्येक ग्राफक्यूएल क्वेरी को हसुरा के लिए विशिष्ट अनुमति नियमों द्वारा बाध्य SQL क्वेरी में परिवर्तित करता है। इन नियमों को प्रति भूमिका और प्रति तालिका अपनी परत में परिभाषित किया गया है - पोस्टग्रेज आरएलएस के लिए एक समानांतर प्रणाली, न कि इसके लिए एक प्रतिनिधिमंडल। पहुंच नियमों का ऑडिट केवल एक के बजाय दो स्थानों पर किया जाएगा।

प्रत्येक ऑराबेस प्रोजेक्ट पर आत्मनिरीक्षण ({ __schema { ... } }) डिफ़ॉल्ट रूप से अक्षम रहता है - बाकी प्लेटफ़ॉर्म के अनुरूप एक मुद्रा। यदि अपोलो स्टूडियो या ग्राफ़िकल-कोडजेन जैसे टूल को इसकी आवश्यकता है तो इसे COMMENT ON SCHEMA के माध्यम से स्कीमा द्वारा सक्रिय किया जा सकता है।

#
ट्यूटोरियल

सक्षम करें फिर अपने ग्राफक्यूएल एपीआई को क्वेरी करें

एक बार graphql_enabled से trueतक, गेटवे पर कोई समर्पित /graphql मार्ग दिखाई नहीं देता है। अनुरोध सामान्य RPC प्रॉक्सीके माध्यम से जाता है, बिल्कुल SDK से कॉल किए गए किसी भी पोस्टग्रेज़ फ़ंक्शन की तरह।

query.shbash
curl -X POST "$AURA_URL/v1/db/$PROJECT_ID/rpc/graphql" \
  -H "apikey: $AURA_ANON_KEY" -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { postsCollection(first: 10, filter: { published: { eq: true } }) { edges { node { id title created_at } } } }"}'

प्रतिक्रिया ग्राफक्यूएल स्पेक का अनुसरण करती है - { data, errors } - बिना अतिरिक्त ऑराबेस रैपिंग के: गेटवे पता लगाता है कि लक्षित RPC graphql है और सामान्य RPC के विपरीत, इसे दोबारा रैप नहीं करता है। एक मानक ग्राफक्यूएल क्लाइंट (अपोलो, यूआरएल, ग्राफक्यूएल-रिक्वेस्ट) आउटपुट का उपभोग करता है।

सक्रियण पर, आरेख पर @graphql निर्देश के माध्यम से दो सेटिंग्स डिफ़ॉल्ट रूप से सेट की जाती हैं: max_rows: 1000 और inflect_names: true। प्रति संग्रह 10,000 पंक्तियों पर डिफ़ॉल्ट रूप से pg_graphql कैप्स - first:के बिना, एक बड़ी तालिका मेमोरी को संतृप्त कर सकती है। inflect_names SQL तालिकाओं के रॉ स्नेक_केस के बजाय पठनीय प्रकार के नाम देता है।

#
सीमाएं

pg_graphql क्या नहीं करता (अभी तक)

इस ब्लॉग की भावना के अनुरूप, छिपाने के बजाय दस्तावेज़ीकृत किया जाना चाहिए।

  • कोई मूल GraphQL सदस्यता नहीं। pg_graphql प्रश्नों और उत्परिवर्तनों को कवर करता है, वास्तविक समय को नहीं subscriptions - यह स्वयं एक्सटेंशन की एक सीमा है, ऑराबेस चूक नहीं। रीयल-टाइम ऑराबेस मौजूद है, लेकिन एक अलग चैनल (postgres_changes) के माध्यम से, ग्राफक्यूएल सब्सक्रिप्शन ब्रिज नहीं।
  • हसुरा के अलावा कोई घोषणात्मक कार्रवाई नहीं। "ग्राफक्यूएल म्यूटेशन से जुड़ा बिजनेस वेबहुक" मॉडल का कोई प्रत्यक्ष समकक्ष नहीं है - ऑराबेस पर, यह तर्क पोस्टग्रेज फ़ंक्शन या एज फ़ंक्शन के माध्यम से जाता है, समर्पित ग्राफक्यूएल कॉन्फ़िगरेशन के माध्यम से नहीं।
  • पोस्टग्रेज इंजन के लिए आरक्षित। एक MongoDB प्रोजेक्ट इसे सक्षम नहीं कर सकता - कोई वैकल्पिक समाधान का इरादा नहीं है।
जानकारी

सक्रियण डिफ़ॉल्ट के बजाय ऑप्ट-इन क्यों रहता है: किरायेदार डेटाबेस के अनुदान/भूमिका क्षेत्र में प्रतिगमन का एक दस्तावेजी इतिहास है। यह इस बात को प्रमाणित करने के लिए पर्याप्त है कि व्यापक दोष पर विचार करने से पहले, प्रोजेक्ट दर प्रोजेक्ट स्पष्ट सत्यापन के बिना कोई भी कार्यक्षमता इसे नहीं छूती है।

#
फ़ैसला

ऑराबेस, हसुरा या पोस्टग्राफाइल: आपके संदर्भ पर निर्भर करता है

सभी तीन विकल्प वैध हैं - सही विकल्प इस पर निर्भर करता है कि आपके पास पहले से क्या है और आप क्या टालना चाहते हैं।

  • ऑराबेस पर pg_graphql - यदि आपका आरएलएस डेटाबेस और नीतियां पहले से ही ऑराबेस पर मौजूद हैं और आप निगरानी के लिए अतिरिक्त सेवाओं के बिना इसे क्वेरी करने का दूसरा तरीका चाहते हैं।
  • हसुरा - यदि आप एक ही ग्राफक्यूएल स्कीमा के पीछे एकाधिक डेटा स्रोतों (सिर्फ पोस्टग्रेज़ नहीं) को फ़ेडरेट करते हैं, या यदि प्रॉम्प्टक्यूएल और इसका एआई एजेंट दृष्टिकोण आपके रोडमैप में फिट बैठता है।
  • PostGraphile v5 - यदि आप इसके प्लगइन सिस्टम के माध्यम से उत्पन्न स्कीमा पर अच्छा नियंत्रण चाहते हैं, और आप पहले से ही एक Node.js सर्वर चलाते हैं जिसमें इसे एकीकृत करना है।

पूर्ण क्वेरी सिंटैक्स के लिए - कॉलम प्रकार द्वारा फ़िल्टर, orderByसॉर्टिंग, कर्सर द्वारा पेजिनेशन, insertInto<Table>Collection म्यूटेशन - आधिकारिक pg_graphqlदस्तावेज़ देखें। नीचे ऑराबेस ग्राफक्यूएल दस्तावेज़ीकरण भी पूरे चक्र का विवरण देता है।

तैनाती के लिए तैयार हैं?

पाँच मिनट में आपका बैकएंड।

किसी क्रेडिट कार्ड की आवश्यकता नहीं · 500 एमबी निःशुल्क · 50,000 एमएयू