SQL सर्वर 2016 से शुरू होकर आपके पास डेटाबेस के कुछ हिस्सों को क्लाउड में स्टोर करने की क्षमता होगी। इस नई क्षमता को स्ट्रेच डेटाबेस के रूप में जाना जाता है और यह सुविधा उन लोगों के लिए फायदेमंद होगी जिन्हें लंबे समय तक लेन-देन संबंधी डेटा रखने की आवश्यकता होती है और जो भंडारण पर पैसे बचाने की तलाश में हैं। Microsoft Azure क्लाउड में डेटा को निर्बाध रूप से माइग्रेट करने में सक्षम होने से आपको अपने एप्लिकेशन डेटा को क्वेरी करने के तरीके को बदले बिना डेटा संग्रहीत करने की क्षमता मिलेगी।
SQL सर्वर 2016 सामुदायिक प्रौद्योगिकी पूर्वावलोकन 2 (CTP2) में, स्ट्रेच डेटाबेस संपूर्ण तालिकाओं को माइग्रेट करता है। यदि आपका डेटाबेस मौजूदा डेटा से अलग-अलग तालिकाओं में संग्रह डेटा को संग्रहीत करने के लिए पहले से ही सेट है, तो आप आसानी से संग्रह डेटा को Azure में माइग्रेट करने में सक्षम होंगे। एक बार जब आप स्ट्रेच डेटाबेस को सक्षम कर लेते हैं, तो यह चुपचाप आपके डेटा को एक Azure SQL डेटाबेस में माइग्रेट कर देगा। स्ट्रेच डेटाबेस क्वेरी को फिर से लिखकर दूरस्थ डेटा के विरुद्ध क्वेरी चलाने के लिए Azure में प्रोसेसिंग पावर का लाभ उठाता है। आप इसे क्वेरी प्लान में "रिमोट क्वेरी" ऑपरेटर के रूप में देखेंगे।
डेटाबेस और तालिकाओं की पहचान करने का एक आसान तरीका जो स्ट्रेच-सक्षम होने के लिए योग्य हैं, SQL सर्वर 2016 अपग्रेड एडवाइजर को डाउनलोड करना और चलाना और स्ट्रेच डेटाबेस एडवाइजर को चलाना है। हारून बर्ट्रेंड (@AaronBertrand) ने हाल ही में इस बारे में लिखा:
- SQL सर्वर 2016 स्ट्रेच डेटाबेस के लिए उम्मीदवार तालिका की पहचान करें
स्ट्रेच डेटाबेस के लिए सीमाएं
सभी टेबल स्ट्रेच-सक्षम होने के योग्य नहीं होंगे। कुछ तालिका गुण, डेटा और स्तंभ प्रकार, बाधाएँ और अनुक्रमणिका समर्थित नहीं हैं, जैसे:
- स्मृति-अनुकूलित और प्रतिकृति तालिकाएं
- टेबल्स जिसमें FILESTREAM डेटा है, चेंज ट्रैकिंग या चेंज डेटा का उपयोग करें
- डेटा प्रकार जैसे टाइमस्टैम्प, sql_variant, XML, भूगोल या कॉलम जो हमेशा एन्क्रिप्टेड होते हैं
- तालिका को संदर्भित करने वाली बाधाओं या विदेशी कुंजी बाधाओं की जाँच करें और डिफ़ॉल्ट करें
- एक्सएमएल, पूर्ण-पाठ, स्थानिक, क्लस्टर्ड कॉलमस्टोर और अनुक्रमित दृश्य जो स्ट्रेच-सक्षम तालिका का संदर्भ देते हैं
- आप UPDATE या DELETE स्टेटमेंट नहीं चला सकते हैं, या स्ट्रेच-सक्षम टेबल पर CREATE INDEX या ALTER INDEX ऑपरेशन नहीं चला सकते हैं
सीमाओं की पूरी सूची के लिए, आप यहां जा सकते हैं:स्ट्रेच डेटाबेस के लिए आवश्यकताएं और सीमाएं।
स्ट्रेच डेटाबेस सेट करना
आरंभ करना कोई जटिल कार्य नहीं है। आपको एक Azure खाते की आवश्यकता होगी और फिर उदाहरण पर स्ट्रेच डेटाबेस को सक्षम करना होगा।
एक इंस्टेंस रन पर स्ट्रेच डेटाबेस को सक्षम करने के लिए:
EXEC sys.sp_configure N'remote data archive', '1'; RECONFIGURE; GO
इस डेमो के लिए मैं SQL Server 2016 CPT2 इंस्टेंस पर AdventureWorks2014 डेटाबेस का उपयोग करने जा रहा हूं। मैं एक नई तालिका बनाकर शुरू करूँगा:
USE [AdventureWorks2014]; GO CREATE TABLE dbo.StretchTest ( FirstName VARCHAR(50), LastName VARCHAR(50) ); GO
और फिर मैं कुछ डेटा के साथ टेस्ट टेबल स्ट्रेचटेस्ट को पॉप्युलेट करूंगा:
USE [AdventureWorks2014]; GO INSERT INTO dbo.StretchTest(FirstName, LastName) VALUES('Paul', 'Randal'), ('Kimberly', 'Tripp'),('Jonathan', 'Kehayias'), ('Erin', 'Stellato'),('Glenn', 'Berry'), ('Tim', 'Radney'); GO
अब मेरे पास एक टेबल है जिसे मैं माइक्रोसॉफ्ट एज़ूर क्लाउड तक बढ़ा सकता हूं। ऐसा करने के लिए मैं एडवेंचरवर्क्स2014 पर राइट-क्लिक करके, टास्क चुनकर और स्ट्रेच के लिए डेटाबेस सक्षम करें का चयन करके जीयूआई का उपयोग करूंगा।
स्ट्रेच विज़ार्ड के लिए सक्षम डेटाबेस निम्नानुसार खुल जाएगा:
मैं अगला क्लिक करूंगा:
और मेरे Microsoft Azure खाते में साइन इन करें:
फिर मुझे यह सत्यापित करने के लिए कहा जाता है कि मैं किस खाते का उपयोग करना चाहता हूं:
फिर मैं चुनता हूं कि मैं किस Azure स्थान का उपयोग करना चाहता हूं और एक व्यवस्थापक लॉगिन और पासवर्ड निर्दिष्ट करता हूं। जब आप ऐसा करते हैं, तो व्यवस्थापक उपयोगकर्ता नाम और पासवर्ड को नोट करना सुनिश्चित करें क्योंकि यदि आपको डेटाबेस को पुनर्स्थापित करना है तो Azure SQL डेटाबेस से पुन:कनेक्ट करने के लिए आपको भविष्य में इसकी आवश्यकता होगी।
मैं फिर अगला क्लिक करता हूँ:
और समाप्त क्लिक करें और डेटाबेस Azure SQL डेटाबेस सर्वर के लिए प्रावधान करना शुरू कर देता है।
मैंने अभी अपने स्थानीय सर्वर पर एक सुरक्षित लिंक्ड सर्वर परिभाषा बनाई है जिसमें दूरस्थ Azure SQL डेटाबेस समापन बिंदु के रूप में है। मैं इसे सर्वर ऑब्जेक्ट्स, लिंक्ड सर्वरों के साथ-साथ SQL डेटाबेस के तहत अपने Azure खाते में देख सकता हूं। ध्यान दें कि केवल सिस्टम प्रक्रियाएं ही इस लिंक किए गए सर्वर का उपयोग कर सकती हैं; उपयोगकर्ता लॉगिन लिंक किए गए सर्वर के माध्यम से दूरस्थ समापन बिंदु पर क्वेरी जारी नहीं कर सकता है।
अब जब स्ट्रेच डेटाबेस उदाहरण के लिए सक्षम है और एडवेंचरवर्क्स2014 डेटाबेस के लिए मैं अब अपनी नई तालिका को बढ़ा सकता हूं। तालिका को Azure तक फैलाने के लिए मुझे तालिका को बदलने और दूरस्थ डेटा संग्रह को सक्षम करने की आवश्यकता है।
USE [AdventureWorks2014]; GO ALTER TABLE [StretchTest] ENABLE REMOTE_DATA_ARCHIVE WITH ( MIGRATION_STATE = ON ); GOको सक्षम करें
SQL सर्वर 2016 के साथ नई सुविधाओं के अलावा, कुछ नए DMV भी हैं। Azure में डेटा के माइग्रेशन की निगरानी के लिए आप sys.dm_db_rda_migration_status को क्वेरी कर सकते हैं। जब मैंने दूरस्थ डेटा संग्रह को सक्षम करने के बाद DMV से पूछताछ की तो मैं देख पा रहा था कि 6 पंक्तियाँ माइग्रेट की गई थीं:
स्ट्रेच डेटाबेस का बैकअप और पुनर्स्थापना
वर्तमान में SQL सर्वर 2016 CTP2 में जब स्ट्रेच-सक्षम डेटाबेस का बैकअप लिया जाता है, तो एक उथला बैकअप बनाया जाता है जिसमें वह डेटा शामिल नहीं होता है जिसे Azure SQL डेटाबेस में माइग्रेट किया गया है। यह उम्मीद की जाती है कि SQL सर्वर 2016 के RTM रिलीज़ के साथ स्ट्रेच-सक्षम डेटाबेस का बैकअप लेने से एक गहरा बैकअप बन जाएगा जिसमें स्थानीय और स्ट्रेच्ड डेटा दोनों शामिल होंगे।
स्ट्रेच-सक्षम डेटाबेस को पुनर्स्थापित करते समय, आपको स्थानीय डेटाबेस को दूरस्थ Azure SQL डेटाबेस से फिर से कनेक्ट करना होगा। आप संग्रहीत कार्यविधि sys.sp_reauthorize_remote_data_archive को db_owner के रूप में चलाकर ऐसा करते हैं।
अगर मैं अब स्ट्रेच-सक्षम एडवेंचरवर्क्स2014 डेटाबेस का बैकअप लेता हूं और इसे पुनर्स्थापित करता हूं, तो मैं स्ट्रेचटेस्ट टेबल को तब तक क्वेरी नहीं कर पाऊंगा जब तक कि मैं Azure SQL डेटाबेस को चलाकर फिर से कनेक्ट नहीं कर देता:
USE [AdventureWorks2014]; GO EXEC sys.sp_reauthorize_remote_data_archive @azure_username, @azure_password; GO
एक बार फिर से कनेक्ट होने पर मुझे नीचे जैसा संदेश मिलता है और फिर मैं एक बार फिर से स्ट्रेच किए गए डेटा को क्वेरी करने में सक्षम होता हूं:
दूरस्थ डेटाबेस 'RDAAdventureWorks201467B6D9D4-E8E0-4C54-B3EF-7C2D3F1326C4' को दूरस्थ डेटाबेस 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D' में कॉपी करना।दूरस्थ डेटाबेस कॉपी के पूरा होने की प्रतीक्षा में।
br />दूरस्थ डेटाबेस 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D' ने कॉपी करना पूरा कर लिया है, और अब यह ऑनलाइन है।
स्ट्रेच-सक्षम डेटाबेस को किसी अन्य इंस्टेंस पर पुनर्स्थापित करते समय, उस इंस्टेंस में "दूरस्थ डेटा संग्रह सक्षम होना चाहिए"। एक बार जब आप डेटाबेस को पुनर्स्थापित कर लेते हैं और "दूरस्थ डेटा संग्रह" को सक्षम कर लेते हैं, तो केवल sys.sp_reauthorize_remote_data_archive संग्रहीत कार्यविधि को चलाकर Azure SQL डेटाबेस से पुन:कनेक्ट करना आवश्यक है।
बेसिक, स्टैंडर्ड और प्रीमियम सर्विस टियर के लिए Azure SQL डेटाबेस का बैकअप हर घंटे लिया जाता है। बैकअप प्रतिधारण अवधि सेवा स्तरीय स्तर के आधार पर भिन्न होती है। लेखन के समय, मूल के लिए यह 7 दिन, मानक 14 दिन और प्रीमियम 35 दिन है। आप Microsoft Azure वेब पोर्टल का उपयोग करके Azure SQL डेटाबेस को पुनर्स्थापित कर सकते हैं।
डेटा अन-माइग्रेट करें
Azure SQL डेटाबेस से डेटा को वापस स्थानीय संग्रहण में माइग्रेट करने के लिए आपको स्ट्रेच-सक्षम तालिका के समान स्कीमा के साथ एक नई स्थानीय तालिका बनाने की आवश्यकता होगी। फिर आपको स्ट्रेच-सक्षम तालिका से डेटा को नई स्थानीय तालिका में कॉपी करना होगा। एक बार डेटा कॉपी हो जाने के बाद आप स्ट्रेच-सक्षम तालिका को छोड़ देते हैं और नई स्थानीय तालिका का नाम बदलकर स्ट्रेच-सक्षम तालिका के नाम पर रख देते हैं जिसे अभी-अभी गिराया गया था।
आप किसी डेटाबेस के लिए स्ट्रेच को केवल तभी अक्षम कर सकते हैं जब सभी स्ट्रेच-सक्षम टेबल हटा दिए गए हों। यदि आप स्ट्रेच के लिए सक्षम डेटाबेस को छोड़ते हैं, तो स्थानीय डेटाबेस हटा दिया जाता है लेकिन दूरस्थ डेटा नहीं होता है; आपको Azure प्रबंधन पोर्टल से दूरस्थ डेटाबेस को छोड़ना होगा।
सारांश
यदि आपका डेटाबेस इसका समर्थन करता है, तो स्ट्रेच डेटाबेस संग्रह डेटा को Microsoft Azure में माइग्रेट करने का एक आसान तरीका है। वर्तमान में SQL सर्वर 2016 CTP2 में तालिका, डेटा और स्तंभ गुणों, डेटा और स्तंभ प्रकार, बाधाओं और अनुक्रमणिका के साथ कई सीमाएँ हैं। यदि आप उन सीमाओं से प्रतिबंधित नहीं हैं, तो स्ट्रेच डेटाबेस ऐतिहासिक डेटा को Azure SQL डेटाबेस में माइग्रेट करने और मूल्यवान स्थानीय संग्रहण को मुक्त करने का एक आसान तरीका है। बैकअप प्रबंधित करना थोड़ा अधिक जटिल हो जाएगा क्योंकि आपका डेटा ऑन-प्रिमाइसेस और क्लाउड में विभाजित हो जाएगा।
मैं आरटीएम रिलीज में इन प्रतिबंधों को हटाए जाने की प्रतीक्षा कर रहा हूं, और मुझे यकीन है कि आप में से कई लोग इस शानदार सुविधा का उपयोग करने में सक्षम होंगे।