कैसे टिप्पणी के साथ संस्करण नियंत्रण PostgreSQL स्कीमा?


9

मैं अपने अधिकांश काम Git के साथ नियंत्रित करता हूं : कोड, प्रलेखन, सिस्टम कॉन्फ़िगरेशन। मैं ऐसा करने में सक्षम हूं क्योंकि मेरे सभी मूल्यवान कार्य पाठ फ़ाइलों के रूप में संग्रहीत हैं।

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

मैं विखंडू स्कीमा को कॉपी और पेस्ट करने की कोशिश कर रहा था जिसे मैं और मेरे सहयोगी लिखते हैं लेकिन मैं ऐसा करना भूल जाता हूं। प्रतिलिपि और अतीत की कार्रवाई दोहराव और त्रुटि प्रवण है।

Pg_dump / pg_restore विधि काम नहीं करेगी क्योंकि यह टिप्पणियों को खो देती है।

आदर्श रूप से मैं किसी फ़ाइल या फ़ाइलों में अपने वर्तमान स्कीमा को निकालने और टिप्पणियों को संरक्षित करने के लिए कुछ तरीका रखना चाहूंगा ताकि मैं संस्करण नियंत्रण कर सकूं।

टिप्पणी के साथ संस्करण नियंत्रण स्कीमा के लिए सबसे अच्छा अभ्यास क्या है?


2
मुझे नहीं लगता कि यह सवाल विशिष्ट है। क्या आपने एसओ स्टेक्टोवरफ्लो में कुछ जवाब पढ़े हैं ? आपके लिए कुछ हो सकता है।
DrColossos

@DrColossos - उन सवालों में से कुछ अच्छे प्रवास के उम्मीदवार हैं।
कोडरहॉक

@DrColossos COMMENT ONएक नॉन पोस्टग्रेज पर्यावरण में उपलब्ध है? मुझे नहीं लगता कि यह मानक एसक्यूएल है। जिसका अर्थ है कि यह विशिष्ट हो सकता है।
xenoterracide

@xenoterracide आप सही हैं, मैं खुद एक डेटाबेस के संस्करण की समस्या के बारे में बात कर रहा था
DrColossos

जवाबों:


9

आप COMMENT ONविभिन्न SCHEMAघटकों को क्यों नहीं करते हैं , इस तरह आपकी टिप्पणी स्कीमा में है, और डंप हो जाएगी।

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


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

2

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

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


2

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


"कोड निष्पादित होने से पहले इस तरह से कोड को नियंत्रित किया जाता है।" और यह होना चाहिए।
माइक शेरिल 'कैट रिकॉल'

@catcall हाँ, लेकिन अगर आप ऑप्स पोस्ट पढ़ते हैं, तो मुझे नहीं लगता कि यह मामला है।
xenoterracide

यह दुर्भाग्य से मैंने देखी ज्यादातर जगहों पर ऐसा नहीं है। लेकिन यह गारंटी देने का एकमात्र तरीका है कि आप जिस कोड का परीक्षण करते हैं और QA वही कोड है जो आप उत्पादन में ले जाते हैं। यह विचार कि "सच्चा" डेटाबेस VCS में है, DBMS में नहीं है, व्यापक नहीं है।
माइक शेरिल 'कैट रिकॉल'

0

मैं इसी तरह के प्रोजेक्ट में काम कर रहा हूं। यह मेरा डिजाइन प्रस्ताव है:

  1. डीबी ऑब्जेक्ट को नियमित समय के आधार पर टिप्पणी करें, हर दो सप्ताह या महीने में दो बार कहने की अनुमति देता है।
  2. है सब pg_dump (हाँ सब कुछ सुनिश्चित करें कि आप सभी छोटे विवरण और रिश्तों प्राप्त करने के लिए मिलता है)। उन्हें yyyymmdd-VERSION.dump नाम दें
  3. अगर Git का उपयोग बड़ी फ़ाइलों के लिए एक प्लगइन का उपयोग करें
  4. यदि रेपो का उपयोग नहीं कर रहे हैं तो पाठ में एक साधारण तालिका बनाएँ। नीचे दिए गए तालिका की तरह .CSV प्रारूप:

    version | file name | date | description | 1.0 | yyyymmdd-v10.dump | yyyymmdd | new version of user table | 1.1 | backupDB-v11.dump | yyyymmdd | normalized reports tables |

  5. फ़ाइल नाम से उत्पन्न डंप के CSV फ़ाइल में एक संबंध रखने से आप उन्हें किसी भी तरह आसानी से ट्रैक कर सकते हैं और आप सुनिश्चित करते हैं कि पुनर्स्थापना काम करेगी क्योंकि आपने बिल्कुल सब कुछ डंप कर दिया।

आजकल किसी भी क्लाउड स्टोरेज या साइट स्टोरेज पर टीबी के आंकड़ों की बात करें तो भी इतना महंगा नहीं होना चाहिए। कुछ टीबी 700 से 1000 यूएसडी तक होती हैं और 16 टीबी तक होती हैं

यहां तक ​​कि अगर आप सबसे लोकप्रिय एक एडब्ल्यूएस एस 3 के प्रकार की तरह स्टोरेज क्लाउड में जाते हैं तो आप $ $ $ भी बहुत अधिक बचा सकते हैं

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

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