डेटाबेस डिजाइन करना प्रोग्रामर्स का काम है?


16

मैं पिछले छह साल से प्रोग्रामर हूं। अपने करियर के दौरान, मैंने कई वेब एप्लिकेशन पर काम किया है।

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

लेकिन क्या हम प्रोग्रामर के रूप में, पूरे डेटाबेस को खरोंच से बनाना चाहते हैं, जब हमें नया एप्लिकेशन बनाना होता है, जहां डेटा इतना महत्वपूर्ण होता है और एक जटिल डेटा मॉडल के साथ गड़बड़ आवश्यकताएं होती हैं?

क्या यह ऐप और कंपनी के सर्वोत्तम हित में नहीं है कि इसे किसी विशेषज्ञ द्वारा किया जाए?

मैं डेटाबेस को डिजाइन करने से भागने की कोशिश नहीं कर रहा हूं, लेकिन यह एक ऐसी चीज है जो सही होना बहुत जरूरी है।


2
इसका जवाब है हाँ। क्या यहाँ सही उत्तर आपके प्रबंधन को उनके दिमाग को बदलने में मदद करने वाला है? मुझे ऐसा नहीं लगता। और दूसरी ओर, यह एक बहुत अच्छा अनुभव होगा। इसे डेटा स्कीमा डिज़ाइन करने की कोशिश क्यों न करें?
एमिनेम

9
"डीबी विशेषज्ञ" और "प्रोग्रामर" परस्पर अनन्य नहीं हैं। आप डेटाबेस डिजाइन करने के लिए एक विशेषज्ञ चाहते हैं। वह विशेषज्ञ एक प्रोग्रामर हो सकता है।
लॉर्ड टाइडस

10
क्या यह एक सैनिक के रूप में मेरा काम है कि मैं घोड़े की सवारी कैसे करूं? यह प्रशिक्षण का हिस्सा हो सकता है या नहीं भी हो सकता है, लेकिन यदि किसी कारण से आपका अस्तित्व घोड़े पर निर्भर है, तो इसका उत्तर स्पष्ट है। यदि आपकी नौकरी का विवरण बदल रहा है, आश्चर्य की बात है, तो शायद कहीं और देखें। मैं व्यक्तिगत रूप से इन db कौशल को सिर्फ इसलिए उठाऊंगा क्योंकि मुझे दूसरों पर निर्भर रहना पसंद नहीं है।
जॉब

@Job बेहतर :) कहा नहीं हो सकता था
Songo

जवाबों:


32

सबसे पहले, यह आपका काम है अगर परियोजना प्रबंधक आपको बताता है। छोटी कंपनियों में अक्सर पूर्णकालिक डीबी विशेषज्ञ नहीं होते हैं। डेवलपर्स और DB विशेषज्ञों के बीच स्पष्ट अंतर नहीं होना चाहिए (वैसे भी नहीं होना चाहिए) - किसी भी अच्छे डेवलपर को DBs के बारे में काफी जानकारी होगी, और किसी भी अच्छे DBA को पता होगा कि कोड कैसे बनाया जाए, कम से कम DB की भाषा में संग्रहीत प्रक्रियाओं के लिए ।

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

और कोड की तरह, यह विचार कि आपको बैठने के लिए कुछ सुपर-विशेषज्ञ मिलें और एक सप्ताह के लिए कठिन सोचें और फिर सही डिजाइन लिखें, जिसे बदलने की कभी आवश्यकता नहीं होगी यह एक भ्रम है। डीबी डिज़ाइन आवेदन के विकसित होने के समय बदल सकता है और बदल जाएगा।

इसलिए यह वास्तव में फायदेमंद है कि एक प्रोग्रामर (जो डीबी को अच्छी तरह से समझता है) द्वारा डिज़ाइन किया गया डीबी है, क्योंकि तब आपके पास कोई है जो दोनों पक्षों को जानता है। यह निश्चित रूप से किसी के द्वारा किए जाने से बेहतर है जो केवल डीबी को समझता है और बाकी के विकास कार्यों से इसका कोई लेना-देना नहीं है।


डेटाबेस डिजाइन की बात आने पर क्या आप मुझे डीबीए और डेटाबेस डेवलपर के बीच का अंतर बता सकते हैं?
सांगो

@Songo: IMO में कोई अंतर नहीं होना चाहिए।
माइकल बोरगवर्ड

1
वास्तव में? मैंने हमेशा सोचा कि एक डीबीए डेटाबेस चलाने और इसे ट्यून करने के बारे में अधिक था जबकि एक डेटाबेस डेवलपर डेटाबेस मॉडलिंग और डिज़ाइन के बारे में अधिक चिंतित है!
सांगो

3
डेटाबेस एडमिनिस्ट्रेटर और डेटाबेस डेवलपर दो अलग-अलग चीजें हैं। छोटे और मध्यम आकार की कंपनियों को आमतौर पर अंतर नहीं पता होता है। बड़े उद्यम प्रणाली में काम करते समय आपके पास डीबीए, व्यापार खुफिया डेवलपर (विश्लेषण सेवाएं, डेटा वेयरहाउस) और डेटाबेस डेवलपर हो सकते हैं। हमारे लिए वे बहुत अलग काम हैं।
कोडार्ट

1
@ कोडवर्क्स: वे निश्चित रूप से अलग हैं, लेकिन IMO यह एक संगठनात्मक एंटीपैटर्न है जो उस तरह के अत्यधिक विशेषज्ञता को लुभाने के लिए है, क्योंकि यह उन लोगों के बीच सहयोग करता है जो केवल उनके विशेषज्ञता को बहुत समस्याग्रस्त जानते हैं।
माइकल बोर्गवर्ड टीटी

4

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

यदि एक आदमी के पास एक बहुत अच्छे उत्पाद के लिए एक विशेषज्ञ स्तर पर सब कुछ करने का कौशल है। एक आदमी सेना वह कर सकता है जो 10 आदमी की टीम समय के एक अंश में 1000 गुना गुणवत्ता के साथ कर सकती है। अतिशयोक्ति नहीं।

यह प्रोग्रामर के लिए सर्वोत्तम हित में है कि वह (कम लोगों को) करे, यह मानकर प्रोग्रामर जानता है कि वह क्या कर रहा है। बेशक वहाँ भी हजारों विफलताओं को इंगित करने के लिए कर रहे हैं।


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

1
"अतिशयोक्ति नहीं।" यह है, जब तक आप इस दावे को किसी भी तरह से योग्य नहीं बना सकते।
बुरहान अली

4

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

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

तो नहीं, मुझे विशेष रूप से यह नहीं लगता कि डेटाबेस स्कीमा तैयार करने के लिए आपको एक डेटाबेस विशेषज्ञ की आवश्यकता है - कम से कम छोटे और मध्यम आकार के डेटाबेस के लिए नहीं (जो मैंने काम किया है)।

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

एक अच्छा प्रोग्रामर को कौशल का एक विविध पोर्टफोलियो लाना चाहिए - एक [पसंद का एक सम्मिलित लैंगगेज] कोडर से अधिक होना चाहिए और मैं उस पोर्टफोलियो में डेटाबेस की समझ शामिल करूंगा।


4

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

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


1
डेटा बेस प्रशासक जरूरी डेटा विश्लेषक नहीं हैं। इसके लिए एक डेटाबेस को ट्यून करने और क्रमशः रिलेशनल डेटा को सामान्य करने के लिए अलग-अलग कौशल सेट की आवश्यकता होती है।
गिल्बर्ट ले ब्लैंक

1

मुझे यहां दो प्रश्न दिखाई देते हैं:

  • डेटाबेस डेवलपर्स को व्यापार तर्क को मॉडल करना चाहिए?
  • क्या मुझे पता होना चाहिए कि डेटाबेस में डेटा कैसे बना रहे?

व्यापार का तर्क

  • व्यावसायिक तर्क डेटाबेस में नहीं रहता है। यह एक वैचारिक मॉडल है जो आपके सिस्टम के भीतर अन्य परतों से स्वतंत्र होना चाहिए।

  • आप हमेशा एक डेटाबेस को दूसरे के साथ बदल सकते हैं, या आप संभावित प्रदर्शन समस्याओं को दूर करने के लिए NoSQL समाधान का उपयोग करने का निर्णय भी ले सकते हैं।

  • डेटाबेस डेवलपर्स मॉडलिंग प्रक्रिया के दौरान शामिल हो सकते हैं, लेकिन आम तौर पर यह एक समस्या डोमेन की पूरी समझ वाले लोगों द्वारा किया जाता है। हमारे संगठन में यह सर्वर साइड डेवलपर्स द्वारा किया जाता है।

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

स्थायी डेटा

  • आपको पता होना चाहिए कि SQL और NoSQL समाधानों सहित विभिन्न भंडारण माध्यमों को डेटा कैसे जारी रखना है।

  • आवश्यक विशेषज्ञता का स्तर उस प्रणाली के आकार के साथ अलग-अलग होगा जिस पर आप काम कर रहे हैं।

  • छोटी कंपनियों से आपको उस ज्ञान की उम्मीद होगी, जब बड़ी कंपनियां सामान्य रूप से प्रदर्शन, मापनीयता और सुरक्षा संबंधी आवश्यकताओं के लिए विशेषज्ञों को नियुक्त करेंगी।

संक्षेपित करते हुए:

  • डोमेन मॉडल आपके सिस्टम का एक आधार है, डेटाबेस नहीं।

  • यदि आप अपेक्षाकृत छोटी परियोजना पर एक छोटी कंपनी के लिए काम करते हैं, तो आपको संभवतः डेटाबेस को खुद डिजाइन करना चाहिए।

  • यदि आप किसी एंटरप्राइज़ सिस्टम पर एक बड़ी कंपनी के लिए काम करते हैं, तो यह संभवतः डोमेन विशेषज्ञों को काम पास करने के लिए अधिक समझ में आता है।

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