स्कीमा माइग्रेशन: एसक्यूएल सर्वर डेटा टूल्स बनाम लिसीबेज और फ्लाईवे


11

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

हालाँकि, मेरे बॉस ने मुझे बताया कि SQL सर्वर डेटा टूल्स (SSDT) ​​समान नौकरी को प्राप्त करता है। मुझे यकीन नहीं है कि अगर सहमत हूं, लेकिन मैं इंटरनेट पर बहुत कम पा सकता हूं जो सीधे इसकी तुलना लिबास और / या फ्लाईवे से करता है।

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

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

जवाबों:


17

SSDT, लिलीबेस / फ्लाईवे के साथ तुलनात्मक है क्योंकि यह वही करता है जो वे करते हैं लेकिन एक अलग दृष्टिकोण लेकर। SSDT के साथ आपके पास विकास का माहौल है, इसलिए आपको परिभाषा में जाने, संदर्भ और इंटेलीजेंस के साथ-साथ एक प्रोजेक्ट को डैकैप में संकलित करने और फिर उस डीएएसीपी को एक डेटाबेस में तैनात करने की क्षमता मिलती है।

SSDT तरीका (और redgate sql तुलना तरीका) एक विलंब करने के लिए यह घोषित करना है कि आप क्या चाहते हैं यदि आप एक तालिका बदलना चाहते हैं जो इस तरह दिखती है:

create table a(id int)

एक तालिका है कि इस तरह दिखता है:

create table a(id int, another_column varchar(12))

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

Liquibase (DbUp, ReadyRoll, मैनुअल तरीके आदि) के साथ आप इस मामले में क्या करते हैं, परिवर्तन तालिका को स्वयं लिखना होगा और यह सुनिश्चित करना होगा कि आप स्क्रिप्ट को सही क्रम में चलाते हैं, इस परिदृश्य पर विचार करें:

  1. रिलीज 1 - टेबल पर कॉलम हैलो बनाएं
  2. रिलीज़ 2 - स्तंभ का नाम बदलकर joe_blogs करें
  3. रिलीज 3 - हैलो के लिए कॉलम joe_blogs का नाम बदलें
  4. रिलीज 4 - कॉलम joe_blogs बनाएं

यदि कोई रिलीज़ छूट जाती है, तो अगले में से कोई भी जारी नहीं रह सकता है।

अपग्रेड स्क्रिप्ट्स का लाभ (लिकिबेस, डीबीयूपी, आदि):

  • स्क्रिप्ट पर आपका पूरा नियंत्रण है
  • डीबीए / डेवलपर्स का उपयोग इसके लिए किया जाता है

तुलना / विलय (SSDT, Redgate SQL तुलना) के लाभ:

  • अपग्रेड स्क्रिप्ट लिखने की जरूरत नहीं है
  • किसी भी विशिष्ट संस्करण को प्राप्त करना और उस संस्करण को मर्ज करना आसान है

उन्नयन स्क्रिप्ट की कमियां:

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

तुलना / मर्ज का उपयोग करने की कमियां:

  • उपकरण 100% विश्वसनीय नहीं हैं, शायद गलत
  • SSDT को एक कार्यशील परियोजना की आवश्यकता होती है, कई डेटाबेस में ऐसे कोड होते हैं जो वास्तव में संकलन या चलाते नहीं हैं (थिंक टेबल नहीं बल्कि प्रक्रियाएं आदि), मैंने इसे 8/10 डेटाबेस में देखा है जो मुझे विरासत में मिला है :)
  • कई डीबीए / डेवलपर्स एसएसएमएस / नोटपैड में विकासशील को छोड़ने में संकोच करते हैं

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

आपने राय माँगी ताकि आप वहाँ जाएँ :)

ईडी


1
क्या SSDT SQL सर्वर के अलावा किसी और चीज के साथ काम करता है? उदा। पोस्टग्रेज?
a_horse_with_no_name

3
कोई "SQL सर्वर डेटा टूल्स" :)
एड इलियट

1
क्यों नहीं? SSIS पैकेज ज्यादातर सभी ODBC स्रोतों
a_vlad

जब तक मुझे नहीं लगता कि मुझे लगता है कि हम ssis संकुल बनाने के बजाय डेटाबेस स्कीमा के प्रबंधन के बारे में बात कर रहे हैं? सही होने की ख़ुशी :)
Ed Elliott

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

2

मैं सिर्फ टॉप-अप प्रीव्यू का जवाब देता हूं।

केंद्रीय स्थान पर फ्लाईवे वेब-साइट पर वर्णित सबसे बड़ा अंतर:

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

विजुअल स्टूडियो + एसएसडीटी + एसएसआईएस = पूर्ण शक्ति ईटीएल टूल, केवल एक वास्तविक दोष के साथ - यह केवल खिड़कियों के नीचे काम करता है रन पैकेज के लिए विंडोज + एसक्यूएल सर्वर की आवश्यकता होती है, लेकिन ज्यादातर सभी स्रोतों के साथ काम करते हैं।

डेटा ट्रांसफर / माइग्रेट करने के लिए - बाजार पर बहुत सारे उत्पाद। वाणिज्यिक, ओपन सोर्स, कम्युनिटी / एक्सप्रेस और आदि

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


2

मैंने Sql सर्वर डेटा टूल और फ्लाईवे दोनों के साथ काम किया है। SSDT के उपयोग से, मुझे निम्नलिखित लाभ मिलते हैं:

  1. मैं डेटाबेस प्रोजेक्ट को संकलित कर सकता हूं .. जिसका अर्थ है, एक कॉलम को छोड़ने का कोई डर नहीं है जिसे किसी दृश्य, फ़ंक्शन या संग्रहीत डिस्क द्वारा संदर्भित किया जा रहा है। यह एक महान विशेषता है, क्योंकि अतीत में, हमने इस तरह की यादों को रिलीज के बाद ही पाया था
  2. सफल निर्माण के बाद, SSDT एक "DACPAC" के रूप में जाना जाता है। एक संस्करण के साथ इस एक msi के बारे में सोचो।

  3. किसी दिए गए dacpac, संस्करण 5 के साथ, डेटाबेस पर लागू किया जा सकता है जो Dacpac संस्करण 1,2,3,4 या 6,7,8 आदि पर है। यदि इसके 1-4 पर लागू किया जाता है, तो डेटाबेस अपग्रेड किया जाएगा। यदि 6,7 आदि पर लागू किया जाता है, तो डीबी को डाउनग्रेड / वापस कर दिया जाएगा। डेटा हानि होने पर चेतावनी दी जाएगी, जिसे दबाया जा सकता है। तो, हम एक महान रोलबैक सुविधा प्राप्त करते हैं, जो कि फ्लाईवे जैसे अन्य उपकरणों के साथ उपलब्ध नहीं है। फ्लाईवे के साथ, किसी को भी रोलिंग के लिए स्क्रिप्ट का एक नया सेट प्रदान करना होगा।

  4. DACPAC एक लेन-देन में सभी परिवर्तन लागू करता है; मतलब अगर अपग्रेड में 5 टेबल में बदलाव होता है और उनमें से एक फेल हो जाता है, तो पूरा लेनदेन वापस आ जाता है। फ्लाईवे इसका समर्थन करता है, लेकिन हर फ़ाइल के लिए।

हालाँकि, SSDT और DACPACs Microsoft SQL Server विशिष्ट हैं; फ्लाईवे का उपयोग विभिन्न प्रकार के डेटाबेस के लिए किया जा सकता है।

इसलिए, निचला रेखा, यदि आप केवल SQL सर्वर का उपयोग कर रहे हैं, तो SSDT और DACACAC के साथ जाना एक काफी आसान निर्णय होना चाहिए।

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