क्या यह कभी समझ में आता है कि विदेशी कुंजी, चेक की कमी, आदि के बजाय डेटाबेस की अखंडता के लिए आवेदन को लागू करना होगा?
आंतरिक डेटाबेस टूल के माध्यम से डेटाबेस अखंडता को लागू नहीं करने के लिए प्रदर्शन प्रदर्शन में सुधार की कितनी उम्मीद की जा सकती है?
क्या यह कभी समझ में आता है कि विदेशी कुंजी, चेक की कमी, आदि के बजाय डेटाबेस की अखंडता के लिए आवेदन को लागू करना होगा?
आंतरिक डेटाबेस टूल के माध्यम से डेटाबेस अखंडता को लागू नहीं करने के लिए प्रदर्शन प्रदर्शन में सुधार की कितनी उम्मीद की जा सकती है?
जवाबों:
सच कहा जाए, तो न केवल आप डेटाबेस में विदेशी प्रमुख बाधाओं से बहुत अधिक प्रदर्शन हानि देखेंगे, बल्कि आप प्रदर्शन में वृद्धि देखेंगे। SQL सर्वर क्वेरी ऑप्टिमाइज़र प्राथमिक और foriegn कुंजी और साथ ही अन्य प्रकार की डेटा बाधाओं की अवधारणा के आसपास बनाया गया है। यदि ये लागू हैं और आप बेहतर प्रदर्शन पाने के लिए अनुकूलक का लाभ उठा सकते हैं तो इन्हें लागू किया जा सकता है। यहां एक सरल उदाहरण के साथ एक ब्लॉग पोस्ट है जो इसे कार्रवाई में दिखाता है।
यदि आप एक किनारे के मामले में हैं जहाँ आपके पास वास्तव में रीड्स की तुलना में अधिक आवेषण हैं (और अपडेट और डिलीट के लिए रीड्स की आवश्यकता होती है, तो वे आमतौर पर रीड काउंट को जोड़ते हैं), तो यह प्रदर्शन के लिए डेटा से बाधाओं को दूर करने के लिए समझ में आता है, हो सकता है । लेकिन जब से डेटाबेस के भारी बहुमत को उन्मुख पढ़ा जाता है, आप प्रदर्शन को बढ़ा रहे हैं, इसे बढ़ा नहीं रहे हैं।
और इसमें से कोई भी इस तथ्य का उल्लेख नहीं करता है कि डेटा अखंडता को डेटाबेस में बेहतर तरीके से संभाला जाता है क्योंकि आपको केवल इसे एक बार बनाना होता है जैसे कि यदि आप कोड में सभी काम करते हैं, तो आपको इसे कई बार कई ऐप के लिए करना होगा (जब तक आप डिज़ाइन नहीं करते हैं आपके डेटा एक्सेस लेयर को सावधानीपूर्वक और हर ऐप को उसी लेयर के माध्यम से जाने के लिए db तक पहुँचने की आवश्यकता होती है)।
यदि आप एक रिलेशनल डेटाबेस सिस्टम का उपयोग कर रहे हैं, तो मैं कहता हूं, वास्तव में इसका उपयोग क्यों नहीं करते। यदि आपको संबंधपरक डेटा की आवश्यकता नहीं है, तो Hadoop या किसी अन्य चीज़ के साथ जाएं।
बहुत सारे एप्लिकेशन डेवलपर्स ऐसा सोचते हैं।
जब आपको एप्लिकेशन कोड के लिए डेटा अखंडता को सौंपने का प्रलोभन दिया जाता है, तो सोचें "हर प्रोग्रामर और हर एप्लिकेशन जो अब तक इस डेटाबेस को हिट करता है, समय के अंत तक इसे पूरी तरह से सही, हर बार प्राप्त करना है।"
हालात क्या हैं?
यहां तक कि अगर कोई प्रदर्शन लाभ है, तो यह संदर्भात्मक अखंडता और सामान्यीकृत डेटा अखंडता की वापसी की तुलना में नगण्य है।
लंबे समय से वे दिन हैं जहां एक डेटाबेस एक गूंगा डेटा स्टोर है। RDBMS की पेशकश की शक्ति का लाभ उठाएं।
प्रदर्शन लाभ सब कुछ नहीं है, विशेष रूप से इस तरह के एक छोटे पैमाने पर। लेकिन जब आपको पता चलता है कि आपके पास एक विदेशी कुंजी संबंध है जिसे आपके आवेदन को लागू करने के लिए माना जाता है, और यह पता चला है कि संदर्भित तालिका में एक प्राथमिक कुंजी नहीं है तो आप प्रदर्शन लाभ (यदि कोई हो, तो मैं बहुत कम देखभाल कर सकता हूं) 'उस की बारीकियों पर बात नहीं करते)।
यदि आप एक बड़ा पर्याप्त डेटा लोड कर रहे हैं, और बाद में बाधाओं और अनुक्रमितों को फिर से सक्षम / कार्यान्वित कर रहे हैं, तो बाधाओं (विदेशी कुंजियों, चेक, आदि) और अनुक्रमित को छोड़ना आम बात है। उस मान्यता की एक समय लागत है। यह मानकर कि आप डेटाबेस विशिष्ट बल्क लोड सिंटैक्स (incl। न्यूनतम लॉगिंग) का उपयोग नहीं कर सकते हैं।
यह कहना असंभव है कि प्रदर्शन में कितनी वृद्धि होने की उम्मीद है - प्रत्येक स्थिति अद्वितीय है (डेटा प्रकार, डिज़ाइन, आदि)। सही मायने में पता करने का एकमात्र तरीका परीक्षण करना है।
कुछ समय होते हैं जब रास्ते में अड़चनें आती हैं:
जब आपको सिंगल टेबल इनहेरिटेंस (एसटीआई) का उपयोग करने की आवश्यकता होती है । कल्पना कीजिए कि आप दोनों व्यक्तियों और संगठनों को बेचते हैं। आपको एक "पार्टी" तालिका की आवश्यकता होगी जिसकी पंक्ति या तो एक व्यक्ति या एक अंग है। एसटीआई का मतलब है कि आपको कुछ अशक्त क्षेत्र चाहिए जो अशक्त न हों। क्लास टेबल इनहेरिटेंस इसे हल करती है, लेकिन कुछ ओआरएम के लिए यह कठिन है। उदाहरण के लिए, रूबी का ActiveRecord केवल STI का समर्थन करता है।
जब आपको किसी इकाई के ड्राफ्ट संस्करणों का समर्थन करने की आवश्यकता होती है, तो यह पूरी तरह से मान्य नहीं हो सकता है। आप ड्राफ्ट को जौन के रूप में संग्रहीत कर सकते हैं, लेकिन फिर क्लाइंट पर समान पहचानकर्ता का पुन: उपयोग करना कठिन है - कल्पना करें कि इसे आईडी = 5 के साथ सहेजा गया है, जिसे मान्य नहीं होने के लिए संपादित किया गया है, और ड्राफ्टिड = 99 के रूप में स्वतः सहेजा गया है। इस मामले में आपके सभी क्षेत्रों को शायद अशक्त होना पड़ेगा।