انتقال اطلاعات با Replication

معرفی
Replication راه‌حلی برای انتقال اطلاعات از یک بانک اطلاعاتی SQL server به یک بانک اطلاعاتی دیگر از همان نوع و البته مستقر در یک محل و کامپیوتر دیگر است. این فرآیند توسط ایجاد یک کپی از اطلاعات موجود در مبدا و انتقال آن به مقصد صورت می‌گیرد. در این ارتباط اطلاعاتی، اصطلاحاً به کامپیوتر و بانک‌ اطلاعاتی مبدا، ناشر(publisher) و به کامپیوتر و بانک اطلاعاتی مقصد، مشترک یا متعهد (subscriber) می‌گویند. البته این نوع رابطه، با وجود تنها یک ناشر اما یک یا چند مشترک امکان‌پذیر است. بدین‌معنی که اطلاعات یک بانک اطلاعاتی در مبدا قابل انتقال به چند مقصد مختلف است. از نسخه 7 به بعدSQL Server امکان تغییر اطلاعات در مقصد و انتقال آن به مبدا نیز وجود دارد. با این وصف، این رابطه داده‌ای بین ناشر و مشترک ممکن است گاهی اوقات برعکس شود و جای مبدا و مقصد در یک مقطع زمانی عوض شود. این قابلیت یکی از ویژگی‌های مهم SQL Server است که در نسخه‌های قدیمی آن وجود نداشت. بدین‌ترتیب یک کامپیوتر مشترک یا مقصد می‌تواند گاهی اوقات نقش ناشر یا مبدا را در همان رابطه بازی کند. به این قابلیت جدید Multi site update می‌گویند.
درSQL Server، سه نوع انتقال اطلاعات از طریق Replication وجود دارد. هر کدام از این سه راه، سناریوی خاصی برای انتقال اطلاعات از مبدا به مقصد و یا برعکس را مدیریت می‌کنند که در ادامه به بررسی آن‌ها می‌پردازیم.

1- انتقال اطلاعات به روش ادغام (Merge)
این نوع انتقال اطلاعات که از قابلیت Multi site هم پشتیبانی می‌کند، زمانی مورد استفاده قرار می‌گیرد که استقلال داخلی هر بانک اطلاعاتی طرف یک رابطه، به رسمیت شناخته می‌شود. بدین‌معنی که در یک رابطه انتقال اطلاعات، هر کامپیوتر ضمن حفظ ساختار بانک اطلاعاتی خود، هم می‌تواند نقش ناشر را داشته باشد و هم نقش مشترک را ایفا نماید. در این حالت هر تغییری در جداول مشترک هر طرف، بلافاصله در طرف دیگر هم اِعمال می‌شود. نکته مهمی که در این‌جا مطرح است این است که چطور طرفین این ارتباط متقابل باید با هم هماهنگ باشند و اولویت یکدیگر را به رسمیت بشناسند. به عنوان مثال فرض کنید در یک زمان واحد، هر دو طرف بخواهند اطلاعاتی را در مورد یک جدول بانک اطلاعاتی به یکدیگر ارسال کنند. (یعنی بروز حالت تداخل) این مشکل با استفاده از روش خاصی که هر نوع Replication مخصوص خودش دارد، قابل حل است. به‌طور کلی در حالت ادغام، یک پایگاه داده حایل میان ناشر و مشترک به عنوان توزیع‌گر (Distributor) ساخته می‌شود. این پایگاه داده به نامDistribution در لیست پایگاه‌های داده‌ای ناشر قرار‌می‌گیرد و وظیفه ایجاد همزمانی (synchronization) بین ناشر و مشترکین را ایفا می‌کند.
پایگاه داده توزیع‌گر هم می‌تواند در سمت ناشر و هم در یک کامپیوتر میانی دیگر (غیر از کامپیوترهای سمت مشترک) قرار داشته باشد. این پایگاه داده ضمن ایجاد همزمانی در ردوبدل اطلاعات بین ناشر و مشترک، این امکان را نیز فراهم می‌سازد تا مدیر سیستم بتواند اولویت و در واقع ارجحیت جهت انتقال اطلاعات در زمان بروز تداخل را مشخص کند. این اولویت (priority) در زمان تعریف طرف‌های ناشر و مشترک یک Replication از نوع ادغام توسط مدیر سیستم تنظیم می‌شود.

2- تصویربرداری از اطلاعات (snapshot)
در این روش ابتدا یک تصویر کامل از آنچه که باید از سمت ناشر به سمت مشترک برود تهیه می‌شود. این تصویر هم شامل خود ساختار آنچه که منتقل می‌شود (مثلاً ساختار یک جدول) و هم شامل اطلاعات داخل آن است. در ابتدای کار، تصویر مذکور عیناً به مشترک فرستاده می‌شود و سپس از این به بعد هر تغییری که در سمت ناشر انجام شود بلافاصله به طرف مشترک هم فرستاده می‌شود. روند و توالی ارسال این تغییرات هم همانند حالت قبل (ادغام) طی یک فاصله زمانی مشخص مثلاً ساعتی یک‌بار که توسط مدیر سیستم‌ قابل تنظیم است، انجام می‌گیرد.
یکی از مزایای این روش نسبت به حالت ادغام، این است که زمان کمتری از وقت مدیر سیستم را جهت پیکربندی و تنظیم عمل انتشار صرف می‌کند و به دلیل این‌که در ابتدای عمل انتشار، خود ساختار نیز عیناً به مشترک منتقل می‌شود، از قابلیت اطمینان بیشتری برخوردار است. به طور کلی کاربرد این نوع انتقال اطلاعات، زمانی است که مدیر سیستم قصد ایجاد یک ارتباط ساده یک طرفه ولی مطمئن را دارد.

3- انتقال براساس فرآیند (Transactional)
این روش یکی از بهترین و قابل کنترل‌ترین روش‌های انتقال اطلاعات است. در این روش هر تغییری که در جداول ناشر صورت گیرد، به‌صورت یک دستور SQL درآمده و تحت یک فرآیند واحد هم در سمت ناشر و هم در سمت کلیه مشترکین اجرا می‌شود. در این صورت اگر به‌طور مثال یکی از مشترکین به دلیلی با اشکال مواجه شده و تغییر موردنظر در آن انجام نشود، این تغییر نه در خود ناشر و نه در هیچ‌کدام از مشترکین دیگر نیز انجام نخواهد شد. بدین‌معنی که یا یک تغییر در اطلاعات، برای تمام کامپیوترها اعم از ناشر و کلیه مشترکین انجام می‌شود و یا این‌که برای هیچ‌کدام انجام نخواهد شد در این حالت هم یک پایگاه داده واسطه به نام Distribution نقش دریافت و ارسال فرآیند را به طرف مشترک ایفا می‌کند. در واقع روش فرآیند، در مقایسه با دو روش قبل از حالت به هنگام (online) بودن بیشتری برخوردار است. یعنی این‌که هر فرآیند و هر دستور در همان لحظه که می‌خواهد در ناشر اجرا شود، به واسط فرستاده شده و سپس در یک زمان واحد در کلیه مشترکین نیز انجام می‌شود و در واقع زمان تغییر اطلاعات در ناشر و در مشترکین تقریباً یکسان است. همچنین در این روش تداخلی هم پیش نمی‌آید. چون هر تغییری ابتدا باید به واسط فرستاده شود و از آن‌جا به جاهای دیگر ارسال شود و واسط هم آن‌ها را در یک صف اولویت (priority queue) قرار داده و به ترتیب انجام می‌دهد. نتیجه این نوع انتقال اطلاعات، داشتن چند پایگاه داده کاملاً یکسان و به‌هنگام در مکان‌های مختلف است که همگی از یک ناشر، اطلاعات موردنظر را دریافت می‌کنند.

تعریف ناشر و مشترکین
برای تعیین یک SQL Server به عنوان ناشر، کافی است یک رابطه Replication برای آن تعریف کرده و پس از انجام تنظیمات مربوطه و طی مراحل خاص هر یک از سه نوع انتقال اطلاعات، آن کامپیوتر را به عنوان مبدا یا ناشر یک فرآیند انتقال معرفی کنیم. در همین حین و برای ایجاد پایگاه داده واسط یا همان توزیع‌گر (Distributor) هم می‌توان وارد عمل شده و خود ناشر را به عنوان توزیع‌گرِ آن فرآیندِ انتقال معرفی کنیم. پس از این‌کار نوبت به تعریف مشترکین می‌رسد. برای تعریف یک مشترک از دو راه می‌توان اقدام کرد، که هر یک کاربرد مخصوص به خود را دارند. در روش اول که فرستادن اطلاعات به طرف یک مشترک است و در اصطلاح push نامیده می‌شود، معرفی مشترک از سمت ناشر انجام می‌شود. بدین‌معنی که مدیر سیستم می‌تواند بلافاصله پس از تعریف یک ارتباط و ناشر آن از همان لحظه و در همان محل استقرار ناشر، مشترکین را یک به یک به این نوع ارتباط دعوت و اضافه کند و اطلاعات را به سمت آن‌ها بفرستد. این ارتباط به دلیل این‌که کاملاً از طرف ناشر، کنترل می‌شود، از حالت به‌هنگام بیشتری
(online) برخوردار است و اطلاعات بلافاصله به سمت مشترک فرستاده می‌شود. در روش دوم که Pull نام دارد، تعریف مشترک از سمت خودش انجام می‌شود و در واقع این مشترک است که اطلاعات را از ناشر طلب می‌کند. این حالت بیشتر در مواقعی کاربرد دارد که اولاً تعداد مشترکین از قبل برای ناشر مشخص نیست و ثانیاً بروز بودن اطلاعات در آن واحد از اهمیت حیاتی برای سیستم برخوردار نیست و انتقال اطلاعات می‌تواند با تأخیر و با درنگ زمانی و در زمان دلخواه مشترک ‌نجام شود.

طرح یک مسأله‌
فرض کنید می‌خواهیم با استفاده از مکانیسم Replication، اطلاعات موجود در بانک اطلاعاتی Northwind را از یک پایگاه داده SQL Server به نام server به یک بانک اطلاعاتی به همان نام و بر روی یک پایگاه داده دیگر مستقر در یک سرور راه دور به نام Home server منتقل کنیم. برای این‌کار می‌توانیم از هر کدام از سه روش انتقال اطلاعات، استفاده نماییم.


مراحل ایجاد ناشر

برای این کار، در پنجره Enterprise Manager، بر روی گزینه Publication از آیتم Replication کلیک سمت راست نموده و فرمان New را انتخاب می‌نماییم. با آغاز ویزارد مخصوص، کلید Next را کلیک کرده و در صفحه بعد در پاسخ به این سؤال که آیا می‌خواهید پایگاه داده توزیع‌گر (Distributor) در همین کامپیوتر ساخته شود یا خیر، گزینه اول یعنی خود کامپیوتر server را انتخاب می‌کنیم و به مرحله بعد می‌رویم (شکل 1).

در پنجره بعدی از کاربر خواسته می‌شود تا فولدری را جهت قرار دادن فایل‌های مربوط به عملیات انتقال مشخص کند. وجود این فولدر برای انجام عمل Distribution ضروری است و باید طوری انتخاب شود که در شبکه‌ای که قرار است مشترکین به آن بپیوندند قابل دسترسی باشد. پس از انتخاب این فولدر و کلیک بر روی کلید Next، در مرحله بعد نام بانک اطلاعاتی موردنظر یعنی Northwind را از داخل لیست انتخاب کرده و به مرحله اصلی یعنی انتخاب نوع Replication می‌رسیم که در این‌جا همان گزینه اول یعنی snapshot را انتخاب می‌کنیم (شکل 2).

سپس در مرحله بعد باید هر موجودیتی اعم از جداول و روال‌هایی، را که می‌خواهیم در این عملیات انتقال وجود داشته باشند، معرفی کنیم برای مثال جدول مشتریان (customers) را از داخل لیست جداول علامت زده و به مرحله بعد می‌رویم. (شکل 3) در مرحله بعد یک نام برای عملیات انتقال انتخاب کرده و کلید Next را می‌زنیم و در نهایت با کلیک بر روی عبارت Finish عملیات را پایان می‌دهیم.

مراحل ایجاد مشترکین‌

1- روش Pull (از طریق مشترک)
برای ایجاد یک مشترک با روش pull، به کامپیوتر مشترک مراجعه کرده و بر روی گزینه subscription کلیک سمت راست کرده و فرمان New pull را انتخاب می‌کنیم. سپس از داخل پنجره بعدی گزینه دوم یعنی Look in the Active Directory را انتخاب می‌نماییم (شکل 4).

در مرحله بعد نام ناشر و سپس نام بانک‌اطلاعاتی موردنظر، نام عمل نشر که در ناشر تعریف کردیم و سپس رمز عبور مربوط به یک کاربر معتبر در ناشر مثلاً کاربر sa را وارد می‌نماییم. (شکل 5)

در قسمت بعد هم نام بانک اطلاعاتی مقصد را که همان Northwind است انتخاب می‌نامیم. پس از طی چند مرحله دیگر که نیاز به تغییری در آن‌ها نیست و صرفاً با کلیک بر روی کلید Next،مقادیر پیش‌فرض‌را تأیید می‌کنیم به مرحله انتخاب توالی زمانی به‌روز شدن مشترک می‌رسیم. در این‌جا هم باید بین سه روش مختلف یعنی حالت‌های بلادرنگ، زمان‌دار، براساس درخواست، یکی را انتخاب کنیم که در این‌جا همان نوع اول یعنی بلادرنگ را انتخاب می‌نماییم (شکل 6).

با این کار مراحل تعریف یک مشترک از طریق pull پایان می‌پذیرد. اما نکته مهمی که در این‌جا باید به آن اشاره کنیم این است که برای فراهم ساختن امکان تعریف مشترکین از طریق pull حتماً باید این اجازه را قبلاً و از طریق ناشر به کاربران مشترک داده باشیم.
برای این‌کار، قبل از تعریف مشترک، باید در کامپیوتر ناشر، بر روی نام عملیات انتقال ایجاد شده کلیک سمت راست کرده و گزینه خصوصیات (properties) را انتخاب نماییم. سپس زبانه subscription option را باز کرده و مطمئن شویم که گزینه‌های Allow anonymous و همچنین Allow Pull در حالت تأیید شده باشند (شکل 7).

2 – روش push (از طریق ناشر)
برای تعریف یک مشترک با استفاده از روش push، به کامپیوتر ناشر مراجعه کرده و بر روی نام عملیات نشر که قبلاً ایجاد کرده‌ایم کلیک سمت راست می‌کنیم. سپس روی گزینه push new کلیک می‌کنیم. با شروع مراحل ویزارد، نام کامپیوتر مشترک را از لیست انتخاب می‌کنیم (شکل 8).

در مراحل بعدی با معرفی بانک اطلاعاتی Northwind به عنوان مقصد به پنجره ویژه تعریف زمان به‌روز شدن مشترک می‌رسیم که از بین دو نوع بلادرنگ و زماندار قابل انتخاب است. که باز هم نوع اول را انتخاب می‌کنیم. در مرحله بعد هم مطمئن می‌شویم که گزینه start snapshot agent در حالت تأیید قرار دارد و سپس با چند کلیک بر روی کلیدNext عملیات را پایان می‌دهیم. نکته بسیار مهمی که برای تعریف مشترک از طریق روش push باید در نظر داشته باشیم این است که برای ظاهر شدن نام هر مشترک در لیست انتخاب که در شکل 8 ملاحظه کردید، باید قبلاً این مشترک با استفاده از عملیات Registration در کامپیوتر ناشر تعریف شده باشد. در غیر این‌صورت نام آن در داخل لیست مشترکین ظاهر نمی‌شود. عمل مذکور هم در یک محیط شبکه‌ای بسیار آسان است. کافی است بر روی SQL Server Group در کامپیوتر ناشر کلیک راست کرده و با انتخاب New Registration و وارد کردن نام مشترک این کار را انجام دهیم.

مهیار داعی‌الحق

ماهنامه شبکه – آبان 1383 شماره 48

دیدگاهتان را بنویسید

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

اجرا شده توسط: همیار وردپرس