हाल ही में मैंने ग्राफ़कॉल के बारे में सीखा जो कि रेस्टफुल से बेहतर होने का दावा करता है। हालाँकि, मैं सोचने लगा कि हम SQL बयानों को HTTP GET अनुरोध में क्यों नहीं डालते।
उदाहरण के लिए, GraphQL में मैं लिखूंगा
{
Movie(id: "cixos5gtq0ogi0126tvekxo27") {
id
title
actors {
name
}
}
}
जो अपने SQL समकक्ष की तुलना में ज्यादा सरल नहीं है
SELECT id, title FROM movies WHERE id = cixos5gtq0ogi0126tvekxo27;
SELECT actors.name FROM actors, actors_movies WHERE actors.id == movies.actor_id AND movie.id == cixos5gtq0ogi0126tvekxo27;
हो सकता है कि हम क्वेरी को एनकोड कर सकते हैं और सर्वर को भेज सकते हैं
GET endpoint?q=SELECT%20id%2C%20title%20FROM%20movies%20WHERE%20id%20%3D%20cixos5gtq0ogi0126tvekxo27%3B%0ASELECT%20actors.name%20FROM%20actors%2C%20actors_movies%20WHERE%20actors.id%20%3D%3D%20movies.actor_id%20AND%20movie.id%20%3D%3D%20cixos5gtq0ogi0126tvekxo27%3B HTTP/1.1
हां, क्वेरी URL बहुत लंबा हो सकता है, लेकिन यदि आप REST अनुपालन की परवाह नहीं करते हैं, तो आप इसे POST अनुरोध के मुख्य भाग में रख सकते हैं। (वैसे, मुझे लगता है कि समझ बनाने के लिए HTTP RFC को REST के लिए संशोधित किया जाना चाहिए: क्वेरी स्ट्रिंग्स की लंबाई को मिलाते हुए शुरुआत में विनिर्देश के साथ कार्यान्वयन को मिलाया जाता है)
क्लाइंट से सीधे SQL जारी करने का भी फायदा है
- विकास के समय को कम करते हुए, ग्राफक्यूएल को पार्स करने के लिए किसी सर्वर-साइड कोड / लाइब्रेरी की आवश्यकता नहीं है।
- कोई भी सर्वर-साइड ओवरहेड को ग्राफक्यूएल को पार्स करने की जरूरत नहीं है, रनटाइम को कम करना।
- एसक्यूएल स्टेटमेंट ग्राफकॉइन की तुलना में बहुत अधिक लचीले होते हैं क्योंकि (ज्यादातर मामलों में) बाद में एसक्यूएल में कम हो जाएगा।
- हर कोई SQL जानता है।
तो, ग्राफ़िकल का एसक्यूएल पर क्या लाभ है?