डेवलपर्स के पास कितना डेटाबेस एक्सेस होना चाहिए? [बन्द है]


16

इसलिए मैंने एक डेवलपर के रूप में कई अलग-अलग कार्यस्थलों में काम किया है और डेटाबेस तक मेरी पहुंच भिन्न है। मैं आमतौर पर उत्पादन DB पहुँच नहीं है।

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

मैंने एक जगह काम किया जहां एक डीबीए टीम डेटाबेस का प्रबंधन करेगी, हम तब तक बदलाव नहीं कर सकते जब तक कि हम "निरीक्षण" करने के लिए उनके लिए एसक्यूएल स्क्रिप्ट के साथ एक फॉर्म जमा नहीं करते। वे आम तौर पर इस परियोजना के साथ ही ज्यादातर समय ऐसा नहीं करते थे, यह सिर्फ F5 दबाने के लिए था।

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


6
संभवतः आपसे यह पूछने का मतलब है कि " डेवलपर्स के पास कितना डेटाबेस उत्पादन होना चाहिए?"
मयंक

@ मयंक तुमने सिर पर कील ठोक दी। हमेशा नई अवधारणाओं के साथ 'खेलने' के लिए एक परीक्षण सर्वर होना चाहिए। उत्पादन सर्वर को केवल संशोधित / परीक्षण / सिद्ध रिलीज़ देखना चाहिए। मैं वेबसाइटों के लिए भी यही कहूंगा (हालांकि अधिकांश वेब देवता एक का उपयोग नहीं करते हैं)।
इवान प्लाइस

@ मयंक - हाँ, मैं उत्पादन डेटाबेस के लिए उपयोग के बारे में सुनना चाहूंगा, लेकिन विभिन्न वातावरणों जैसे DEV, INT, TEST, PREPROD आदि में पहुंच के बारे में राय भी सुनना चाहूंगा
RoboShop

1
यद्यपि इसे एक डुप्लिकेट के रूप में चिह्नित किया गया है, संबंधित प्रश्न प्रोग्रामर .stackexchange.com/questions/ 246618/… वास्तव में इसका एक दिलचस्प विस्तार है।
Eamon Nerbonne

जवाबों:


16

देवों को ठेस सहित सभी डेटाबेस तक पहुंच की आवश्यकता है। कभी-कभी समस्या यह है कि प्रोडक्ट का डेटा वह नहीं है जिसकी उन्हें उम्मीद थी और उन्हें उस डेटा को देखने की आवश्यकता है जो समस्या का कारण बन रहा है क्योंकि वे इसे देव पर पुन: पेश नहीं कर सकते हैं।

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

मैं पूर्ण डेटाबेस QA अधिकार रखना पसंद करता हूं क्योंकि किसी अन्य सर्वर पर तैनाती से उन्हें यह देखने में मदद मिलती है कि क्या उनकी तैनाती प्रक्रिया में कोई अंतराल है (उफ़ भूल गया कि मैं इस तरह से करने के लिए उस तालिका को बदल दिया और इस तरह से और उफ़ भूल गया कि मैं यह बदल गया हूं) GUI का उपयोग करना और स्रोत नियंत्रण में एक स्क्रिप्ट में नहीं जो किसी भी डेटाबेस संरचनात्मक परिवर्तनों को कैसे करना है)।

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

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


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

8
"देवों की जरूरत है, ठेस सहित सभी डेटाबेस तक पहुंच" मेरी पिछली नौकरी में कम से कम, नहीं है। ठेस डेटा में ग्राहक के वित्तीय रिकॉर्ड और लेनदेन शामिल हैं, जो गोपनीय है।
ओहो

3
@ ओहो, यह एक वैध अपवाद है, लेकिन यह एक समस्या का निवारण करने के लिए वास्तव में अंतर करना चाहिए जिसे आप तुरंत देव पर पुन: पेश नहीं कर सकते।
HLGEM

7

खैर इसका वास्तव में जेफ एटवुड के रूप में "वैम्पायर्स (प्रोग्रामर्स) बनाम वेयरवुल्स (सईसडमिन))" का एक सवाल है


जाओ टीम एडवर्ड मुझे लगता है।
जोएल एथर्टन

2
@Joel Etherton, हम में से उन लोगों के लिए, जिन्होंने फिल्म नहीं देखी है, जो टीम एडवर्ड है?
कैफीक

1
@ यह अच्छा है कि आपने वास्तव में "गोधूलि" बकवास नहीं देखा है। कम से कम आपको मेरी तरह इसे नहीं देखने का दिखावा करना होगा। ;)
मयंक

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

ओह, मुझे पता है कि यह अच्छा है मैंने इसे नहीं देखा है। और मैं कभी नहीं करूंगा।
18-40 में कैफीक

7

आमतौर पर (इसका मतलब है कि एक पूर्ण वातावरण सेटअप करने के लिए लक्जरी है), डेवलपर के लिए उपयोग:

  • उत्पादन सर्वर
    • स्कीमा सेटअप के लिए कोई भी (SA / PM लागू नहीं होगा, अंतिम उपयोगकर्ता init डेटा प्रदान करेगा)
  • UAT सर्वर
    • स्कीमा सेटअप और नमूना डेटा सीडिंग के लिए कोई भी (SA / PM लागू नहीं होगा)
  • परीक्षण / क्यूए सर्वर
    • आमतौर पर डेवलपर क्यूए टीम को स्कीमा सेटअप स्क्रिप्ट भेजेगा और क्यूए तालिकाओं का निर्माण करता है
    • डेवलपर्स के पास डेटाबेस तक पूरी पहुंच है लेकिन शायद ही कभी इसे बदल सकते हैं
    • डेवलपर्स QA सहयोगियों को बीज / पैच / कुछ डेटा हटाने में मदद कर सकते हैं
  • विकास सर्वर / लोकलहोस्ट
    • पूर्ण पहुँच

डेवलपर्स को उत्पादन सर्वरों को क्यों नहीं छूना चाहिए इसके पीछे मुख्य कारण है: जब कुछ भी गलत होता है, तो ऑपरेशन टीम जिम्मेदार होती है, लेकिन डेवलपर्स नहीं।


2
डेवलपर्स हमेशा जिम्मेदार होते हैं, भले ही वे उस प्रणाली को नहीं छू सकते हैं जो वे हैं जो इसे ठीक कर रहे हैं।
एरिन

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

2
यदि आपके पास एक ऑपरेशन टीम है ...
मार्की

मैं उत्पादन सर्वर पर केवल पढ़ने के लिए उपयोग करना चाहता हूँ। कीड़े को ढूंढना बहुत आसान है।
कार्रा

@ करारा: इसमें विनियामक समस्याएं हो सकती हैं, क्योंकि उत्पादन सर्वर में डेटा हो सकता है जो कानूनी रूप से विनियमित हो (उदाहरण के लिए अमेरिका में एक चिकित्सा प्रणाली को HIPAA का अनुपालन करना चाहिए)। मैं खुद ऐसी जगह कभी नहीं गया जहाँ किसी ने भी गोपनीय डेटा तक मेरी पहुँच को प्रतिबंधित करने की कोशिश की, लेकिन वे शायद मौजूद हैं।
डेविड थॉर्नले 13

2

पूर्ण न्यूनतम आपको काम पाने की आवश्यकता है।

यदि सभी डेवलपर्स को पूर्ण डीबी एक्सेस दिया जाता है, तो किसी को गुस्सा होने (या नशे में, या बहुत थका हुआ या ...) और गंभीर नुकसान करने की संभावना बहुत अधिक होती है, यदि वे केवल एक डेटाबेस से पढ़ सकते हैं।

यदि आपकी नौकरी अधिकतर DB लेखन एक्सेस के बिना की जा सकती है (और ज्यादातर मैं एक सप्ताह में अधिकांश कुछ परिवर्तन अनुरोधों का मतलब है), तो आपको वास्तव में लिखने की आवश्यकता नहीं है।


2

सभी काम के माहौल में 2 प्रतिस्पर्धी इच्छाएं हैं।

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

डेवलपर्स ने जो संतुलन बनाया है (या वैसे भी होना चाहिए) किस आकार का है। मेरी हर नौकरी में जहां डेवलपर्स के पास हर चीज की पहुंच थी, उम्मीद थी कि वह खुद को सीमित कर सके। यदि आप जानते हैं कि आप क्या कर रहे हैं, केवल सिस्टम तक पहुँचें। इसका मतलब है कि आप जानते थे कि आप एक डेवलपर और sysadmin दोनों दृष्टिकोण से क्या कर रहे थे। यदि आप किसी भी क्षेत्र में सुनिश्चित नहीं थे, तो आपके पास कोई ऐसा सिस्टम नहीं था जो बिना किसी सिस्टम को एक्सेस किए हुए हो, जो आपका पीछा करता हो।

यदि आप नहीं जानते हैं, तो आप आसानी से फिर से बनाने योग्य देव प्रणालियों के अलावा किसी भी प्रणाली तक पहुंच नहीं होना चाहिए । यदि आप जानते हैं, तो आप जानते हैं कि आप अपने आसानी से फिर से बनाने योग्य देव प्रणालियों को छोड़कर किसी भी प्रणाली तक नहीं पहुंच सकते हैं


2

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


1

मुझे लगता है कि डेवलपर्स के पास जिम्मेदारी स्तर क्या है। बहुत सारे डेवलपर्स के साथ एक बड़े संगठन में, वे संभवतः केवल क्यूए / टेस्ट तक पहुंच के साथ विकास तक पहुंच पाएंगे।

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

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


0

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

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

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

मैं परीक्षण समूह की प्रणाली तक लिखना / व्यवस्थापक पहुँच भी नहीं चाहता हूँ। अगर मैं उत्पादन प्रणाली पर कुछ नहीं कर सकता, तो मैं इसे परीक्षण प्रणालियों पर करने में सक्षम नहीं होना चाहता। पढ़ें पहुँच अपवाद है क्योंकि यह पता लगाना आवश्यक है कि क्या हो रहा है।

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


0

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

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

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

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