बड़े डेस्कटॉप अनुप्रयोगों में SQL इतना व्यापक क्यों नहीं है?


28

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

अब, मैं डेटाबेस और सामान्य अनुप्रयोगों में उनके उपयोग के बारे में कुछ बातें सोच रहा हूँ:

  • क्यों Windows स्वयं किसी भी "केंद्रीय" SQL डेटाबेस का उपयोग नहीं करता है? उदाहरण के लिए:
    • त्रुटियों की रिपोर्ट करने वाले डेटा को फ़ाइलों के एक समूह में संग्रहीत किया जाता है,
    • Windows अद्यतन फ्लैट फ़ाइलों में सब कुछ संग्रहीत करता है,
    • प्रतीक कैश को बहुत ही अजीब सिंगल फाइल में संग्रहित किया जाता है, जो एसक्यूएल आदि के माध्यम से एक्सेस नहीं होता है।
  • क्यों कई बड़े अनुप्रयोग डेटाबेस का उपयोग करने से बचते हैं? उदाहरण के लिए, .pst फ़ाइलों के लिए अपने स्वयं के प्रारूप होने और रजिस्ट्री में कुछ डेटा संग्रहीत करने के बजाय Microsoft एक वास्तविक डेटाबेस का उपयोग करके Microsoft आउटलुक को हासिल नहीं करेगा?

यदि डेटाबेस समग्र जटिलता की एक अतिरिक्त परत और एक छोटे प्रदर्शन हानि जोड़ता है, तो यह अधिकांश परिस्थितियों में कोड को सरल बनाने का एक बड़ा लाभ की कीमत है, खासकर जब यह बड़े बाइनरी के बजाय डेटा के छोटे संगठित विखंडन के भंडारण की बात आती है। धाराओं। तो क्यों कुछ उत्पादों वास्तव में डेटाबेस का उपयोग कर रहे हैं? संभवत: एकमात्र आवेदन मुझे पता है कि वास्तव में Sqlite डेटाबेस का उपयोग करने वाला फ़ायरफ़ॉक्स है, और शायद Microsoft एक्सचेंज (लेकिन अंतिम एक डेस्कटॉप डिवाइस नहीं है)?

इसके अलावा, Microsoft Office या Microsoft अभिव्यक्ति जैसे अनुप्रयोगों का एक सेट नहीं होगा, एकीकृत SQL डेटाबेस होने से लाभ , एप्लिकेशन को लागू करना, डेटा को अपडेट / अपग्रेड करना, उन अनुप्रयोगों के बीच डेटा साझा करना, बैकअप बनाना आसान बनाता है। , आदि।?


4
अपने खुद के मंच के लिए बोलो। ;) कई मैक / iPhone ऐप CoreData का उपयोग करते हैं, जो आमतौर पर भंडारण के लिए SQLite डेटाबेस का उपयोग करते हैं।
mipadi

8
डेटाबेस भी सिर्फ "फाइलों का एक गुच्छा" हैं। मेरा तर्क है कि आपके द्वारा प्रस्तुत किए गए सभी उदाहरण वास्तव में डेटाबेस हैं, न कि SQL- क्वेरी करने योग्य रिलेशनल डेटाबेस।
एलोन गुरेलनेक

8
डेटाबेस से उनका मतलब है रिलेशनल डेटाबेस।
ओलिवियर जैकोट-डेसकोम्बर्स

जवाबों:


20

1) आम तौर पर एक पूर्ण RDBMS चलाने का ओवरहेड बोलना बहुत अच्छा है और यह सिस्टम और जटिलता के लिए अनावश्यक भार जोड़ देगा।

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

2) कई डेटा स्टोर की विशिष्ट आवश्यकताएं होती हैं जो SQL सर्वर एक्सप्रेस जैसी किसी चीज से पूरी नहीं होती हैं।

उदाहरण के लिए, त्रुटि लॉग को इस बात को अधिकतम करने के लिए लिखा जाना चाहिए कि जो संभव होगा वह अधिकतम होगा और डेटा उपलब्ध होगा। SQL सर्वर कभी इतना आसान नहीं होगा।

अधिक जटिल अनुप्रयोगों के लिए तर्क बहुत विशिष्ट उपयोगकर्ता मामलों के लिए अनुकूलन के आसपास अधिक हो जाता है - फ्लैट फाइलें तेजी से बिजली हो सकती हैं।


5
मुझे नहीं लगता कि उनका मतलब उस तरह का डेटाबेस था जहां आपको एक पूरे सर्वर को स्थापित करने की आवश्यकता होती है। SQLite एक सर्वर के बिना काम करता है और खुले स्रोत अनुप्रयोगों में व्यापक है।
लॉरेंट

@ लॉरेंट - अगर वह नहीं था, तो उसने इसे स्वीकार किए गए उत्तर के रूप में क्यों चिह्नित किया जब वह नीचे SQL लाइट उत्तर को स्वीकार कर सकता था?
जॉन हॉपकिंस

30

कई एप्लिकेशन SQLite एम्बेड करते हैं । उनकी वेबसाइट से उद्धरण:

SQLite एक सॉफ्टवेयर लाइब्रेरी है जो एक आत्म निहित, सर्वर रहित, शून्य-कॉन्फ़िगरेशन, ट्रांसेक्शनल SQL डेटाबेस इंजन को लागू करता है। SQLite दुनिया में सबसे व्यापक रूप से तैनात SQL डेटाबेस इंजन है। SQLite का स्रोत कोड सार्वजनिक डोमेन में है। "

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


23

Windows शिप एक्सटेंसिबल स्टोरेज इंजन (ESE) नामक डेटाबेस इंजन के साथ आता है और उसका उपयोग करता है ।

ESE का उपयोग सक्रिय निर्देशिका, एक्सचेंज सर्वर, विंडोज मेल और डेस्कटॉप खोज द्वारा कई अन्य विंडोज सेवाओं और अनुप्रयोगों के बीच किया जाता है।

विकास के लिए, खुले स्रोत ईएसई आवरण मौजूद हैं:

विंडोज के हर आधुनिक संस्करण के साथ ईएसई शिपिंग के साथ आपके पास कोई डेटाबेस तैनाती की चिंता नहीं है। आर्किटेक्चरली ESE SQLite जैसे एम्बेडेड डेटाबेस में एक समान भूमिका भरता है।


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

8

रिलेशनल डेटाबेस हर डोमेन के लिए सबसे कुशल डेटा संरचना नहीं हैं। डेस्कटॉप अनुप्रयोगों के बहुत सारे एम्बेडेड डेटाबेस का उपयोग करते हैं, आप बस आसानी से नहीं बता सकते हैं कि वे ऐसा कर रहे हैं यदि आप देखते हैं कि वे डेटा फ़ाइलों के एक जोड़े हैं।


यह बिंदु है: क्यों न केवल Microsoft SQL सर्वर (एक्सप्रेस? या हर Windows प्लेटफ़ॉर्म पर पहले से इंस्टॉल किए गए एकल लोकलहोस्ट SQL सर्वर के लिए एक विशेष लाइसेंस?) का उपयोग कर रहा है एम्बेडेड (SQL नहीं?) डेटाबेस या Microsoft Outlook जैसे स्वयं के अलौकिक द्विआधारी प्रारूप के बजाय? ?
Arseni Mourzenko

क्योंकि उन्होंने कहा कि SQL सब कुछ के लिए इष्टतम नहीं है। कई एप्लिकेशन विशिष्ट डेटा स्टोर उसे एक कार्य के लिए अत्यधिक अनुकूलित करेंगे और परिणामस्वरूप SQL एक छोटे पदचिह्न के साथ तेजी से होगा।
जॉन हॉपकिंस

3
@ मेनमा: आपने अभी एक अतिरिक्त निर्भरता जोड़ी है: उपयोगकर्ता के पास SQL ​​सर्वर स्थापित और चल रहा है। यह तुच्छ नहीं है। यदि सभी विंडोज कंप्यूटरों पर एक विशेष लोकलहोस्ट एसक्यूएल सर्वर स्थापित किया गया था, तो यह अलग हो सकता है, लेकिन ऐसा नहीं होता है।
डेविड थॉर्नले

SQLServer कॉम्पैक्ट स्थापित करना आसान है: बस कुछ फ़ाइलों की प्रतिलिपि बनाएँ।
MarkJ

7

क्यों Windows स्वयं किसी भी "केंद्रीय" SQL डेटाबेस का उपयोग नहीं करता है?

दरअसल, यह विचार कुछ समय के लिए Microsoft में विकास में रहा है। इसे WinFS कहा जाता है । यह एक पेचीदा तकनीक है, और यह MSDN ग्राहकों के लिए उपलब्ध है। कुछ दिन जल्द ही, मैं इसे वीएम पर स्थापित करने जा रहा हूं और इसके साथ खेलूंगा।


2
मुझे अभी भी याद है कि WinFS विंडोज (उस समय) के लिए "अगली बड़ी चीज" था, जब मैं अभी भी जानता था कि पीसी का उपयोग कैसे किया जाता है। :-)
डेनिस डे बर्नार्डी

6

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

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

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

अधिकांश प्रोग्रामर इसे देखेंगे:

  • मुझे पता है कि ऐप को क्या करना है, यह सब करना है

  • मेरा ऐप एकमात्र एंट्री है जो कभी भी इन डेटा तक पहुंच और / या हेरफेर करेगा

  • मेरे अपने डिजाइन की एक साधारण फ़ाइल संरचना काम करेगी

  • कम से कम एक आवेदन के लिए मैं अन्य लोगों के कोड पर भरोसा करने से बचना चाहता हूं और उनका पूर्ण नियंत्रण है।


1
+1। आप सही हैं: डेस्कटॉप ऐप्स (ज्यादातर मामलों में) के लिए एक से अधिक कनेक्शन नहीं हैं, जो SQL डेटाबेस के लाभ को कम करता है।
बजे आर्सेनी मूरज़ेंको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.