Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डेटाबेस संस्करण/डेटा के लिए नियंत्रण बदलें स्कीमा नहीं?

मैंने ज्यादातर व्यावसायिक अनुप्रयोग विकास और विन्यास प्रबंधन में काम किया है। ऐसे माहौल में चुनौतियों के लिए आपका प्रश्न प्रतिनिधि है; जब आप उदाहरण के लिए Microsoft Word को अपग्रेड करते हैं, तो आपको doc से docx में सभी दस्तावेज़ों को तुरंत बदलने की आवश्यकता नहीं होती है। और दस्तावेजों में एक पूर्ण संबंध डेटाबेस और भी सरल संरचना होती है।

व्यावसायिक अनुप्रयोगों के लिए ऐसा नहीं है; उपयोगकर्ता रिलीज़ को छोड़ देते हैं, डेटा मॉडल में अनधिकृत परिवर्तन करते हैं और सिस्टम को चालू रखने और सही नंबर प्रदान करने की आवश्यकता होती है...

हम अपने स्वयं के अनुप्रयोगों के लिए उपयोग करते हैं (सबसे बड़ा एक 600 टेबल की तरह है) एक स्व-विकसित CASE टूल जिसमें ब्रांचिंग/विलय शामिल है, लेकिन दृष्टिकोण मैन्युअल रूप से भी किया जा सकता है।

डेटामॉडल का संस्करण बनाना

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

यह एक ही समय में कई उपयोगकर्ताओं को डेटा मॉडल बदलने की अनुमति देता है।

जब आप स्वतः-पहचान का उपयोग करते हैं (उदाहरण के लिए, हम "add_column" के बजाय "verify_column" नामक कॉल का उपयोग करते हैं), तो यह उस रिलीज़ नंबर से स्वतंत्र माइग्रेशन की भी अनुमति देता है जिससे ग्राहक अपग्रेड शुरू कर रहा है। ऐसी प्रक्रिया बदली जाने वाली तालिका का विश्लेषण करती है और सही डीडीएल जारी करती है जैसे alter table t1 add col1 number not null जब कोई कॉलम गुम हो या alter table t1 modify col1 not null जब कॉलम पहले से मौजूद था लेकिन अशक्त था।

Oracle और SQL सर्वर के लिए मैं आपको कुछ नमूना प्रक्रियाएँ प्रदान कर सकता हूँ। MySQL में मैं इसे क्लाइंट साइड भाषा का उपयोग करके कोड करूंगा, अधिमानतः ओएस स्वतंत्र विंडोज़ और लिनक्स पर इंस्टॉलेशन चलाने की अनुमति देता है। हो सकता है कि जब आपको इसका अनुभव हो तो Apache Ant का उपयोग करें।

डेटा का संस्करण बनाना

हम तालिकाओं को चार श्रेणियों में विभाजित करते हैं:

  • R:संदर्भात्मक डेटा; डेटा एप्लिकेशन साइट को वास्तव में सिस्टम का उपयोग करने से पहले प्रदान करना होगा। उदाहरण के लिए, सामान्य खाता बही कोड। रेफ़रेंशियल डेटा लाइव होने के बाद शायद ही कभी बदलता है और आकार में लगातार नहीं बढ़ता है। सामग्री साइट के व्यवसाय मॉडल को दर्शाती है जहां एप्लिकेशन का उपयोग किया जाता है।
  • T:लेनदेन डेटा; एप्लिकेशन के उपयोग के दौरान साइट रजिस्टर, परिवर्तन और हटाता है। उदाहरण के लिए, सामान्य खाता बही प्रविष्टियाँ। लेन-देन डेटा 0 से शुरू होता है और लगातार बढ़ता है। जब कंपनी की आय दोगुनी हो जाती है, तो लेन-देन का डेटा भी दोगुना हो जाता है।
  • S:वरीयता प्राप्त डेटा; साइट पर उपयोगकर्ता द्वारा डेटा का रखरखाव नहीं किया जाता है लेकिन विकासशील पार्टी द्वारा प्रदान और रखरखाव किया जाता है। अनिवार्य रूप से यह कोड डेटा में बदल गया है। उदाहरण के लिए, 'एफ' का अर्थ 'महिला' है। सीड किए गए डेटा में त्रुटियां सिस्टम त्रुटियों को जन्म दे सकती हैं।
  • O:बाकी (आदर्श रूप से आवश्यक नहीं है, क्योंकि वे तकनीकी हैं, लेकिन कुछ सिस्टम को अस्थायी तालिका A या स्क्रैच तालिका B की आवश्यकता होती है)।

श्रेणी 'एस' (सीडेड डेटा) की तालिका की सामग्री को संस्करण नियंत्रण के तहत रखा गया है। हम आम तौर पर इन्हें अपने केस टूल में मेटाडेटा के रूप में पंजीकृत करते हैं, फिर इसे 'डेटा सेट' नाम दिया जाता है, लेकिन आप उदाहरण के लिए Microsoft Excel या कोड का भी उपयोग कर सकते हैं।

उदाहरण के लिए, एक्सेल में आपके पास वरीयता प्राप्त डेटा की पंक्तियों की एक सूची होगी। कॉलम ए में आप एक एक्सेल फ़ंक्शन जैसे =B..&"|"&C..& "|" & ... जो सब कुछ समेट देता है और लोडर टूल द्वारा लोड करने के लिए उपयुक्त बनाता है।

उदाहरण के लिए कोड में, आपके पास एक कॉल हो सकती है जैसे:

verifySeed('TABLE_A', 'CODE', 'VALUE')

एक्सेल को संस्करण नियंत्रण में लाना थोड़ा कठिन है, जिससे कई उपयोगकर्ता एक ही समय में सामग्री को बदल सकते हैं। कोड के साथ दृष्टिकोण बहुत आसान है।

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एन्क्रिप्टेड फ़ील्ड का मान अद्वितीय बनाना

  2. PHP निष्पादन सीमित करें?

  3. sqlalchemy + फ्लास्क, दिन के हिसाब से सभी पोस्ट प्राप्त करना

  4. पायथन mySQL - उद्धरण से बचना

  5. Mysql में शामिल होने के साथ प्रदर्शन द्वारा क्रम में सुधार कैसे करें