SQL (भाषा) के लिए अच्छे विकल्प क्या हैं? [बन्द है]


95

मैं कभी-कभी चीजों को सुनता हूं कि एसक्यूएल कैसे चूसता है और यह एक अच्छी भाषा नहीं है, लेकिन मैं वास्तव में इसके बारे में विकल्प के बारे में कभी नहीं सुनता। तो, क्या अन्य अच्छी भाषाएं हैं जो एक ही उद्देश्य (डेटाबेस एक्सेस) की सेवा करती हैं और क्या उन्हें एसक्यूएल से बेहतर बनाता है? क्या कोई अच्छा डेटाबेस है जो इस वैकल्पिक भाषा का उपयोग करता है?

संपादित करें: मैं SQL से परिचित हूं और हर समय इसका उपयोग करता हूं। मुझे इसमें कोई समस्या नहीं है, मैं बस किसी भी विकल्प में दिलचस्पी रखता हूं जो मौजूद हो सकता है, और लोग उन्हें बेहतर क्यों पसंद करते हैं।

मैं वैकल्पिक प्रकार के डेटाबेस (NoSQL आंदोलन) की भी तलाश नहीं कर रहा हूं, बस डेटाबेस तक पहुंचने के विभिन्न तरीके हैं।


22
SQL बेकार है? कोई संदर्भ?
मुरली वीपी

3
आप यह नहीं कह रहे हैं कि यह एक्सएमएल की तुलना में आप बेकार है?
Bratch

6
SQL वास्तव में बेकार है या नहीं, मुझे इसमें दिलचस्पी है या नहीं। यहां एक उदाहरण है: en.wikipedia.org/wiki/The_Third_Manifesto मुझे लगता है कि "बेकार" गलत शब्द हो सकता है ..
ब्रेंडन लांग

4
स्पष्ट करने के लिए: मुझे SQL के साथ कोई समस्या नहीं है। मैं सिर्फ अन्य विचारों के बारे में सीखना पसंद करता हूं अगर कुछ बेहतर है।
ब्रेंडन लॉन्ग

6
यदि इसे एक क्वेरी भाषा होना है, और RDBMS के लिए होना है, तो Quel: en.wikipedia.org/wiki/QUEL_query_languages ​​देखें - यह 1995 से पहले उपयोग किए जाने वाले पोस्टग्रेट्स भी हैं, जब इसका नाम भी असाधारण रूप से बदल दिया गया है। मूर्खतापूर्ण "PostgreSQL"।
केन

जवाबों:


45

मैं निश्चित रूप से सहमत हूँ कि SQL के सिंटैक्स के साथ काम करना मुश्किल है, दोनों इसे स्वचालित रूप से उत्पन्न करने के दृष्टिकोण से, और इसे पार्स करने के दृष्टिकोण से, और यह भाषा की शैली नहीं है जिसे हम आज लिख रहे हैं यदि हम अपनी मांगों के लिए SQL डिज़ाइन कर रहे हैं। आज उस पर। मुझे नहीं लगता कि अगर हम आज भाषा को डिज़ाइन करते हैं तो हमें बहुत सारे विविध कीवर्ड मिलेंगे, मुझे संदेह है कि वाक्यविन्यास में शामिल होना अलग होगा, GROUP_CONCATइसके व्यवहार को नियंत्रित करने के लिए कोष्ठक के बीच में अधिक कीवर्ड चिपकाने के बजाय कार्य नियमित रूप से अधिक वाक्यविन्यास होंगे। ... SQL में विसंगतियों और अतिरेक की अपनी स्वयं की कपड़े धोने की सूची बनाएं जो आप आज भाषा को फिर से डिज़ाइन करने पर सुचारू रूप से देखने की उम्मीद करते हैं।

संबंधपरक डेटाबेस (यानी प्रोटोकॉल के रूप में SQL) के लिए SQL के लिए कोई विकल्प नहीं हैं, लेकिन आपके अनुप्रयोगों में SQL लिखने के लिए कई विकल्प हैं। ये विकल्प रिलेशनल डेटाबेस के साथ काम करने के लिए फ्रंटेंड के रूप में लागू किए गए हैं। एक दृश्यपटल के कुछ उदाहरणों में शामिल हैं:

  • स्कीमक्यूएल और सीएलएससी , जो संभवत: सबसे लचीली हैं, अपनी लिस्प विरासत के कारण, लेकिन वे भी एसक्यूएल की तरह बहुत अधिक दिखती हैं।
  • LINQ (.Net में)
  • ScalaQL और ScalaQuery (स्काला में)
  • SqlStatement , ActiveRecord और रूबी में कई अन्य,
  • HaskellDB
  • ... सूची कई अन्य भाषाओं के लिए जाती है।

मुझे लगता है कि आज अंतर्निहित विषय यह है कि SQL को एक नई क्वेरी भाषा से बदलने के बजाय, हम अपनी नियमित रूप से प्रतिदिन की प्रोग्रामिंग भाषाओं में SQL को छिपाने के लिए भाषा-विशिष्ट दृष्टिकोण का निर्माण कर रहे हैं, और रिलेशनल से बात करने के लिए SQL को प्रोटोकॉल मानते हैं। डेटाबेस।


दिलचस्प। हालांकि यह समझ में आता है।
ब्रेंडन लॉन्ग

11
यह सच है, लेकिन आदर्श रूप में वहाँ एक क्वेरी भाषा है कि एक के रूप में अच्छी तरह से काम करता है हो सकता है भाषा । तथ्य यह है कि एसक्यूएल एक प्रोटोकॉल के लिए कम कर दिया गया है एक भाषा के रूप में अपनी कमजोरी के लिए एक वसीयतनामा है।

3
हुर्रे केन! तीन साल पहले मैं तकनीकी तकनीकी ऋण से जूझ रहा था, जिसके परिणामस्वरूप मामूली बदलाव के साथ SQL क्वेरी के टुकड़ों की नकल करने की विशिष्ट कॉर्पोरेट प्रथा थी, क्योंकि SQL में इनकैप्सुलेशन या स्थानीय तरीकों जैसी कोई चीज नहीं है। मैंने आपकी पोस्ट से ScalaQuery को देखा (जिसे अब Slick कहा जाता है) और पूरे सिस्टम को फिर से लिखा और हर 6 प्रश्न 1 बन गए, सिर्फ इसलिए कि आप इनकैप्सुलेट कर सकते हैं और स्थानीय तरीके हो सकते हैं! यदि कोई SQL भयावहता से पीड़ित है, तो स्लैक स्लीक या क्विल को देखें और प्रबोधन की तैयारी करें!
चॉपी.लम्बरजैक

18

इस सूची पर एक नज़र डालें।

हाइबरनेट क्वेरी भाषा संभवतः सबसे आम है। हाइबरनेट का लाभ यह है कि ऑब्जेक्ट बहुत आसानी से (लगभग स्वचालित रूप से) रिलेशनल डेटाबेस पर मैप करते हैं, और डेवलपर को डेटाबेस डिजाइन करने में ज्यादा समय नहीं देना पड़ता है। की जाँच करें हाइबरनेट वेबसाइट अधिक जानकारी के लिए। मुझे यकीन है कि अन्य दिलचस्प क्वेरी भाषाओं के साथ दूसरों को झंकार देंगे ...

बेशक, वहाँ NoSQL सामान बहुत है, लेकिन आप विशेष रूप से उल्लेख करते हैं कि आप उन में रुचि नहीं रखते हैं।


निश्चित रूप से जिस तरह की चीज की मुझे तलाश थी।
ब्रेंडन लॉन्ग

उस सूची में इस पर भाषाओं का बहुत ही संग्रह है। मुझे नहीं लगता कि XQuery का संबंध है, और मुझे यह जानने के लिए D के बारे में पर्याप्त नहीं पता है कि यह क्यों है।
केन ब्लूम

1
@ केन ब्लूम जाहिरा तौर पर एक क्वेरी भाषा है जिसे D कहा जाता है, और एक अलग सी-जैसी भाषा है, जिसे D. कहा जाता है। पहला जो मैंने सोचा था कि वह सी-
लाइक

मैं निश्चित रूप से डी के बारे में बहुत तेजी से बात करता था। जब मैंने नाम देखा, तो मैं डिजिटल मार्स डी को सोच रहा था - मैं देखता हूं कि डी डेटा भाषा पूरी तरह से कुछ और है।
केन ब्लूम


13

"मैं कभी-कभी चीजों को सुनता हूं कि एसक्यूएल कैसे चूसता है और यह एक अच्छी भाषा नहीं है"

SQL तीस साल से अधिक पुराना है। इनसाइट्स के बारे में "जो कुछ सुविधाओं को एक 'अच्छी' भाषा बनाते हैं और जो इसे एक 'खराब' बनाते हैं" एसक्यूएल की तुलना में अधिक तेजी से विकसित हुए हैं।

इसके अलावा, SQL एक ऐसी भाषा नहीं है, जो "संबंधपरक होने के लिए वर्तमान मानकों के अनुरूप हो", इसलिए, SQL सिर्फ बूट करने के लिए एक संबंधपरक भाषा नहीं है।

"लेकिन मैं वास्तव में इसके विकल्पों के बारे में कभी नहीं सुनता।"

मैं आपको इस संभावना को इंगित करने के लिए आमंत्रित करता हूं कि आप केवल गलत स्थानों (यानी वाणिज्यिक डीबीएमएस उद्योग विशेष रूप से) को सुनने की कोशिश कर रहे हैं।

"तो, क्या अन्य अच्छी भाषाएँ हैं जो एक ही उद्देश्य (डेटाबेस एक्सेस) की सेवा करती हैं और क्या उन्हें SQL से बेहतर बनाता है?"

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

"क्या कोई अच्छा डेटाबेस है जो इस वैकल्पिक भाषा का उपयोग करता है?"

यदि "अच्छा" से, आपका मतलब "औद्योगिक-ताकत" से है, तो नहीं। निकटतम उपलब्ध वस्तु शायद दातापुर होगी।

रिले प्रोजेक्ट "डेटाबेस, प्रकार और संबंधपरक मॉडल" में परिभाषित ट्यूटोरियल डी भाषा के लिए एक कार्यान्वयन प्रदान करता है, लेकिन रिले का वर्तमान मुख्य लक्ष्य प्रकृति में शैक्षिक होना है।

मेरा SIRA_PRISE प्रोजेक्ट "वास्तव में संबंधपरक" डेटा प्रबंधन के लिए एक कार्यान्वयन प्रदान करता है, लेकिन मैं इसे "एक भाषा के कार्यान्वयन" के रूप में लेबल करने में भी संकोच करता हूं।

और हां, आप कुछ गैर-संबंधपरक सामानों पर भी गौर कर सकते हैं, जैसा कि कुछ ने प्रस्तावित किया है, लेकिन मैं व्यक्तिगत रूप से गैर-संबंधपरक डेटा प्रबंधन को कई दशकों के तकनीकी प्रतिगमन के रूप में खारिज करता हूं। विचार करने योग्य नहीं, वह है।

ओह, और वैसे, एक सॉफ्टवेयर सिस्टम जो डेटाबेस को प्रबंधित करने के लिए उपयोग किया जाता है, वह "डेटाबेस" नहीं है, बल्कि "डेटाबेस मैनेजमेंट सिस्टम", "डीबीएमएस" है। जैसे एक तस्वीर एक कैमरे के समान नहीं है, और यदि आप कैमरों पर चर्चा कर रहे हैं, और आप भ्रम से बचना चाहते हैं, तो आपको "फोटोग्राफ" के बजाय उचित शब्द "कैमरों" का उपयोग करना चाहिए।


गैर-संबंधपरक डेटाबेस का कुछ उपयोग होता है (कुछ अनुप्रयोगों को कम संरचित डेटा से बेहतर प्रदर्शन मिलता है), इसलिए मैं इसे प्रतिगमन नहीं कहूंगा। हालांकि अच्छा जवाब।
ब्रेंडन लॉन्ग

2
यह सभी संबंधपरक लोगों की सदियों पुरानी हताशा है कि "प्रदर्शन" को मॉडल की विशेषता के रूप में माना जाता है । वह धारणा त्रुटिपूर्ण है, अवधि। प्रदर्शन मॉडल के कार्यान्वयन की एक विशेषता है । आरएम के किसी भी वर्तमान में लागू कार्यान्वयन वास्तव में अक्सर प्रदर्शन की समस्याओं को बढ़ाने के लिए लगता है, कई कारकों का एक संयोजन है: (ए) आरएम को पूर्ण रूप से लागू करना केवल सादा अत्यंत कठिन है, (बी) डीबीएमएस विक्रेताओं को नई कार्यान्वयन प्रगति के लिए पर्याप्त रूप से कठिन धक्का नहीं है , और (ग) उपयोगकर्ताओं में अंतर्निहित एल्गोरिथम की पर्याप्त समझ का अभाव है।
एरविन स्मौट

3
@ इरविन लेकिन अगर हम पाते हैं कि किसी विशेष मॉडल को कुशलतापूर्वक लागू करना मुश्किल है, तो निश्चित रूप से यह कहना उचित है कि दक्षता के दृष्टिकोण से उस मॉडल के साथ कोई समस्या है।
जे

SQL भयानक है। 30 साल पहले, अंग्रेजी जैसे व्याकरण और शब्दों का उपयोग करना शायद एक अच्छे विचार की तरह लग रहा था, जैसे अस्पष्ट उपयोगकर्ता के अनुकूल और कुछ भी नहीं से बेहतर, लेकिन आजकल हम जानते हैं कि यह नहीं है, प्रतीकात्मक भाषा में कंप्यूटर अवधारणाओं को व्यक्त करना बेहतर है। यदि आप अंग्रेजी का उपयोग करना चाहते हैं तो आपके पास एक उचित प्राकृतिक भाषा पार्सर है। एसक्यूएल प्राकृतिक भाषा को ठीक से पार्स करने का कोई प्रयास नहीं करता है, यह हैक की एक श्रृंखला है (कभी-कभी वैकल्पिक) अंग्रेजी शब्दों के साथ इसे और अधिक भ्रमित करने के लिए फेंक दिया जाता है।
रॉल्फ

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

12

शायद आप आलोचना के बारे में सोच रहे हैं। सी। तिथि और उनके दोस्तों ने मौजूदा संबंधपरक डेटाबेस और एसक्यूएल के खिलाफ बोला है; वे कहते हैं कि सिस्टम और भाषा 100% संबंधपरक नहीं हैं, और होनी चाहिए। मैं वास्तव में यहाँ कोई वास्तविक समस्या नहीं देख रहा हूँ; जहाँ तक मैं देख सकता हूँ कि आप 100% संबंधपरक प्रणाली रख सकते हैं, यदि आप चाहें, तो जिस तरह से आप एसक्यूएल का उपयोग करते हैं, उसी तरह अनुशासित होकर।

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

हाल ही में मुझे .QL पर इंगित किया गया था, जो सकारत्मक रूप से संवादात्मक बंद होने के मुद्दे को संबोधित करता है, लेकिन मुझे नहीं पता कि यह आदेशित डोमेन के लिए समस्या को हल कर सकता है या नहीं।


4
कुछ दोष हैं जो "SQL का उपयोग करने के तरीके को अनुशासित करने" के साथ भी "100% रिलेशनल सिस्टम" को रोकते हैं, क्योंकि SQL, वास्तव में रिलेशनल नहीं है। उदाहरण: Select Sum (foo) BAR Blah WHERE 1 = 0 एसक्यूएल शून्य देता है, 100% रिलेशनल एक शून्य मांगता है। carfield.com.hk/document/misc/SQL_Problems.pdf
McKay

1
इसके अलावा, क्या आप हर चयन के बाद "DISTINCT" लिखते हैं?
मैकाय

हां, मैं पूरी तरह से बचूंगा (इसलिए खाली परिणामों के लिए विशेष-आवरण की आवश्यकता है) और या तो हर जगह या जहां भी मुझे COUNT का उपयोग करने की आवश्यकता है, वहां DISTINCT लिखें।
रीइनस्टायरपोस्ट

8

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

सरल प्रमाण के रूप में कि डेटाबेस प्रारूप और क्वेरी भाषा के बीच अंतर है, मैंने उपयोग किए गए DBase के अंतिम संस्करण - अब से कई साल पहले - दोनों "पारंपरिक" DBase क्वेरी भाषा और एसक्यूएल की पेशकश की, दोनों का उपयोग किया जा सकता है उसी डेटा तक पहुँचने के लिए।

साइड रेम्बल: मैं यह नहीं कहूंगा कि एसक्यूएल बेकार है, लेकिन इसमें कई खामियां हैं। अब हमारे पास वर्षों के अनुभव और अड़चन के लाभ के साथ, मुझे यकीन है कि कोई बेहतर क्वेरी भाषा डिज़ाइन कर सकता है। लेकिन एक बेहतर क्वेरी भाषा बनाना, और लोगों को इसका उपयोग करने के लिए आश्वस्त करना, दो बहुत अलग चीजें हैं। क्या लोगों को यह समझाने के लिए पर्याप्त होगा कि यह सीखने की परेशानी के लायक था। लोगों ने अपने जीवन के कई वर्षों में SQL का प्रभावी ढंग से उपयोग करना सीख लिया है। यहां तक ​​कि अगर आपकी नई भाषा का उपयोग करना आसान है, तो निश्चित रूप से सीखने की अवस्था होगी। और आप अपने मौजूदा सिस्टम को SQL से नई भाषा में कैसे माइग्रेट करेंगे? आदि, यह निश्चित रूप से किया जा सकता है, जैसे C ++, C #, और Java ने मोटे तौर पर COBOL और FORTRAN को उखाड़ फेंका है। लेकिन इसे उतारने के लिए तकनीकी श्रेष्ठता और अच्छी मार्केटिंग का संयोजन होता है।

फिर भी, मुझे उन लोगों में से एक चकल्लस मिलता है जो एसक्यूएल का बचाव करने के लिए आगे बढ़ते हैं, कभी भी कोई इसकी आलोचना नहीं करता है, जो इस बात पर जोर देता है कि एसक्यूएल के साथ किसी भी समस्या का उपयोग करने में आपकी खुद की अयोग्यता होनी चाहिए और एसक्यूएल की कोई गलती नहीं है, जो आपके पास नहीं होना चाहिए अपनी पूर्णता, आदि को शांत करने के लिए आवश्यक चीज़ों के उच्च तल पर पहुँच जाना, शांत हो जाना, एक गहरी साँस लेना: हम आपकी माँ नहीं बल्कि एक कंप्यूटर भाषा का अपमान कर रहे हैं।


1
@ जय: एसक्यूएल के लिए एक संभावित प्रतिस्थापन कोई डेटाबेस विशिष्ट भाषा नहीं हो सकती है, डेटा दृढ़ता के लिए अपनी सामान्य ओओ प्रोग्रामिंग भाषा का उपयोग करें। ऑब्जेक्ट-डेटाबेस और ORM के बारे में मेरा उत्तर देखें। मैं यह नहीं कहूंगा कि ORMs को अब कुछ शेयर बाजार में नहीं मिल रहे हैं।
क्रिश

Kriss: मैं सोच रहा था कि ORM एक "क्वेरी भाषा" नहीं है, बल्कि ऐसा कुछ है जो क्वेरी भाषा के शीर्ष पर बैठता है। मुझे लगता है कि अगर आप डेटाबेस के साथ संवाद करने के लिए इसका उपयोग करते हैं, तो इसे क्वेरी भाषा माना जा सकता है, और शायद मैं सिर्फ पांडित्यपूर्ण हूं। जैसे, मुझे कई साल पहले याद आया कि COBOL और C वास्तव में कंप्यूटर भाषा नहीं हैं, केवल असेंबलर ही वास्तविक कंप्यूटर भाषा हैं। COBOL और C ऐसी ही चीजें हैं जो कंप्यूटर भाषा में अनुवादित हो जाती हैं। तर्क तब लग रहा था और अब बस मूर्खतापूर्ण होने के लिए।) तो: ठीक है, मैं वह खरीदूंगा।
जय

1
यह जवाब पुराना हो सकता है। अब गैर-SQL डेटाबेस हैं, जैसे कि Mongo, आदि, जिनके पास बाजार का एक गैर-तुच्छ हिस्सा है।
जय

8

LINQ to SQL पर एक नजर ...

कुछ महीने पहले इसे आज़माया और फिर कभी पीछे मुड़कर नहीं देखा ...।


1
लाइनक अद्भुत है, लेकिन केवल अगर आप .NET :) पर विकसित कर रहे हैं
जस्टिन एथियर

7

1980 में वापस, ObjectStore ने पारदर्शी ऑब्जेक्ट एक्सेस प्रदान किया। यह एक RDBMS प्लस ORM की तरह था, सिवाय उन सभी अतिरिक्त टपका परतों के बिना: यह सीधे डेटाबेस में वस्तुओं को संग्रहीत करता था।

तो यह विकल्प वास्तव में "कोई भाषा बिल्कुल नहीं" था, या शायद "वह भाषा जो आप पहले से उपयोग कर रहे हैं"। आप C ++ कोड लिखेंगे और ऑब्जेक्ट्स को बनाएंगे या मानेंगे जैसे कि वे देशी ऑब्जेक्ट्स थे, और डेटाबेस ने जरूरत के अनुसार हर चीज का ध्यान रखा। ActiveRecord की तरह की तरह, लेकिन यह वास्तव में ActiveRecord मार्केटिंग ब्लिट्ज के दावे के साथ-साथ काम करता है। :-)

(बेशक, इसमें ओरेकल की मार्केटिंग की मांसपेशी नहीं थी, और इसमें MySQL की शून्य-लागत नहीं थी, इसलिए हर किसी ने इसे अनदेखा कर दिया। और अब हम RDBMS और ORM के साथ इसे दोहराने की कोशिश करते हैं, और कुछ लोग वास्तव में उस टेबल पर बहस करने की कोशिश करते हैं। वस्तुओं को संग्रहीत करने के लिए समझ में आता है, और यह कि विशाल एक्सएमएल फ़ाइल लिखना आपके कंप्यूटर को यह बताने के लिए कि वस्तुओं को टेबल पर कैसे मैप करना है, यह एक उचित समाधान है।)


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

4
काउंटरपॉइंट: क्वेरी ऑप्टिमाइज़र, चीजों की भव्य योजना में, बहुत गूंगे हैं। देखो कि कितने "मेरी क्वेरी को अनुकूलित करने में मेरी मदद करते हैं" सवाल यहां एसओ पर हैं। एक कुशल क्वेरी लिखने के लिए, आपको यह समझना होगा कि क्वेरी ऑप्टिमाइज़र क्या करने जा रहा है। मैंने पहले से ही अपने प्रोग्रामिंग वातावरण के लिए एक प्रोफाइलर - और एक डिबगर, उस मामले के लिए - और वे आपके द्वारा देखे गए किसी भी उदाहरण से बेहतर हैं। मुझे नहीं पता कि इस पर ऑब्जेक्ट कितना अच्छा है, लेकिन एक सजातीय सॉफ्टवेयर स्टैक भयानक हो सकता है ।
केन

2011 में, आप केवल जेमस्टोन के मुफ्त संस्करण और स्मॉलटाक में प्रोग्राम डाउनलोड कर सकते हैं। केवल एक ही चीज के बारे में सोचना है कि एक वर्ग संस्करण के उदाहरणों को दूसरे में कैसे स्थानांतरित किया जाए (सरल मामलों को यह स्वचालित रूप से संभालता है)
Stephan Eggermont

6

इन दिनों सामान्य आंदोलन NoSQL है; आम तौर पर ये प्रौद्योगिकियां हैं:

व्यक्तिगत रूप से मुझे लगता है कि एसक्यूएल में कुछ भी गलत नहीं है जब तक कि यह आपकी आवश्यकताओं के अनुरूप नहीं है। SQL संरचित डेटा के साथ काम करने के लिए अभिव्यंजक और महान है।


2
दस्तावेज़-उन्मुख डेटाबेस के लिए +1। जैसा कि डेटासेट आकार में बढ़ते हैं, रिलेशनल मॉडल वास्तव में धीमा हो सकते हैं ...
माइक सियालोविज़

2
आप जो उल्लेख करते हैं वह एसक्यूएल के विकल्प नहीं हैं, वे भी भाषाएं नहीं हैं। Apache Pig और Apache Hive जैसी पहल इसे ज्यादा पसंद है।
रीयरियरपोस्ट' 8:13

5

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

इसके अलावा, ऐसा प्रतीत होता है कि Ingres अभी भी QUEL का समर्थन करते हैं, और यह खुला स्रोत है।


तकनीकी रूप से, जिस भाषा में डेटाफ़ॉर सर्वर बोलता है वह डी 4, डी (या ट्यूटोरियल डी ...) थोड़ी अलग भाषा है।
मैके 19

और भी पांडित्य को देखते हुए, D एक भाषा नहीं है बल्कि एक विनिर्देश है जिसे Date & Darwen देते हैं। वे "ट्यूटोरियल डी" का उपयोग उनकी उदाहरण भाषा के रूप में करते हैं। डी 4 डी के रूप में अर्हता प्राप्त करता है, या कम से कम अधिकतर ऐसा है, लेकिन मैकके सही है कि इसे "डी" कहा जाना चाहिए, न कि यह "डी"। डाटापोर प्रलेखन में अनुरूपता का एक दस्तावेज है।
N8allan

4

SQL उस डोमेन के लिए ठीक काम करता है जिसके लिए इसे डिज़ाइन किया गया था - डेटा की परस्पर संबंधित तालिकाएँ। यह आम तौर पर पारंपरिक व्यापार डेटा प्रसंस्करण में पाया जाता है। SQL ऑब्जेक्ट के जटिल नेटवर्क को बनाए रखने की कोशिश करते समय अच्छी तरह से काम नहीं करता है।

यदि आपकी ज़रूरतें अपेक्षाकृत पारंपरिक डेटा को संग्रहीत और संसाधित करने के लिए हैं, तो कुछ SQL- आधारित DBMS का उपयोग करें।

आपके संपादन के जवाब में:

यदि आप संबंधपरक डेटा स्टोर से डेटा पुनर्प्राप्त करने के लिए SQL DML के विकल्प की तलाश कर रहे हैं, तो मैंने SQL के लिए कोई गंभीर विकल्प नहीं सुना है।

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


1
हाँ, मुझे यह लिखने के बाद एहसास हुआ कि सभी चीजें जो SQL और संबंधपरक डेटाबेस एक ही बात हैं ..
ब्रेंडन लॉन्ग

4

संबंधपरक डेटाबेस केवल डेटाबेस के आसपास के प्रकार नहीं हैं। मुझे ऑब्जेक्ट-डेटाबेस के बारे में एक शब्द कहना चाहिए क्योंकि मैंने इसे दूसरों की प्रतिक्रियाओं में नहीं देखा है। मुझे Zope python फ्रेमवर्क के साथ कुछ अनुभव था जो RDBMS के बजाय वस्तुओं की दृढ़ता के लिए ZODB का उपयोग करते हैं (ठीक है, यह सैद्धांतिक रूप से ZODB को Zope के भीतर किसी अन्य डेटाबेस द्वारा प्रतिस्थापित करना संभव है, लेकिन पिछली बार जब मैंने जाँच की थी कि मैं इसे काम करने में सफल नहीं हुआ, इसलिए ऐसा कर सकता हूं। 'उस बारे में सकारात्मक मत रहो)।

ZODB मानसिकता वास्तव में अलग है, ऑब्जेक्ट प्रोग्रामिंग की तरह अधिक है जो लगातार बनी रहेगी।

ORM को एक तरह की भाषा के रूप में देखा जा सकता है

एक तरह से मेरा मानना ​​है कि ऑब्जेक्ट-डेटाबेस मॉडल वह है जो ओआरएम के बारे में है: अपने सामान्य ऑब्जेक्ट मॉडल के माध्यम से लगातार डेटा तक पहुंचना। यह एक तरह की भाषा है और यह कुछ बाजार हिस्सेदारी हासिल कर रही है, लेकिन अब हम इसे भाषा के रूप में नहीं बल्कि एक अमूर्त परत के रूप में देखते हैं। हालाँकि मेरा मानना ​​है कि किसी ऑब्जेक्ट-डेटाबेस पर SQL की तुलना में ORM का उपयोग करना बहुत अधिक कुशल होगा (ORMs के दूसरे शब्दों में प्रदर्शन मैं कुछ SQL डेटाबेस का उपयोग बेस लेयर्स के रूप में उपयोग करने के लिए हुआ)।


3

SQL (SQL Server, mysql, Oracle, इत्यादि) के कई कार्यान्वयन हैं, लेकिन कोई अन्य भाषा नहीं है जो संबंधपरक डेटा संग्रहण और पुनर्प्राप्ति के लिए डिज़ाइन किए गए सामान्य उद्देश्य भाषा होने के अर्थ में समान उद्देश्य से कार्य करती है ।

वहाँ db4o जैसे ऑब्जेक्ट डेटाबेस हैं , और इसी तरह के तथाकथित noSQL डेटाबेस हैं जो किसी भी डेटा भंडारण तंत्र के बारे में बताते हैं जो एसक्यूएल पर भरोसा नहीं करता है , लेकिन कैसंड्रा जैसे अधिकांश खुले स्रोत वाले उत्पाद Google की बिगटेबल अवधारणा पर शिथिल रूप से आधारित हैं ।

CDF जैसे कई विशेष-उद्देश्य डेटाबेस उत्पाद भी हैं, लेकिन आपको शायद उन लोगों के बारे में चिंता करने की ज़रूरत नहीं है - यदि आपको एक की आवश्यकता है, तो आपको पता चल जाएगा।

इनमें से कोई भी SQL के बराबर नहीं है।

इसका मतलब यह नहीं है कि वे "बेहतर" या "बदतर" हैं - वे सिर्फ एक ही नहीं हैं। डेनिस फोर्ब्स ने हाल ही में एसक्यूएल के खिलाफ कई अजीब दावों को खारिज करते हुए एक शानदार पोस्ट लिखा । वह कहता है (और मैं सहमत हूं) कि ये शिकायतें बड़े पैमाने पर उन लोगों और दुकानों से उत्पन्न होती हैं जिन्होंने या तो नौकरी के लिए गलत उपकरण को पहली जगह पर उठाया है, या वे अपने SQL DBMS का ठीक से उपयोग नहीं कर रहे हैं (मैं तब भी हैरान नहीं हूं जब मैं एक और SQL डेटाबेस देखें जहाँ हर कॉलम एक है varchar(50)और एक भी इंडेक्स या की, कहीं भी नहीं है)।

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


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

शायद आप वाक्यविन्यास पर अमूर्त की तलाश कर रहे हैं; Linq to SQL, Entity Framework, Hibernate / NHibernate, SubSonic, और अन्य ORM उपकरणों के एक मेजबान सभी अपने स्वयं के SQL जैसे सिंटैक्स प्रदान करते हैं जो काफी SQL नहीं है। ये सभी SQL को "कंपाइल डाउन" करते हैं। यदि आप SQL सर्वर चलाते हैं, तो आप CLR फ़ंक्शंस / प्रक्रिया / ट्रिगर भी लिख सकते हैं, जो आपको किसी भी .NET भाषा में कोड लिखने की अनुमति देता है जो डेटाबेस के अंदर चलेगा; हालाँकि, यह वास्तव में SQL के लिए एक विकल्प नहीं है, इसके विस्तार के लिए और अधिक।

मैं किसी भी पूर्ण "भाषा" के बारे में नहीं जानता, जिसे आप SQL डेटाबेस के ऊपर लेयर कर सकते हैं; एक अलग डेटाबेस उत्पाद पर स्विच करने की कमी, आप अंततः पाइप पर एसक्यूएल देखने जा रहे हैं।


मुझे लगता है कि आप SQL डेटाबेस के साथ संबंधपरक डेटाबेस को भ्रमित कर रहे हैं। कोई विशेष कारण नहीं है कि एक रिलेशनल डेटाबेस को SQL का उपयोग करना पड़ता है (सिवाय इसके कि हर कोई इसका उपयोग करता है)। और हाँ, मुझे पता है कि अधिकांश डेटाबेस उत्पाद केवल एसक्यूएल का उपयोग करते हैं।
ब्रेंडन लॉन्ग

1
@ ब्रेंडन लॉन्ग: यह सही है, एक रिलेशनल डेटाबेस में एसक्यूएल का उपयोग नहीं होता है। हालाँकि, यही रिलेशनल डेटाबेस उपयोग करते हैं। आज अस्तित्व में अन्य गैर-SQL उत्पाद रिलेशनल डेटाबेस नहीं हैं।
एरोनियर ने

D और Quel के बारे में क्या? वे बहुत लोकप्रिय नहीं हैं, लेकिन वे मौजूद हैं (और वे रिलेशनल डेटाबेस के लिए उपयोग किए जाते हैं)।
ब्रेंडन लॉन्ग

1
@ ब्रेंडन लॉन्ग: क्वेल, जहाँ तक मुझे पता है, एसक्यूएल द्वारा सुपरसीड किया गया है। पहली बार मैंने डी के बारे में सुना है, और विकी लेख से मैंने देखा कि ऐसा प्रतीत होता है कि यह वास्तव में प्रति भाषा नहीं है, बल्कि सुविधाओं का एक निर्धारित सेट है जो एक डीबी भाषा होनी चाहिए। हालांकि कुछ बहुत अस्पष्ट कार्यान्वयन हो सकते हैं, मुझे नहीं लगता कि यह ऊपर कुछ भी बदलता है। इसके अलावा, मुझे लगता है कि आपको एहसास होना चाहिए कि जब लोग "एसक्यूएल सक्स" कहते हैं, तो वे एसक्यूएल व्याकरण का उल्लेख नहीं कर रहे हैं, वे (सही या गलत) एसक्यूएल-आधारित रिलेशनल डेटाबेस का जिक्र कर रहे हैं।
एरोन्यूथ

3

एसक्यूएल डी-फैक्टो है।

फ्रेमवर्क जो डेवलपर्स से इसे ढालने की कोशिश करते हैं, उन्होंने अंततः अपनी विशिष्ट भाषा बनाई है (हाइबरनेट HQL का ध्यान आता है)।

SQL एक समस्या को काफी अच्छी तरह से हल करता है। उच्च स्तरीय प्रोग्रामिंग भाषा की तुलना में इसे सीखना अधिक कठिन नहीं है। यदि आप पहले से ही एक कार्यात्मक भाषा जानते हैं तो यह एसक्यूएल को समझने के लिए एक हवा है।

कला डेटाबेस (ओरेकल और एसक्यूएल सर्वर) प्रदान करने वाले प्रमुख डेटाबेस विक्रेताओं को ध्यान में रखते हुए एसक्यूएल का समर्थन करें और अनुकूलन इंजन, आदि और सभी प्रमुख डेटा मॉडलिंग सॉफ्टवेयर और एसक्यूएल में प्रबंधन सॉफ्टवेयर सौदों को बदलने में वर्षों का निवेश किया है, मैं कहूंगा कि यह है। सबसे सुरक्षित शर्त।

साथ ही, केवल क्वेरीज़ की तुलना में डेटाबेस में अधिक है। स्केलेबिलिटी, बैकअप और रिकवरी, डाटा माइनिंग है। बड़े विक्रेता बहुत सी चीजों का समर्थन करते हैं जो नए "कैश" इंजन भी नहीं मानते हैं।


LINQ SQL से डेवलपर्स को ढालने के लिए डिज़ाइन की गई भाषा नहीं है, यह एक क्वेरी सिंटैक्स है जो संग्रह को पूछताछ करने के लिए उपयोग किया जाता है, जिसे अन्य संग्रह स्रोतों का समर्थन करने के लिए बढ़ाया जा सकता है। SQL डेटाबेस केवल उन स्रोतों में से एक होता है।
खानजोर

अच्छा बिंदु, LINQ एक वैध उदाहरण नहीं है। संपादित।
कोडेनहेम

2

SQL के साथ समस्याओं ने मुझे पोर्टल ड्राफ्ट रिपॉजिटरी विकी पर SMEQL नामक ड्राफ्ट क्वेरी भाषा को पकाने के लिए प्रेरित किया । टिप्पणियाँ स्वागत है। यह कार्यात्मक प्रोग्रामिंग और आईबीएम के प्रयोगात्मक बिजनेस सिस्टम 12 भाषा से विचारों को उधार लेता है। (मैंने मूल रूप से इसे TQL कहा था, लेकिन बाद में पाया कि नाम लिया गया था।)


SMEQL रहता है? क्या यह C2 के बाहर मौजूद है? क्या कोई सॉफ्टवेयर है?
david.pfx

वहाँ भी है "BQL" - एसक्यूएल सुपरसेट प्रस्ताव है, जो हो सकता है transpiled को एसक्यूएल tech.pro/blog/1917/...
Nickolay

1

.NET दुनिया के भीतर, जबकि इसमें अभी भी एसक्यूएल-एस्क महसूस होता है, LINQ-to-SQL आपको SQL और इन-मेमरी .NET के अच्छे मिश्रण की अनुमति देगा। यह निचले स्तर के डेटा प्लंबिंग को बहुत सरल करता है जो कोई भी वास्तव में करना नहीं चाहता है।

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


0

एसक्यूएल भाषा बहुत शक्तिशाली है, और संबंधपरक डेटाबेस प्रबंधन प्रणाली रही है और अभी भी एक बड़ी सफलता है। लेकिन अनुप्रयोग का एक वर्ग है जिसके लिए बहुत उच्च मापनीयता और उपलब्धता की आवश्यकता होती है, लेकिन जरूरी नहीं कि एक उच्च स्तर की डेटा संगति (अंततः संगति क्या मायने रखती है)। विभिन्न प्रणालियों को बेहतर प्रदर्शन और स्केलिंग मिलता है जो RDBMS की तुलना में पूर्ण ACID अनुरूप लेनदेन की आवश्यकता को पूरा करता है। इन्हें "NoSQL" नाम दिया गया है, लेकिन जैसा कि अन्य लोग बताते हैं, यह एक मिथ्या नाम है: कि शायद उन्हें NoACID डेटाबेस कहा जाए।

माइकल स्टोनब्रेकर ने इसे "NoSQL" चर्चा में शामिल किया है जिसमें SQL के साथ कुछ नहीं करना है


तो क्या NoACID "डेटाबेस" SQL के लिए एक डेटाबेस एक्सेस भाषा के रूप में एक विकल्प है? नहीं, वे नहीं हैं।
रीइंजिएरपोस्ट

जबकि SQL शक्तिशाली है, रिलेशनल बीजगणित अधिक शक्तिशाली है।
मैकाय

@reineirpost: सहमत। आप NoACID डेटाबेस को क्वेरी करने के लिए SQL का उपयोग कर सकते हैं। आप संबंधों के बजाय पाठ फ़ाइलों को भी क्वेरी कर सकते हैं (कुछ प्राचीन यूनिक्स कमांड लाइन उपकरण रिलेशनल बीजगणित में संचालन के अनुरूप हैं।
जिम फेर्र्स

@MKKay: क्या कोई वाणिज्यिक RDBMS है जो एक संबंधपरक बीजगणित वाक्यविन्यास का समर्थन करता है? जो शांत हो जाएगा।
जिम फ्राँस

इस सूत्र में अन्य लोगों ने डाटापोर जैसे सामान का उल्लेख किया है और संबंधपरक बीजगणित का बेहतर तरीके से पालन करने का लक्ष्य रखा है।
मैके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.