क्या डेटाबेस सर्वर का उपयोग करने से समझ में आता है कि क्या एप्लिकेशन केवल स्थानीय रूप से काम करता है?


41

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

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

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


4
डेटाबेस होना बहुत महत्वपूर्ण हो सकता है। इन-प्रोसेस डेटाबेस या एक अलग-प्रक्रिया डेटाबेस होना एक कार्यान्वयन विकल्प / विवरण है।
9000

2
मैं समझता हूँ कि। यह सवाल अधिक है कि आप स्थानीय अनुप्रयोगों के लिए इन-प्रोसेस डेटाबेस (SQLite जैसे) पर एक अलग प्रक्रिया डेटाबेस (जैसे mysql सर्वर) क्यों चुनेंगे।
9a3eedi

जवाबों:


29

SQLite इसका उपयोग करने के लिए या नहीं बनाम विकल्पों में से एक बहुत अच्छा ठहरनेवाला प्रदान करता है:

https://www.sqlite.org/whentouse.html

यह सारांश लाइन मेरे अनुभव में SQLite के उपयोग-मामले को बहुत अच्छी तरह से पकड़ती है:

SQLite क्लाइंट / सर्वर डेटाबेस के साथ प्रतिस्पर्धा नहीं करता है। SQLite fopen () के साथ प्रतिस्पर्धा करता है।

लेख इस बिंदु पर लंबाई में विस्तार करता है। इसमें "सिचुएशंस जहां ए क्लाइंट / सर्वर आरडीबीएमएस मई वर्क बेटर" शीर्षक से एक सेक्शन भी है। संक्षेप में, वे हैं:

  • क्लाइंट / सर्वर अनुप्रयोग : एक नेटवर्क पर कई उपयोगकर्ता।
  • उच्च मात्रा वाली वेबसाइटें : या तो गहन लिखना या गहन पढ़ने के लिए शार्पिंग की आवश्यकता होती है।
  • बहुत बड़े डेटासेट : एक डिस्क पर यथोचित रूप से संग्रहीत किए जा सकते हैं।
  • उच्च समवर्ती : विशेष रूप से समवर्ती लिखते हैं।

@ 9a3eedi: वास्तव में, उन चार बिंदुओं में से कोई भी ऐसा नहीं है जो स्थानीय भंडारण के साथ संयोजन में एक पूर्ण डेटाबेस सर्वर के साथ एक परिदृश्य का वर्णन करता है (विशेष रूप से पहले दो उस के बिल्कुल विपरीत हैं) - तो क्या आप हमें यह बताने के लिए मन करेंगे कि आपने इसे क्यों चुना उत्तर, हालांकि यह आपके मूल प्रश्न के अनुकूल नहीं है? वैसे, मैंने इस उत्तर को बिल्कुल उसी कारण से अस्वीकार कर दिया।
डॉक्टर ब्राउन

@DocBrown: विशिष्ट मामले जहां आपको क्लाइंट / सर्वर का उपयोग करना चाहिए RDBMS हैं [उत्तर देखें]; सब कुछ के लिए SQLite ठीक काम करता है। मुझे यकीन नहीं है कि वहाँ क्या अस्पष्ट है, इसलिए यदि आपको लगता है कि यह आवश्यक है तो उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें।
डेनिस डे बर्नार्डी

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

@DocBrown - और संक्षिप्त उत्तर है: इसका कोई मतलब नहीं है जब तक कि आप बाहरी डेटा सेट या समवर्ती लेखन की जरूरत नहीं है। (या, स्पष्ट कारणों के लिए, कुछ SQLite की पेशकश नहीं करता है की जरूरत है।) फिर से, यदि वह बिंदु आपके लिए अस्पष्ट है, तो उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें।
डेनिस डे बर्नार्डी

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

28

एकल उपयोगकर्ता के साथ एकल प्रणाली के लिए भी, एक "वास्तविक" डेटाबेस सर्वर समझ में आता है:

  1. यह एक परिचित भाषा ( एसक्यूएल ) का उपयोग करता है । SQLite SQL का उपयोग करता है, लेकिन कुछ एम्बेडेड डेटाबेस (जैसे ऑब्जेक्ट डेटाबेस , NoSQL ) SQL का उपयोग नहीं करते हैं। उन लोगों में सीखने की अवस्था अधिक होती है क्योंकि वे कम सामान्य होते हैं।
  2. यह संदर्भात्मक अखंडता, बाधाएं, ट्रिगर आदि प्रदान करता है जो कि SQLite जैसे उत्पाद पूर्ण रूप से प्रदान नहीं कर सकते हैं या कम से कम प्रदान करते हैं।
  3. एक सच्चे बहु-उपयोगकर्ता, ACID आज्ञाकारी नेटवर्क डेटाबेस को लक्षित करके , आवेदन में एक ही उपयोगकर्ता / एकल कार्य केंद्र परिदृश्य या एक बहु-उपयोगकर्ता के रूप में काम करने का विकल्प होता है, एक ही कोडबेस का उपयोग करके होस्ट किया गया अनुप्रयोग ।
  4. उपयोगकर्ता के पास मानक उपकरणों (जैसे SQL डेवलपर, MySQL कार्यक्षेत्र, SQL सर्वर प्रबंधन स्टूडियो) का उपयोग करके ऑफ़लाइन डेटा की जांच करने की क्षमता है, उन उपकरणों का उपयोग करके डेटा लोड या बैकअप करते हैं, आदि जबकि विभिन्न के कई एम्बेडेड डेटाबेस के साथ ऐसा करना संभव है। प्रकार, शायद लोग C / S डेटाबेस दुनिया के उन टूल से अधिक परिचित हैं।

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


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

3
@DocBrown IIRC MS SQLServer Compact आपको यह देता है क्योंकि यह एक dll के रूप में आता है, हालाँकि LocalDB शायद सबसे अच्छा विकल्प है - इसे एक सेवा के रूप में स्थापना की आवश्यकता नहीं है, हालांकि इसके लिए व्यवस्थापक अधिकारों की आवश्यकता है।
gbjbaanb

5
ड्राबैक वैधता चर्चा में जोड़ने के लिए - SQLite के अलावा उत्सुकता से पहले से ही उत्तर में उल्लेख किया गया है, गैर-SQL डेटाबेस और डेटाबेस जैसी कई प्रणालियों, जैसे OrientDB, Solr, और अन्य ने एम्बेडिंग समर्थन को समर्पित किया है
मिकोलाक

14
SQLite संदर्भात्मक अखंडता प्रदान करता है (हालांकि इसे चालू करने की आवश्यकता है) और बुनियादी बाधाओं। अगर सही तरीके से इस्तेमाल किया जाए तो यह ज्यादातर सर्वर से काफी तेज है। सर्वर की तुलना में यह मुख्य नुकसान है कि यह एकल-लेखक है।
Jan Hudec

2
@DocBrown: फायरबर्ड का एम्बेडेड डेटाबेस पूर्ण SQL समर्थन प्रदान करता है, जिसमें संदर्भात्मक अखंडता, ACID की गारंटी, संग्रहीत प्रॉकर्स और ट्रिगर शामिल हैं। यह एक एम्बेडेड डेटाबेस के लिए कई समवर्ती कनेक्शनों का समर्थन करने के लिए उपयोग नहीं किया गया था, और मुझे यकीन नहीं है कि यह सीमा अभी भी है या नहीं, लेकिन संपूर्ण SQL सुविधा सेट वहाँ है।
मेसन व्हीलर

21

मुझे लगता है कि इसका जड़ता से लेना-देना है।

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

SQLlite जैसे अच्छे स्थानीय एम्बेडेड डेटाबेस की आगामी और लाभकारी लोकप्रियता काफी हाल ही में कुछ है।


मुझे जो याद है, अमरोक्स 1 (जो कि एक्सएमएमएस पर आधारित हो सकता है) एक डेटाबेस सर्वर पर निर्भर नहीं था। यह अमरॉक 2 था, जिसे केडीई 4 के साथ रिलीज़ किया गया था, जिसने निर्भरता का परिचय दिया, और उस समय मुझे यह बहुत अजीब लगा कि उन्हें मुझे MySQL को स्थापित करने और पृष्ठभूमि में चलने की आवश्यकता होगी
9a3eedi

10

सबसे महत्वपूर्ण भेदभावपूर्ण विशेषता संगामिति है

यदि आपके पास केवल एक ही एप्लिकेशन है जो उपयोगकर्ता के लिए एक उदाहरण में चलता है, तो एम्बेडेड समाधान (चाहे sqlite या कुछ ऑब्जेक्ट स्टोरेज) आमतौर पर ठीक है।

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


5

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

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

मुझे इस बात का कोई अंदाजा नहीं है कि दिया गया उदाहरण इसका फायदा उठाता है या नहीं।


2

जब तक आप कम मेमोरी और सीपीयू के साथ एक एम्बेडेड सिस्टम नहीं चला रहे हैं, मुझे नहीं लगता कि पृष्ठभूमि पर सर्वर चलाना आपको कोई नुकसान पहुंचा रहा है।

स्थानीय रूप से डेटाबेस सर्वर चलाना ठीक है। डेटाबेस डेटा तक पहुंचने और हेरफेर करने के लिए है। नेटवर्क एक्सेस एक प्लस है, जिसकी आवश्यकता हो सकती है या नहीं भी हो सकती है। कुछ इंजीनियरिंग और वैज्ञानिक उपकरण हैं जो ऐसा करते हैं।

कहें कि आप स्थानीय एप्लिकेशन पर डेटा का उपयोग कर रहे हैं। आपको डेटाबेस का उपयोग क्यों नहीं करना चाहिए? क्या विरोध किया?


अगर मैं सामान्य उपयोगकर्ताओं के लिए एक एप्लिकेशन को तैनात करने के लिए (अमरोके जैसे एक संगीत खिलाड़ी कहते हैं), मुझे लगता है कि उन्हें MySQL सर्वर स्थापित करने और पृष्ठभूमि में इसे चलाने के लिए एक प्रणाली की आवश्यकता का एक बहुत अधिक है और कुछ उपयोगकर्ताओं को होगा उसके जैसा नहीं। लेकिन मुझे लगता है कि यह आवेदन पर निर्भर करता है। यह SQLite जैसी किसी चीज़ का उपयोग करने के विपरीत है।
9a3eedi

2

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

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

यदि आपको सीमित डेटा के साथ और भी अधिक दक्षता की आवश्यकता है, तो इन-मेमोरी डेटाबेस का डिज़ाइन चयन बेहतर है।

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

अमारोक मामले के लिए, मुझे लगता है कि यह उस समय खुले स्रोत डीबीएमएस का चयन था, इससे पहले कि वे एम्बेडेड डेटाबेस का मार्ग चुन लें।

यदि आपके हाथ में एक विशिष्ट सिस्टम परिभाषा है, तो विपक्ष और पेशेवरों को वजन करना आसान होगा।

वी / आर, उमुट

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