एक डेटाबेस का उपयोग करके कई डेटाबेस बनाम का उपयोग करने के पेशेवरों / विपक्ष


14

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

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

मेरे पास अभी तक एक तर्क डेटा अखंडता है (मैं डेटाबेस के बीच विदेशी कुंजी का उपयोग नहीं कर सकता)।

एकल या एकाधिक डेटाबेस का उपयोग करने के लिए क्या अच्छा है?

[अब तक का सारांश]

कई डेटाबेस के विरुद्ध तर्क:

  • डेटा अखंडता खोना (डेटाबेस पर विदेशी कुंजी का उपयोग नहीं कर सकते)

  • अखंडता को बहाल करना

  • जटिलता प्राप्त करना (db उपयोगकर्ता / भूमिकाएँ)

  • छोटा अंतर सर्वर / डेटाबेस नीचे जाएगा

समाधान:

  • डोमेन को अलग करने के लिए स्कीमा का उपयोग करें।

  • POC: 7/1 db की निष्पादन योजनाओं में बिंदु को साबित करने के लिए डमी डेटा का उपयोग करें


यह एक जटिल क्षेत्र है और पेशेवरों और विपक्ष हैं - यहां एक नज़र डालें और भीतर लिंक दें।
वेरेस

जवाबों:


16

प्रदर्शन, स्थिरता, अनुकूलन में से कोई भी सच नहीं है। क्या किसी के पास एक ठोस तर्क या संदर्भ लेख है कि ये सच क्यों होंगे?

संसाधनों को एक डेटाबेस के लिए आवंटित नहीं किया जाता है: SQL सर्वर इंस्टेंस संसाधनों को संतुलित करता है ताकि कोई फर्क न पड़े

तुम हारे:

  • डेटा अखंडता
  • अखंडता को पुनर्स्थापित करें (DB7 में डेटा बाद में होगा तब DB1)

आप जटिलता प्राप्त करते हैं:

  • सुरक्षा (उपयोगकर्ता, भूमिकाएं आदि) सभी डेटाबेस में होनी चाहिए
  • आपके पास कुछ डेटा होगा जो 1 डेटाबेस में अच्छी तरह से फिट नहीं होता है

विकल्प:

  • अलग-अलग डिस्क पर डेटाबेस को विभाजित करके फाइलग्रुप के साथ किया जा सकता है
  • स्कीमा का उपयोग तार्किक रूप से अलग डेटा (अन्य उत्तर पर आधारित) के लिए करें

उसी तरह ओपी के पास प्रदर्शन, स्थिरता और अनुकूलन बिंदुओं के स्रोत नहीं हैं, आप भी कोई नहीं प्रदान करते हैं जो अन्यथा साबित होता है।
MMalke

6

यदि आप तार्किक डोमेन द्वारा डेटा को विभाजित करने के बाद हैं, तो आप हमेशा SQL2008 के भीतर स्कीमा का उपयोग करके देख सकते हैं (डीबीओ के डिफ़ॉल्ट से दूर जा रहे हैं।) लेकिन यहां तक ​​कि दर्दनाक है और OR / Ms के साथ समस्याएँ पैदा कर सकते हैं जो एक गैर की उम्मीद नहीं कर रहे हैं। -स्टैंडर्ड स्कीमा।

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

परीक्षण के रूप में, 7 डमी डेटाबेस का निर्माण करें। एक क्वेरी बनाएं जिसमें सभी 7 से एक साथ डेटा की आवश्यकता हो, या कम से कम उनकी अच्छी संख्या हो।

फिर निष्पादन योजनाओं की तुलना करें! मुझे लगता है कि आप अपना मामला वहीं जीत लेंगे।


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

6

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

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


ग्राहक ने 'प्रदर्शन, स्थिरता और अनुकूलन अभी तक' पर विवरण नहीं बताया है। मैं भी इस उत्तर के लिए उत्सुक हूं। इस सप्ताह के अंत में उनसे बात की जाएगी।

4

सोचा प्रयोग: अपने डेटाबेस को सात टुकड़ों में विभाजित करने के बजाय, इसे 7,000 टुकड़ों में विभाजित करें। क्या संभावना है कि एक हार्डवेयर विफलता आपके आवेदन को प्रभावित करने वाली है? यदि कोई 0.1% संभावना है कि किसी विशेष दिन किसी विशेष सर्वर की मृत्यु हो सकती है, तो क्या आपकी संभावना बेहतर या बदतर है कि आप उन हार्डवेयर की विफलता से प्रभावित होने जा रहे हैं जो आपके द्वारा निर्भर मशीनों की संख्या में वृद्धि कर रहे हैं?

मुझे लगता है कि "डेटाबेस" की धारणा को दो टुकड़ों में विभाजित करना महत्वपूर्ण है: स्कीमा और डेटा बनाम हार्डवेयर जो डेटा की सेवा के लिए उपयोग किया जाता है।

एकाधिक मशीनों में डेटाबेस को तोड़ना इस विषय में अन्य उत्तरों द्वारा बताए गए कई कारणों से आपको अच्छा नहीं लगता।

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


2

मैं एक डीबी के साथ और फ़ाइल और स्कीमा विकल्पों का उपयोग करने के बजाय संक्षिप्त करता हूं।

ऐसे किनारे मामले हैं जहां कई टुकड़ों में विभाजित होने से समझ में आता है।

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

ग्राहक विशिष्ट प्रक्रिया को अलग-थलग करने के तरीके के रूप में भी।

लेकिन ये समर्थन हैं और प्रदर्शन के मुद्दे नहीं हैं।

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