अगस्त 2015 में वापस, मैंने SQL सर्वर 2016 में नई स्ट्रेच डेटाबेस सुविधा का परिचय देते हुए एक लेख लिखा था। उस लेख में, मैंने चर्चा की कि SQL सर्वर 2016 सामुदायिक प्रौद्योगिकी पूर्वावलोकन 2 (CTP2) में स्ट्रेच डेटाबेस के साथ कैसे शुरुआत करें। SQL सर्वर 2016 1 जून 2016 को जारी किया गया था, और उत्पाद में कई अपडेट किए गए हैं। स्ट्रेच डेटाबेस को स्थापित करने का तरीका थोड़ा और साथ ही कुछ विशेषताओं में बदलाव आया है।
SQL सर्वर 2016 के साथ शुरुआत करते हुए हमने एक Azure SQL डेटाबेस में डेटाबेस के कुछ हिस्सों को संग्रहीत करने की क्षमता प्राप्त की। पहले के पूर्वावलोकन में जब आपने डेटाबेस के लिए स्ट्रेच को सक्षम किया था, तो आपको संपूर्ण तालिका को माइग्रेट करना पड़ता था, SQL सर्वर 2016 के RTM रिलीज़ के साथ, अब आप तालिका के एक हिस्से को चुन सकते हैं। एक बार जब आप किसी तालिका के लिए खिंचाव सक्षम कर देते हैं, तो यह चुपचाप आपके डेटा को स्थानांतरित कर देगा। यदि आप स्ट्रेच डेटाबेस से परिचित नहीं हैं, तो यह क्वेरी को फिर से लिखकर दूरस्थ डेटा के विरुद्ध क्वेरी चलाने के लिए Azure में प्रोसेसिंग पावर का लाभ उठाता है। आपको अपनी ओर से कोई प्रश्न फिर से लिखने की आवश्यकता नहीं है। आप इसे क्वेरी प्लान में "रिमोट क्वेरी" ऑपरेटर के रूप में देखेंगे।
डेटाबेस और तालिकाओं की पहचान करने का एक आसान तरीका जो स्ट्रेच-सक्षम होने के लिए योग्य हैं, SQL सर्वर 2016 अपग्रेड एडवाइजर को डाउनलोड करना और चलाना और स्ट्रेच डेटाबेस एडवाइजर को चलाना है। आरोन बर्ट्रेंड (@AaronBertrand) ने इस बारे में कुछ समय पहले लिखा था। हारून के पद के बाद से अपग्रेड सलाहकार थोड़ा बदल गया है, हालांकि प्रक्रिया ज्यादातर समान है:
- SQL सर्वर 2016 स्ट्रेच डेटाबेस के लिए उम्मीदवार तालिका की पहचान करें
स्ट्रेच डेटाबेस की सीमाएं
सभी टेबल स्ट्रेच-सक्षम होने के योग्य नहीं होंगे। कुछ तालिका गुण, डेटा और स्तंभ प्रकार, प्रतिबंध और अनुक्रमणिका समर्थित नहीं हैं, जैसे:
- स्मृति-अनुकूलित और प्रतिकृति तालिकाएं
- FILESTREAM डेटा वाली तालिकाएं, ट्रैकिंग बदलें या डेटा कैप्चर बदलें का उपयोग करें
- डेटा प्रकार जैसे टाइमस्टैम्प, sql_variant, XML, या भूगोल
- चेक या डिफ़ॉल्ट बाधाएं
- तालिका को संदर्भित करने वाली विदेशी कुंजी बाधाएं
- XML, पूर्ण-पाठ, स्थानिक या क्लस्टर्ड कॉलमस्टोर इंडेक्स
- अनुक्रमित दृश्य जो तालिका को संदर्भित करते हैं
- आप UPDATE या DELETE स्टेटमेंट नहीं चला सकते हैं, या स्ट्रेच-सक्षम टेबल पर CREATE INDEX या ALTER INDEX ऑपरेशन नहीं चला सकते हैं
सीमाओं की पूरी सूची के लिए, आप यहां जा सकते हैं:स्ट्रेच डेटाबेस के लिए आवश्यकताएं और सीमाएं।
स्ट्रेच डेटाबेस सेट करना
आरटीएम रिलीज के साथ शुरुआत करना पहले के पूर्वावलोकनों की तुलना में थोड़ा अलग है। आपको एक Azure खाते की आवश्यकता होगी, और फिर आपको स्थानीय उदाहरण पर स्ट्रेच डेटाबेस को सक्षम करना होगा।
एक उदाहरण पर स्ट्रेच डेटाबेस को सक्षम करने के लिए, चलाएँ:
EXEC sys.sp_configure N'remote data archive', '1'; RECONFIGURE; GO
इस डेमो के लिए मैं एक नमूना डेटाबेस का उपयोग करने जा रहा हूं जिसे मैंने STRETCH कहा है। मैंने डेटाबेस पर राइट क्लिक करके, टास्क, स्ट्रेच को चुनकर शुरू किया और फिर इनेबल को चुना। यह SQL सर्वर 2016 प्रबंधन स्टूडियो का उपयोग कर रहा था।
अगली स्क्रीन आपको बताती है कि आप स्ट्रेच के लिए कौन सी टेबल सक्षम करना चाहते हैं:
मैंने SALES2 तालिका को चुना। विज़ार्ड डिफ़ॉल्ट रूप से "संपूर्ण तालिका" में बदल जाता है, लेकिन आप पंक्तियों के सबसेट को माइग्रेट करने के लिए उस विकल्प को भी बदल सकते हैं।
यदि आप पंक्तियों द्वारा चुनते हैं, तो आपको अपने मानदंड के लिए एक नाम का चयन करना होगा, और फिर आप चुन सकते हैं कि आपके कथन में किस कॉलम का उपयोग करना है, साथ ही शर्त और मूल्य भी। इस स्क्रीन शॉट में मैंने 2016 से पहले की पंक्तियों को चुना था। तालिका के एक हिस्से को चुनने में सक्षम होने के कारण पहले के पूर्वावलोकन में एक बड़ा सुधार हुआ है, जिसने आपको केवल पूरी तालिका को फैलाने की अनुमति दी है। सरलता के लिए, इस डेमो में, मैं पूरी तालिका को माइग्रेट करने जा रहा हूँ, इसलिए मैंने रद्द करें और फिर अगला क्लिक किया।
एक बार जब आप अपनी टेबल और शर्तें चुन लेते हैं, तो आपको यह चुनना होगा कि आप किस Azure सदस्यता का उपयोग करने जा रहे हैं, आपका Azure क्षेत्र और आपकी सर्वर जानकारी।
आवश्यक जानकारी दर्ज करने के बाद, अगला क्लिक करें।
एक नया एन्हांसमेंट, Azure से कनेक्ट करने के लिए Azure क्रेडेंशियल की सुरक्षा के लिए डेटाबेस मास्टर कुंजी का उपयोग कर रहा है। यदि आपके पास पहले से कोई मास्टर कुंजी नहीं है, तो आपको एक बनाने के लिए प्रेरित किया जाएगा, यदि आपके पास पहले से एक है, तो आपको पासवर्ड प्रदान करने की आवश्यकता होगी। अगला क्लिक करें।
आपको अपने सर्वर के लिए फ़ायरवॉल नियम बनाने की आवश्यकता होगी, या आप एक सबनेट आईपी श्रेणी दर्ज कर सकते हैं। अपना चयन करें और अगला क्लिक करें।
यह वह जगह है जहां चीजें वास्तव में बदल गई हैं, और मुझे इस सुविधा का उपयोग करने पर पुनर्विचार करना होगा। Microsoft ने एक डेटाबेस स्ट्रेच यूनिट (DSU) बनाया है ताकि आप स्ट्रेच डेटा के लिए आवश्यक प्रदर्शन के स्तर को ऊपर या नीचे कर सकें। जून 2016 तक, वर्तमान मूल्य निर्धारण गणना और भंडारण दोनों के लिए बिल किया जाता है, जिसे आप ऊपर की छवि में प्रदर्शित करते हैं। माइग्रेट की गई मेरी 15MB तालिका के लिए, मुझसे संग्रहण के लिए $61 USD प्रति माह, साथ ही न्यूनतम DSU स्तर (100) $912.50 प्रति माह का शुल्क लिया जाएगा। DSU का स्तर निम्न से होता है:
DSU स्तर | प्रति घंटा लागत | अधिकतम मासिक लागत (31 दिनों के साथ महीने) |
---|---|---|
100 | $1.25 | $930 |
200 | $2.50 | $1,860 |
300 | $3.75 | $2,790 |
400 | $5.00 | $3,720 |
500 | $6.25 | $4,650 |
600 | $7.50 | $5,580 |
1000 | $12.50 | $9,300 |
1200 | $15.00 | $11,160 |
1500 | $18.75 | $13,950 |
2000 | $25.00 | $18,600 |
विज़ार्ड ने मुझे केवल $912.50 क्यों बताया, जब मूल्य पत्रक इंगित करता है कि यह जून के लिए $900 होना चाहिए (या जून में कितने दिन शेष हैं, इसके आधार पर प्रो-रेटेड)? तुम्हारा अंदाज़ा मेरी तरह सटीक है; मैंने विभिन्न गणित सामग्री की कोशिश की है और खाली आया हूं। आप यहां मूल्य निर्धारण मॉडल के बारे में अधिक जान सकते हैं:
- SQL सर्वर खिंचाव डेटाबेस मूल्य निर्धारण
डीएसयू के लिए इस नई बिलिंग पद्धति के बारे में जानने से पहले, मैं यह तर्क दे सकता था कि स्ट्रेच डेटाबेस का उपयोग करना क्लाउड में ठंडे डेटा (अप्रयुक्त डेटा) को संग्रहीत करने के लिए एक बहुत ही लागत प्रभावी तरीका होगा। इस डेटा को Azure में खींचकर, आप पुराने डेटा के एक बड़े हिस्से को माइग्रेट कर सकते हैं, जिससे आपके स्थानीय बैकअप के आकार (और इस प्रकार लागत) में कमी आएगी। यदि आपको किसी डेटाबेस को पुनर्स्थापित करना होता है, तो आपको केवल विस्तारित डेटा के लिए Azure से कनेक्शन स्थापित करना होगा, इस प्रकार इसे पुनर्स्थापित करने की आवश्यकता समाप्त हो जाएगी। हालांकि, निम्न अंत डीएसयू पैमाने के लिए न्यूनतम लागत लगभग 1,000 डॉलर प्रति माह होने के साथ, कई संगठन पाएंगे कि उनके डेटा सेंटर के भीतर भंडारण के कम खर्चीले स्तर पर डेटा को बनाए रखना बहुत सस्ता है और एचए के लिए अन्य तरीकों को ढूंढना है जैसे कि मिररिंग, लॉग शिपिंग, या उपलब्धता समूह।
माइग्रेशन शुरू करने के लिए समाप्त पर क्लिक करें।
बधाई हो, मैंने अब SALES2 तालिका को Azure SQL डेटाबेस में माइग्रेट कर दिया है
स्ट्रेच टेबल अक्षम करें
स्ट्रेच डेटाबेस के शुरुआती पूर्वावलोकन में, यदि आप एक स्ट्रेच टेबल को निष्क्रिय करना चाहते हैं, तो आपको एक नई टेबल बनानी होगी और उसमें स्ट्रेच डेटा डालना होगा। एक बार सभी डेटा कॉपी हो जाने के बाद, आपको या तो टेबल का नाम बदलकर मैन्युअल रूप से स्विच करना होगा, या मैन्युअल रूप से स्ट्रेच किए गए डेटा को वापस प्रोडक्शन टेबल में मर्ज करना होगा। RTM रिलीज़ के साथ, आप अभी भी मैन्युअल रूप से माइग्रेशन को संभाल सकते हैं, डेटा को Azure में छोड़ना चुना है, या Azure से डेटा वापस लाने का विकल्प चुना है।
डेटा को वापस लाने के लिए आप चाहे जिस भी तरीके का इस्तेमाल करें, आप पर डेटा ट्रांसफर शुल्क लगता है।
स्ट्रेच डेटाबेस का बैकअप और पुनर्स्थापना
एक बार जब आप डेटा को स्ट्रेच डेटाबेस में माइग्रेट करते हैं, तो Azure स्ट्रेच डेटा का बैकअप संभालता है। बैकअप हर 8 घंटे में लिए गए स्नैपशॉट के साथ होता है और स्नैपशॉट को 7 दिनों तक बनाए रखा जाता है। यह आपको पुनर्स्थापित करने के लिए पिछले 7 दिनों में 21 पॉइंट-इन-टाइम देता है।
आपको अपने वर्तमान स्थानीय बैकअप रूटीन में कोई परिवर्तन करने की आवश्यकता नहीं है। लिए गए किसी भी स्थानीय बैकअप में सभी स्थानीय डेटा और योग्य डेटा होगा जो अभी तक माइग्रेट नहीं किया गया है। इसे उथले बैकअप के रूप में संदर्भित किया जाता है और इसमें पहले से Azure में माइग्रेट किया गया कोई भी डेटा नहीं होता है।
DBCC CHECKDB
आप Azure में माइग्रेट किए गए डेटा के विरुद्ध CHECKDB भी नहीं चला सकते।
जब मैंने माइग्रेशन से पहले अपने STRETCH डेटाबेस पर DBCC CHECKDB चलाया तो मुझे SALES2 तालिका के लिए निम्नलिखित परिणाम मिले:
'SALES2' के लिए DBCC परिणाम।ऑब्जेक्ट "SALES2" के लिए 1901 पृष्ठों में 45860 पंक्तियाँ हैं।
माइग्रेशन के बाद, मुझे SALES2 टेबल (जोर मेरा) के लिए निम्न आउटपुट प्राप्त हुआ:
'SALES2' के लिए DBCC परिणाम।0 हैं ऑब्जेक्ट "SALES2" के लिए 1901 पृष्ठों में पंक्तियाँ।
आप Azure SQL डेटाबेस के विरुद्ध DBCC CHECKDB चला सकते हैं, हालाँकि स्ट्रेच किए गए Azure SQL डेटाबेस से सीधे कनेक्ट नहीं होने के कारण, आप वर्तमान में विशेष रूप से स्ट्रेच किए गए डेटा के विरुद्ध DBCC CHECKDB को मैन्युअल रूप से नहीं चला सकते हैं। मुझे ऐसा कोई दस्तावेज़ नहीं मिल रहा है जिसमें कहा गया हो कि Azure इन डेटाबेस के विरुद्ध कोई संगतता जाँच कर रहा है।
यह मेरी राय में एक महत्वपूर्ण जोखिम लाता है।
सारांश
यदि आपका डेटाबेस इसका समर्थन करता है, तो स्ट्रेच डेटाबेस संग्रह डेटा को Microsoft Azure में माइग्रेट करने का एक आसान तरीका है। वर्तमान में SQL Server 2016 RTM में तालिका, डेटा और स्तंभ गुण, डेटा और स्तंभ प्रकार, बाधाएँ और अनुक्रमणिका के साथ कई सीमाएँ हैं। यदि आप उन सीमाओं से प्रतिबंधित नहीं हैं, तो स्ट्रेच डेटाबेस ऐतिहासिक डेटा को Azure SQL डेटाबेस में माइग्रेट करने का एक आसान तरीका है ताकि स्थानीय संग्रहण को मुक्त किया जा सके और उन डेटाबेस के पुनर्स्थापना समय को कम किया जा सके यदि व्यय इसे सार्थक बनाता है। किसी भी माइग्रेट किए गए डेटा के विरुद्ध DBCC CHECKDB चलाने में सक्षम नहीं होने के कारण, आपको कम से कम अभी के लिए सहज होने की आवश्यकता है। SQL सर्वर डेटाबेस और दूरस्थ Azure डेटाबेस के बीच कनेक्शन को पुनर्स्थापित करने के साथ पुनर्स्थापना का प्रबंधन करना थोड़ा मुश्किल होगा।