Stretch Database چیست؟

/
/
/

Stretch Database چیست؟
Stretch Database یکی از ویژگی¬های جدید در SQL Server 2016 است. اگر حجم زیادی از داده ها را در اختیار دارید، حفظ تمام این داده¬های آرشیوشده یا مبتنی بر تاریخ در دیسک¬های با عملکرد بالاهزینه بیشتری برایتان به دنبال خواهد داشت. ما به عنوان یک مدیر پایگاه اطلاعاتی تمایلی به افزودن این داده¬های مبتی بر تاریخ به طرح پشتیبان خود را نداریم چون موجب افزایش اندازه نسخه پشتیبان می گردد. ما می توانیم پشتیبان گیری قسمتی یا partial را انتخاب کنیم اما باز هم شاهد بده بستان آن در طرح بازیابی خواهیم بود.
برای اینکه چنین مواردی پیش نیایند، مایکروسافت این ویژگی جدید را معرفی کرد. این ویژگی به ما امکان می دهد دادههای مبتنی بر تاریخ را به کلاد انتقال دهیم بدون اینکه نیاز به انجام کارهای اضافی در خصوص حفظ و نگهداری داده¬ها باشد، با این روش می توانیم دادهای تراکنشی فعلی را در سرور داخلی نگه داریم. یکی از نکته¬های مثبت این ویژگی عدم نیاز به انجام تغییرات در پرس و جوها و یکپارچه کار کردن آن است. وقتی جدولی را پرس وجو می کنید، این ویژگی داده های فعلی را چه مبتنی بر تاریخ باشند و چه داخلی، از کلاد واکشی خواهد کرد.
معماری

نحوه کار Stretch Database
– وقتی یک پایگاه اطلاعاتی را فعال می کنید تا از این ویژگی بسط دادن (stretch)استفاده نمایید، یک سرور لینک شده امن بین سرور داخلی و Azure ساخته می شود.
– هنگام پیکربندی، اعتبارنامه¬های Azure ارائه خواهند شد که در خصوص آن اشتراک دریافت می کنید. در این صورت یک SQL Database در Azure با سطح اجرایی S3 ساخته می شود و ورژن پایگاه اطلاعاتی برابر یا بزرگتر از V12 است ( اگر ورژن پایگاه اطلاعاتی کمتر از V12 باشد کار نخواهد کرد). تصور نمی کنم که بتوانید ورژن را پایین بیاورید اما در صورت نیاز به قدرت پردازشی بیشتر می توانید آن را ارتقاء دهید.
– حالا وقتی جدول را فعال می کنید تا داده ها را از سرور داخلی بسط دهید، شروع می کند به انتقال داده های واجد شرایط از سرور داخلی به پایگاه اطلاعاتی کلاد.
– وقتی که پرس و جو را در این جدول اجرا می کنید، پرس و جو هم در سرور داخلی و هم در کلاد براساس داده های لازم اجرا می شود.

امتیازات
– امتداد یکپارچه به کلاد Azure
– عدم وجود سربار حفظ و نگهداری
– قدرت پردازشی را می توان در میان سرور داخلی و کلاد Azure تقسیم کرد
– داده های فعلی OLTP در سرور داخلی اداره می شوند
– شما می توانید سطح عملکرد Azure SQL Database را برای قدرت بیشتر افزایش دهید

محدودیت ها
– برای فعال کردن یک جدول به عنوان stretch table محدودیتهای کمی وجود دارند. به عقیده ما این محدودیت ها معتبر هستند، چرا که ما از آنها در محیط OLTP خود استفاده می کنیم و نمی خواهیم این جدول ها به کلاد Azure بروند.
– حتی اگر داده های مبتنی بر تاریخ بسیار بندرت استفاده می شوند، نمی توانید سطح اجرایی پایگاه اطلاعاتی Azure SQL را مثلا از S3 به S0 کاهش دهید.
– بستگی به سرعت شبکه دارند. وقتی با داده های مبتنی بر تاریخ کار می کنید ممکن است گزارش یا حجم داده هایی که با آن کار می کنید، بسیار زیاد باشد؛ بنابراین دریافت آنها ممکن است کمی زمان ببرد.

شناسایی جدول¬ها برای بسط دادن به کلاد Azure
در ادامه می خواهیم ببینیم که چگونه جدول هایی که می توانند به کلاد بسط داده شوند را شناسایی کنیم. در اکثر موارد شما می دانید که کدام جدول ها را بسط دهید، در هر صورت اگر مطمئن نیستید می توانید از این ابزار استفاده نمایید. قصد داریم یکی از معروف ترین ابزارهایی که پیش از ارتقاء SQL Server به ورژن جدید برای این ارزیابی استفاده می شد را بکار ببریم. بله درست فهمیدید این ابزار، SQL Server upgrade advisor است.
SQL Server upgrade advisor یک ابزار نوسازی شده با رابط گرافیکی جدید است. SQL Server upgrade advisor به شما کمک می کند جدول¬هایی را که می خواهید بسط دهید را انتخاب نمایید.
پیش نیاز:
– SQL Server upgrade advisor را نصب کنید

شناسایی جدول ها با استفاده از SQL Server upgrade advisor
– SQL Server upgrade advisor را باز کنید. ورژن پیش نمایش فعلی ۲/۱ است که در سپتامبر ۲۰۱۵ منتشر کردید، امیدواریم نسخه RTM ارتقاء یابد.

– – در منوی بالا Scenarios را پیدا کنید، با کلیک روی آن می توانید Run Stretch Database Advisor را پیدا نمایید.

– روی Run Stretch Database Advisor کلیک کنید و سپس روی “Select Database to Analyze” کلیک نمایید.
– روی “SQL Instance” کلیک کنید، در این صورت سربرگ (tab) دیگری ظاهر می شود.
– حالا نام سرور SQL Server 2016 را ارائه دهید و روی “Connect” کلیک نمایید.

– به این ترتیب تمام پایگاه های اطلاعاتی لیست می شوند، کافیست پایگاه اطلاعاتی که می خواهید آنالیز کنید را انتخاب و روی “Run” کلیک نمایید.


– پس از اینکه آنالیز به پایان رسید، یک صفحه نمایش شبیه به این را می بینید. همانطور که متوجه شده اید ۷ جدول آنالیز شده اند.

– در سمت راست یک گراف و لیست جدول هایی را می بینید که می توانید آنها را بسط دهید.
– اگر هیچ کدام از این جدول ها مناسب بسط دادن نباشند، علت آن به تفضیل ارائه می گردد. ( مثلا امکان بسط دادن جدول های تکثیر شده یا Replicated tables وجود ندارد).
– گراف به شما می گوید که از بسط دادن جدول به کلاد چه مزایایی نصیبتان می گردد.
– در مورد جدول های کوچکتر، این مزایا کمترهستند چرا که هزینه Azure در مقایسه با حفظ داده ها در خود سرور داخلی بیشتر است.
– داده ها را مرور کنید و جدول را بر اساس مزایایی که در صورت بسط دادن، دریافت می کنید انتخاب نمایید.
– در واقع هیچ تغییری صورت نمی گیرد اما به شما در شناسایی جدول هایی که امکان بسط دادن آنها وجود دارد و مزایایی که در این صورت نصیبتان می شود، کمک می کند.

پیکربندی کشیدگی پایگاه اطلاعاتی
در این بخش به نحوه بسط دادن پایگاه اطلاعاتی به کلاد Azure می پردازیم. قبل از شروع این نکته را یادآور می شویم که جدول هایی که برای بسط دادن انتخاب می کنید تمام داده ها را به Azure منتقل می کنند، به این معنی که تنها می توانید جدول¬های آرشیو شده را بسط دهید پس نمی توانید کوکورانه تمام جدول ها را اضافه نمایید. تنها جدول های آرشیو شده مورد نیاز را اضافه کنید.

پیکربندی Stretch Database
– به SQL Server 2016 وصل شوید.
– به طور پیش فرض آرشیو داده¬های از راه دور خاموش است، بنابراین از پرس و جوی زیر برای فعال کردن آن استفاده نمایید. در این صورت این ویژگی در سطح سرور فعال می شود
– ?
۱
۲
۳
۴
۵
۶
۷ IF( SELECT value_in_use
FROM sys.configurations
WHERE name = ‘remote data archive’ ) = 0
BEGIN
EXEC sp_configure ‘remote data archive’, 1;
RECONFIGURE;
END;
-حال همین ویژگی را برای یک پایگاه اطلاعاتی فعال نمایید. روی پایگاه اطلاعاتی راست کلیک کرده به Tasks بروید و سپس Stretch و بعد Enable را همانند تصویر زیر انتخاب نمایید.

– ویزارد مربوط به پیکربندی ظاهر می شود. توجه کنید که تفاوت های زیادی در مقایسه با ورژن CTP 2.1 وجود دارد.Next را کلیک کنید.

-اتصال به کلاد Azure از طریق کلید پایگاه اطلاعاتی رمزگذاری شده است، پس باید کلید اصلی (در صورتیکه قبلا ساخته نشده) و بعد یک کلید پایگاه اطلاعاتی بسازید. فقط یک رمزعبور جدید در صفحه قرار دهید و next را کلیک کنید، رابط گرافیکی کاربراین کار را برای شما انجام می دهد.

حال تمام جدول ها لیست می شوند، جدول هایی را که می خواهید بسط دهید را انتخاب نمایید و Next را کلیک کنید.

-قبل از فعال شدن، تمام بررسی¬ها انجام می گیرد. اگر به خاطر داشته باشید گفتیم که محدودیت هایی وجود دارند، بنابراین تمام این محدودیت ها مورد اعتبارسنجی قرار می گیرند. نکته دیگر این است که هیچ کلید اصلی / یونیکی در جدول Azure ساخته نمی شود.

در این صفحه باید اعتبارنامه¬های Azure که اشتراک¬ها به آنها اضافه می شوند را ارائه دهید و سپس next را کلیک نمایید.

در این صفحه باید اشتراک و سپس منطقه را مشخص کنید. اگر قبلا Azure SQL Server داشته اید می توانید به آن وصل شوید در غیر اینصورت می توانید یک Azure SQL Server بسازید. در اینجا، ما از قبل Azure SQL Server داشتیم پس از آن استفاده کردیم.
-از آنجاییکه ما از Azure SQL Server قبلی استفاده کردیم، نام کاربری ادمین و رمز عبور از ما خواسته شد. بعلاوه، می توانیم برای دسترسی به این پایگاه اطلاعاتی IP range ارائه دهیم.
-خلاصه یا Summary را بررسی کنید، اگر همه چیز خوب بود روی finish کلیک کنید.

-فوق العاده است. هم اکنون جدول های انتخاب شده به پایگاه اطلاعاتی Azure بسط داده می شوند.

-اگر نگاهی به نماد پایگاه اطلاعاتی بیاندازید می بینید که تغییر کرده است. البته یک منبع داده خارجی ساخته شده را هم می توان یافت.

همه چیز خوب به نظر می رسد.حال داده هایی را به جدول می افزاییم. ما چند سطری را اضافه کردیم و این ابزار انتخابش را انجام داد و به کلاد Azure منتقل نمود.

Insert به خوبی کار کرد اما Update/Delete کار نمی کردند. خوب، جدول های آرشیو شده نیاز به بروزرسانی ندارند اما حذف یا Delete برای پاک کردن داده های قدیمی تر لازمند در غیر اینصورت شاهد اتلاف هزینه در ذخیره سازی Azure خواهیم بود. پس فرض را بر آن می گذاریم که عمل Update/Delete را در نسخه RTM خواهیم داشت.
Msg 14826, Level 16, State 1, Line 3
Update and delete of rows eligible for migration in table ‘trip’ is not allowed because of the use of REMOTE_DATA_ARCHIVE.
از آنجایی که این یک جدول آرشیو شده است، حجم داده ها باید زیاد باشد، می خواهیم ببینیم پردازش داده ها از سرور داخلی به کلاد Azure چگونه انجام می شود. به همین خاطر به Azure SQL Server وصل شدیم و پرس و جوی زیر را اجرا کردیم. نام پایگاه اطلاعاتی Azure دوباره تغییرکرد به همراه یکسری مقادیر یونیک که در انتها اضافه شده اند. نمی دانیم این مقادیر یونیک چه هستند.
ستون جدید با عنوان “batch–ObjectIDofInhouseTable” به جدول اضافه می شود. از اینجا فهمیدیم که پردازش سطرها به صورت دسته ای یا batch صورت می گیرد.
اگر دیدید بازای هر دسته حداکثر ۴۹۹ سطر انتخاب می شود، به این معنی است که اندازه دسته یا batch کم تر از ۵۰۰۰ سطر می باشد.
?
۱
۲
۳
۴
۵
۶ —IN AzureSQLServer
–Number of rows processed per batch
SELECT COUNT(*) [Number of Rows]
, [batchid–1285579618] [BatchID]
FROM [dbo].[dbo_Trip_1285579618_A1D2E41E-0C42-459B-80B7-D0C87C033F7C]
GROUP BY [batchid–1285579618];
توقف Stretch
فرض کنید در موقعیتی هستید که نمی خواهید داده ها به محض رسیدن منتقل شوند، تا به این صورت مانع ترافیک شبکه شوید. به همین دلیل ما می توانیم عمل بسط دادن یا Stretching را متوقف نماییم و هر زمان که لازم شد دوباره آن را فعال نماییم تا کار از جاییکه متوقف شده ادامه پیدا کند.
روی Table و سپس Stretch و بعد Pause “Data Migration” را راست کلیک کنید یا اینکه می توانید پرس و جوی زیر را اجرا نمایید

۱
۲ ALTER TABLE TRIP
SET ( REMOTE_DATA_ARCHIVE ( MIGRATION_STATE = PAUSED ) ) ; — To resume change PAUSED to OUTBOUND

فعال کردن Stretch برای جدول های اضافی در مرحله بعدی
روش اول
روی User database و سپس “Tasks” و بعد “Stretch” و سپس “Reconfigure” راست کلیک کنید. حال همان ویزارد را دریافت می کنید اما این بار از صفحه جدول آغاز می شود، جدول ها را انتخاب کرده و ویزارد را دنبال نمایید.
روش دوم
پایگاه اطلاعاتی کاربر را گسترش دهید، جدول را گسترش دهید. روی جدول و سپس “Stretch” و بعد “Enable” راست کلیک نمایید.

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

It is main inner container footer text