गैर-संबंधपरक डेटाबेस डिज़ाइन [बंद]


114

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

विशेष रूप से, मैं इन नए डेटाबेस के साथ वैचारिक डेटा डिज़ाइन में अंतर के बारे में सीखना चाहता हूं । क्या आसान है, क्या कठिन है, क्या नहीं किया जा सकता है?

  • क्या आप वैकल्पिक डिजाइनों के साथ आए हैं जो गैर-संबंधपरक दुनिया में बेहतर काम करते हैं?

  • क्या आपने किसी ऐसी चीज़ के खिलाफ अपना सिर मारा है जो असंभव लगता है?

  • क्या आपने किसी भी डिजाइन पैटर्न के साथ अंतर को पाटा है, उदाहरण के लिए एक से दूसरे में अनुवाद करने के लिए?

  • क्या आप भी अब स्पष्ट रूप से डेटा मॉडल करते हैं (जैसे कि यूएमएल में) या आपने उन्हें पूरी तरह से अर्ध-संरचित / दस्तावेज़-उन्मुख डेटा ब्लब्स के पक्ष में चक दिया है?

  • क्या आप किसी भी प्रमुख अतिरिक्त सेवाओं को याद करते हैं जो RDBMSes प्रदान करती हैं, जैसे संबंधपरक अखंडता, मनमाने ढंग से जटिल लेनदेन सहायता, ट्रिगर, आदि?

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

FYI करें, यहां समान विषयों पर StackOverflow चर्चा हुई है:


2
कुंजी / मान डेटाबेस पुरानी नई बात।
क्रिस्टोफर

1
Uber-interest के लिए, NoSQL Google समूह पर लंबी-लंबी चर्चा चल रही है, यहाँ: group.google.com/group/nosql-discussion/browse_thread/thread/…
Ian Varan

4
FYI करें, मैंने इस विषय पर एक लंबी-फ़ॉर्म रिपोर्ट लिखी है, यहाँ: google.com/url?sa=D&q=http://ianvarley.com/UT/MR/… आप सभी को अपने उपयोगी इनपुट के लिए धन्यवाद!
इयान वार्ले

जवाबों:


55

मुझे लगता है कि आपको यह विचार करना होगा कि गैर-संबंधपरक डीबीएमएस उनके डेटा मॉडल के बारे में बहुत भिन्न है और इसलिए वैचारिक डेटा डिजाइन भी बहुत भिन्न होगा। धागा में गैर-संबंधपरक डेटाबेस में डेटा डिजाइन की NoSQL गूगल समूह अलग मानदंड इस तरह वर्गीकृत किया जाता है:

  1. बिगटेबल-जैसे सिस्टम (HBase, हाइपरटेबल, आदि)
  2. मुख्य-मूल्य स्टोर (टोक्यो, वोल्डेमॉर्ट, आदि)
  3. दस्तावेज़ डेटाबेस (CouchDB, MongoDB, आदि)
  4. ग्राफ़ डेटाबेस (AllegroGraph, Neo4j, तिल, आदि)

मैं ज्यादातर ग्राफ़ डेटाबेस में हूँ , और इस प्रतिमान का उपयोग करके डेटा डिज़ाइन की लालित्य मुझे वहाँ लाया गया था, जो आरडीबीएमएस की कमियों से थक गया था । मैंने इस विकी पेज पर एक ग्राफ डेटाबेस का उपयोग करके डेटा डिज़ाइन के कुछ उदाहरण रखे हैं और इसका एक उदाहरण है कि बुनियादी IMDB मूवी / अभिनेता / रोल डेटा को भी कैसे मॉडल किया जाए ।

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

एक ग्राफ के बिंदु से विशिष्ट प्रश्नों के उत्तर देना:

वैकल्पिक डिजाइन: कई अलग-अलग प्रकार की संस्थाओं के बीच संबंधों को बिना किसी चिंता के जोड़ना या पूर्वनिर्धारित करने की आवश्यकता जो संस्थाओं से जुड़ी हो सकती है।

अंतर को पाटना: मैं डोमेन के आधार पर, हर मामले के लिए यह अलग करना चाहता हूं, क्योंकि मैं "टेबल-ओरिएंटेड ग्राफ" और जैसा नहीं चाहता हूं। हालाँकि, यहाँ RDBMS से ग्राफडब पर स्वचालित अनुवाद की कुछ जानकारी दी गई है।

स्पष्ट डेटा मॉडल: मैं इन सभी समय (व्हाइटबोर्ड शैली) करता हूं, और फिर मॉडल का उपयोग करता हूं क्योंकि यह डीबी में भी है।

RDBMS दुनिया से मिस: रिपोर्ट बनाने के आसान तरीके। अपडेट: हो सकता है कि ग्राफ़ डेटाबेस से रिपोर्ट बनाना कठिन न हो , एक Neo4J नमूना डेटाबेस के लिए रिपोर्ट बनाना देखें ।


79

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

फिर भी, मेरे कुछ प्रारंभिक निष्कर्ष हैं:

क्या आप वैकल्पिक डिजाइनों के साथ आए हैं जो गैर-संबंधपरक दुनिया में बेहतर काम करते हैं?

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

दस्तावेज़ DB प्रकार की अदला-बदली करता है: SQL में अनम्य डेटा और लचीली क्वेरीज़ होती हैं, दस्तावेज़ DBs दूसरे तरीके से होते हैं।

CouchDB मॉडल "JSON दस्तावेज़" (मूल रूप से नेस्टेड हैश तालिकाओं) का एक संग्रह है। प्रत्येक दस्तावेज़ में एक अद्वितीय आईडी होती है, और आईडी द्वारा तुच्छ रूप से पुनर्प्राप्त किया जा सकता है। किसी अन्य प्रश्न के लिए, आप "दृश्य" लिखते हैं, जिसे मानचित्र / कम किए गए कार्यों के सेट नाम दिए गए हैं। परिणाम कुंजी / मूल्य जोड़े की सूची के रूप में सेट किए गए परिणाम लौटाते हैं।

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

SQL दुनिया में निकटतम सादृश्य होगा यदि आप केवल संग्रहीत कार्यविधियों का उपयोग करके DB को क्वेरी कर सकते हैं - प्रत्येक क्वेरी जिसे आप समर्थन करना चाहते हैं वह पूर्वनिर्धारित होना चाहिए।

दस्तावेजों का डिज़ाइन काफी लचीला है। मुझे केवल दो अवरोध मिले हैं:

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

लेकिन सब कुछ विचारों को डिजाइन करने पर टिका है।

वैकल्पिक डिजाइन मैंने पाया है कि किसी भी SQL डेटाबेस की तुलना में CouchDB के साथ परिमाण के वर्क ऑर्डर स्टोरेज स्तर के बजाय सिस्टम स्तर पर हैं। यदि आपके पास कुछ डेटा हैं और उन्हें वेब पेज पर देना चाहते हैं, तो कुल सिस्टम की जटिलता कम से कम 50% कम हो जाती है:

  • कोई डिज़ाइनिंग डीबी टेबल (मामूली समस्या)
  • नहीं ODBC / JDBC मध्यवर्ती परत, http पर सभी प्रश्न और लेनदेन (मध्यम अंक)
  • JSON से साधारण डीबी-टू-ऑब्जेक्ट मैपिंग, जो एसक्यूएल (महत्वपूर्ण!) में समान की तुलना में लगभग तुच्छ है
  • आप संभावित रूप से संपूर्ण एप्लिकेशन सर्वर को छोड़ सकते हैं, क्योंकि आप AJAX का उपयोग करके अपने दस्तावेज़ों को सीधे ब्राउज़र द्वारा पुनः प्राप्त करने के लिए डिज़ाइन कर सकते हैं और HTML प्रदर्शित होने से पहले जावास्क्रिप्ट को थोड़ा सा जोड़ सकते हैं। (विशाल !!)

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

क्या आपने किसी ऐसी चीज़ के खिलाफ अपना सिर मारा है जो असंभव लगता है?

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

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

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

क्या आपने किसी भी डिजाइन पैटर्न के साथ अंतर को पाटा है, उदाहरण के लिए एक से दूसरे में अनुवाद करने के लिए?

मुझे यकीन नहीं है कि यह संभव है। यह एक पूरी तरह से नया स्वरूप है, जैसे एक कार्यात्मक शैली कार्यक्रम को ऑब्जेक्ट-ओरिएंटेड शैली में अनुवाद करना। सामान्य तौर पर, SQL दस्तावेज़ और प्रत्येक दस्तावेज़ में अधिक डेटा की तुलना में बहुत कम दस्तावेज़ प्रकार होते हैं।

यह सोचने का एक तरीका आवेषणों और सामान्य प्रश्नों के लिए अपनी एसक्यूएल को देखना है: उदाहरण के लिए, ग्राहक द्वारा ऑर्डर दिए जाने पर कौन सी टेबल और कॉलम अपडेट किए जाते हैं? और मासिक बिक्री रिपोर्ट के लिए कौन सा? यह जानकारी संभवतः उसी दस्तावेज़ में जानी चाहिए।

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

क्या आप भी अब स्पष्ट डेटा मॉडल (जैसे यूएमएल में) करते हैं?

क्षमा करें, दस्तावेज़ DBs से पहले कभी ज्यादा UML नहीं किया गया :)

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

क्या आपको आरडीबीएमएस द्वारा प्रदान की जाने वाली कोई भी अतिरिक्त अतिरिक्त सेवा याद आती है?

नहीं। लेकिन मेरी पृष्ठभूमि वेब एप्लिकेशन डेवलपर है, हम डेटाबेस से उसी सीमा तक निपटते हैं, जो हमें होना चाहिए :)

एक कंपनी जो मैं एक उत्पाद (एक वेबएप) बनाने के लिए काम करता था, जिसे कई विक्रेताओं से SQL डेटाबेस में चलाने के लिए डिज़ाइन किया गया था, और "अतिरिक्त सेवाएं" DB से DB तक इतनी भिन्न हैं कि उन्हें प्रत्येक DB के लिए अलग से लागू किया जाना था। इसलिए हमारे लिए RDBMS की कार्यक्षमता को स्थानांतरित करना कम काम था। यह भी पूर्ण खोज के लिए बढ़ा दिया गया।

इसलिए मैं जो कुछ भी दे रहा हूं वह वास्तव में पहली जगह पर है। जाहिर है, आपका अनुभव अलग हो सकता है।


एक चेतावनी: मैं अभी जो काम कर रहा हूं वह वित्तीय डेटा, स्टॉक कोट्स और इस तरह के लिए एक वेबएप है। यह एक दस्तावेज़ DB के लिए एक बहुत अच्छा मैच है, मेरे दृष्टिकोण से मुझे बिना किसी परेशानी के DB (दृढ़ता और प्रश्नों) के सभी लाभ मिलते हैं।

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

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

मुझे उम्मीद है कि ऐसे डेटासेट हैं जो दस्तावेज़ मॉडल की तुलना में SQL के लिए बेहतर मैप करते हैं, इसलिए मुझे लगता है कि SQL जीवित रहेगा।

लेकिन हममें से जो डेटा को स्टोर करने और पुनः प्राप्त करने का एक सरल तरीका चाहते हैं - और मुझे संदेह है कि हम में से कई हैं - दस्तावेज़ डेटाबेस (जैसा कि काउचडीबी में) एक देवता हैं।


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

2
+1, यह बहुत ही आनंददायक था।
मास

2
यह सच है, यदि संभव हो तो मैं इसे एक से अधिक बार वोट करूंगा।
ऑक्टेवियन ए। डामियन

यह 2014 में अभी भी बेहद उपयोगी था, यह बहुत अच्छा होगा यदि आप 2010 के बाद से जो कुछ भी सीखा है उसे जोड़ सकते हैं या जानकारी के लिए लिंक कर सकते हैं जो आपके पास कहीं और हो सकता है।
मैगी

11

मैं अपने दिमाग के पीछे CouchDB के साथ इसका जवाब दे रहा हूं, लेकिन मुझे लगता है कि अन्य DBs के लिए भी सबसे सही होगा। हमने CouchDB का उपयोग करते हुए देखा, लेकिन अंत में इसके खिलाफ फैसला किया क्योंकि हमारी डेटा पहुंच पहले से ज्ञात नहीं है और मापनीयता मुद्दा नहीं है।

और जोर से:

  • वैचारिक स्तर पर पुनर्विचार करता है इसलिए यह 'कठिन' है क्योंकि यह अभी अलग है। चूंकि आपको अपने डेटा एक्सेस पैटर्न को पहले से जानना है, इसलिए कोई स्वचालित अनुवाद लागू नहीं किया जा सकता है। आपको कम से कम एक्सेस पैटर्न जोड़ना होगा।
  • संगति डेटाबेस द्वारा नियंत्रित नहीं की जाती है, लेकिन आवेदन से निपटा जाना चाहिए। कम गारंटी का मतलब अधिक जटिल एप्लिकेशन की कीमत पर आसान माइग्रेशन, फेल-ओवर और बेहतर स्केलेबिलिटी है। एक आवेदन को संघर्षों और विसंगतियों से निपटना पड़ता है।
  • लिंक जो दस्तावेजों (या कुंजी / मूल्य) को पार करते हैं, उन्हें आवेदन स्तर पर भी निपटाया जाना चाहिए।
  • SQL प्रकार के डेटाबेस में IDE होते हैं जो अधिक परिपक्व होते हैं। आपको बहुत सारे समर्थन पुस्तकालय मिलते हैं (हालाँकि उन पुस्तकालयों की लेयरिंग एसक्यूएल के लिए ज़रूरत से ज़्यादा जटिल होती है)।

आसान:

  • यदि आप अपने डेटा एक्सेस पैटर्न को जानते हैं तो तेजी से।
  • माइग्रेशन / फेल-ओवर डेटाबेस के लिए आसान है क्योंकि कोई भी वादा आपको एप्लिकेशन प्रोग्रामर के रूप में नहीं किया जाता है। यद्यपि आपको अंततः संगति मिलती है। शायद। आखिरकार। कुछ समय।
  • एक मेज से एक पंक्ति की तुलना में एक कुंजी / मूल्य को समझना बहुत आसान है। सभी (पेड़) संबंध पहले से ही हैं, और पूर्ण वस्तुओं को पहचाना जा सकता है।

मॉडलिंग उसी के बारे में होनी चाहिए, लेकिन आपको इस बात से सावधान रहना चाहिए कि आपने एक दस्तावेज़ में क्या रखा है: यूएमएल का उपयोग ओओ मॉडलिंग और डीबी मॉडलिंग दोनों के लिए भी किया जा सकता है, जो पहले से ही दो अलग-अलग जानवर हैं।

मुझे अच्छा खुला OO डेटाबेस अच्छी तरह से C # / सिल्वरलाइट के साथ एकीकृत देखना पसंद था। बस चुनाव को और भी कठिन बनाने के लिए। :)


1

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

उदाहरण के लिए, आप आमतौर पर 10,000 रिकॉर्ड की एक फ़ाइल पढ़ सकते हैं और इसे आधे से भी कम समय में एक फ़ील्ड पर सॉर्ट कर सकते हैं, एक स्वीकार्य प्रतिक्रिया समय।

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


1

वास्तविक जीवन में मेरे द्वारा देखे जाने वाले संबंधपरक डेटाबेस आपके दावे के विपरीत बहुत अच्छी तरह से सामान्यीकृत नहीं हैं। पूछे जाने पर, डिजाइनर मुझे बताते हैं कि ज्यादातर प्रदर्शन के कारण है। RDBMs जुड़ने में अच्छे नहीं हैं, इसलिए सामान्यीकरण की दृष्टि से तालियाँ बहुत अधिक चौड़ी होती हैं। ऑब्जेक्ट ओरिएंटेड डेटाबेस इस पर बहुत बेहतर होते हैं।

एक अन्य बिंदु जहां आरडीबीएम की समस्याएं हैं, इतिहास / समय-निर्भर कुंजी को संभाल रही है।


3
स्टीफ़न - आप सही कह रहे हैं कि वास्तविक दुनिया की प्रणालियों में सामान्यीकरण विभाग में अक्सर कमी होती है। लेकिन यह कहना सही नहीं है कि RDBMses "जॉइनिंग में अच्छा नहीं है"; अधिकांश वाणिज्यिक उत्पादों (जैसे ओरेकल, एमएस एसक्यूएल सर्वर, आदि) में बहुत उन्नत क्वेरी ऑप्टिमाइज़र हैं और विभिन्न भौतिक सम्मिलित एल्गोरिदम की एक विस्तृत विविधता का प्रदर्शन कर सकते हैं, एक ही ऑपरेशन की तुलना में कहीं अधिक तेजी से आवेदन कोड में किया जा सकता है। (MySQL इस के लिए एक अपवाद है, जो मुझे समझ में आता है)। मेरे अनुभव में, समयपूर्व विकृति अन्य समय से पहले अनुकूलन की तरह है, अक्सर गरीब डेवलपर्स का संकेत है।
इयान वर्ले 12

2
इस विचार को जारी रखना: खराब जुड़ाव खराब अनुक्रमण और आंकड़ों का परिणाम है। यदि ऑप्टिमाइज़र के पास काम करने के लिए कुछ भी नहीं है, या इसके बारे में जानकारी पुरानी है, तो यह खराब विकल्प बना देगा। "गरीब जुड़ाव" के लिए बहुत सी गलतियाँ। आधुनिक RDBMS सिस्टम आत्म ट्यूनिंग है जो मास्क जब अनुक्रमण और आंकड़ों की स्थापना अपने दिमाग का उपयोग कर के लिए की जरूरत। इसके अलावा, लोग तार्किक स्कीमा (पांचवां सामान्य रूप) और भौतिक स्कीमा (अक्सर तीसरे सामान्य के रूप में निरूपित) को भ्रमित करते हैं। सिर्फ इसलिए कि आपके द्वारा देखा जा रहा डीबी "व्यापक" है इसका मतलब यह नहीं है कि यह खराब रूप से तार्किक रूप से डिजाइन किया गया था।
गोडके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.