امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
بررسی انواع SQL Server Replication
نویسنده پیام
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,483
موضوع‌ها: 263
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1651
( 3915 تشکر در 1442 ارسال )
ارسال: #1
بررسی انواع SQL Server Replication
با توجه به آنکه این تکنولوژی از اهمیت ویژه ای برخوردار است، در این مقاله انواع آنرا مورد بحث و بررسی بیشتر قرار می دهیم. لازم به ذکر است که دلایل و سناریو های مختلفی موجود است که موجب می شود که Replication به عنوان ابزاری قدرتمند برای پخش کردن و انتشار داده ها در نظر گرفته  شود که از آن جمله می توان به از بین بردن اثرات عملیات متمرکز و فشرده ی Read مثل تولید گزارش و…  نام برد. به عبارتی دیگر Replication بیشتر در مواقعی که اطلاعات مورد نظر Read Only باشد و نیازی به آپدیت کردن source نباشد مورد استفاده قرار می‌گیرد.
انواع SQL Replication

SQL Server از سه نوع Replication پشتیبانی می‌کند: Snapshot، Transactional یا تراکنشی و Merge  یا ادغام. یک Peer-to-Peer Replication  نیز وجود دارد که نوعی Replication تراکنشی با کمی ارتقا است و اجازه به‌روزرسانی دوسویه (Bi-Directional) را فراهم می سازد.

Snapshot Replication

Snapshot Replication هربار که اجرا می‌شود، یک کپی یکسان از Objectهای Replicate شده و داده‌هایشان می‌سازد. هیچ قابلیت هماهنگ‌سازی برای Snapshot Replication در دسترس نیست؛ اجراهای بعدی همیشه تمام Dataset را با بازنویسی هر تغییر بیرونی که ممکن است به پایگاه داده‌ی مقصد اعمال شده باشد، مجددا کپی می‌کنند.

Snapshot Replication از ابزار bcpی SQL Server برای نوشتن محتوای هر جدول در درون پوشه‌ی Snapshot استفاده می‌کند. پوشه‌ی Snapshot، در زمانی که Replication پیکربندی شده باشد، یک پوشه‌ی اشتراکی نصب شده بر سرور Distributer است. هر جزئی که در Snapshot Replication شرکت می‌کند لازم است که به پوشه‌ی Snapshot دسترسی داشته باشد.

هربار که Snapshot Replication اجرا می‌شود، تمام Articleها و داده‌هایشان مجددا از ابتدا کپی می‌گردند و این فرایند ممکن است به منابع ذخیره‌ساز و پهنای باند کافی نیاز داشته باشد. تمام انواع دیگر Replication، حین نصب اولیه، به طور پیش‌فرض از تنها یک Snapshot Replication جهت Sync کردن Publisher با Subscriberهایش استفاده می‌کنند. لازم به ذکر است که  از Snapshot Replication به ندرت به تنهایی مورد استفاده قرار ‌‌می‌گیرد، بنابراین بیش از این در مورد صحبت نمی‌کنیم.

Replication تراکنشی
Replication تراکنشی داده‌ها را به صورت یک سویه (Uni-Directional) از دیتابیس اصلی به پایگاه داده‌ی مقصد کپی می‌کند. این نوع Replication برای Sync نگه‌داشتن داده‌ها از فایل‌های Log همراه پایگاه داده‌ی منبع استفاده می‌نماید. اگر تغییری بر پایگاه داده‌ی منبع صورت بگیرد، بلافاصله به پایگاه داده‌ی مقصد Sync می‌شود، یا این که همسان‌سازی را می‌توان زمان‌بندی کرد. هر‌چند، Replication تراکنشی نسبت به تغییرات بیرونی بر پایگاه داده‌ی مقصد حساس است. هریک از این گونه تغییرات بالقوه می‌تواند Replication را بشکند، بنابراین برای هر قصد و هدفی پایگاه داده‌ی مقصد باید Read-Only درنظر گرفته شود. به هر حال استثنائاتی برای این قاعده وجود دارند. به عنوان مثال کاربر می‌تواند Objectهایی را در دیتابیس مقصد اصلاح کند که جزو تنظیمات Replication نیستند.

Replication تراکنشی همان‌طور که از اسم آن پیداست بر پایه ی تراکنش کار می‌کند. Log Reader Agent نیز Log تراکنش پایگاه داده‌ی Publication را اسکن کرده و هر تراکنش صورت گرفته را بررسی می‌نماید تا مشخص شود که آیا تغییری بر Articleهای Replicate شده تاثیر داشته است یا خیر. اگر تاثیر داشته باشند، آن تغییرات در Distribution Database بصورت Log نگهداری می‌شوند. سپس Distribution Agent آن تغییرات را با Subscriber، باید Replicate کند.

Replication تراکنشی امکان همسان‌سازی بصورت Real-Time را فراهم نموده و ظرفیت کمی از Publisher را اشغال می‌کند. در Replication تراکنشی چند قابلیت هستند که امکان جابه‌جایی داده‌ی دوسویه (Bi-directional) را فراهم می‌کنند، مانند Peer-to-Peer Replication. به هر حال Replication تراکنشی یک سویه (Uni-Directional) رایج‌ترین شکل مورد استفاده است و روش‌های دیگر در این مطلب پوشش داده نمی‌شوند. برای آن که Replication تراکنشی کارامد باشد، هر جدولی را که کاربر می‌خواهد منتشر کند باید با یک Primary Key پیکربندی نمود.

بررسی Merge Replication

Replication ادغامی به دو یا چند پایگاه داده اجازه می‌دهد که Sync بمانند. هر تغییری که بر یک پایگاه داده اعمال گردد، به طور خودکار به پایگاه داده‌های دیگر نیز اعمال می‌شود و بالعکس. بطور کلیMerge Replication  طراحی شد تا توانایی تغییر داده‌ها را برای Publisher همانند Subscriber ایجاد کند، اما این Replication سناریوهای Disconnect شده را نیز ممکن می‌کند. به عنوان مثال، اگر ارتباط یک Subscriber در طول بخشی از روز از یک Publisher، قطع شده باشد، Subscriber و Publisher زمانی که مجددا متصل گردند، هماهنگ‌سازی می‌شوند.

Merge Agent مسئول همسان‌سازی تغییرات بین Publisher و Subscriberهایش است. این Agent، مجموعه‌ای از Triggerها را برای شناسایی Articleهایی که تغییر یافته‌اند و برای ثبت آن تغییرات به‌کار می‌گیرد. با  توجه به آنکه می‌توان داده‌ها را هم روی Subscriber و هم روی Publisher اصلاح نمود، ممکن است که یک ردیف همزمان در دو جای مختلف به‌روزرسانی گردد که این امر می‌تواند منجر به مغایرت بین داده‌ها شود. Replication ادغام با چند قابلیت Built-in همراه است که می‌تواند چنین مغایرت‌هایی را رفع کند.
Replication ادغامی ردیف‌ها را در سرتاسر سرورهای مختلف با استفاده از یک ستون Uniqueidentifier با مجموعه Propertyی ROWGUIDCOL و یک محدودیت منحصر به فرد تعریف شده بر آن ستون، شناسایی می‌کند. اگر کاربر جدولی منتشر کند که در حال حاضر چنین ستونی ندارد، یک ستون Uniqueidentifier با پیکربندی مناسب، به طور خودکار اضافه خواهد شد.

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
(آخرین ویرایش در این ارسال: ۲۴-آذر-۱۳۹۹, ۱۷:۳۳:۵۹، توسط Ghoghnus.)
۲۴-آذر-۱۳۹۹, ۱۷:۳۲:۲۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] کانکت نشدن در sql server mnd110 0 333 ۲۳-شهریور-۱۳۹۹, ۱۲:۲۲:۲۰
آخرین ارسال: mnd110
  مشکل با Connect کردن SQL SERVER VBYOFSKI 35 62,882 ۱۹-شهریور-۱۳۹۹, ۱۸:۱۳:۵۸
آخرین ارسال: mnd110
Shy نحوه ذخیره عکس در SQL eli_j0o0o0n 25 33,509 ۲۹-مرداد-۱۳۹۶, ۱۵:۴۸:۵۷
آخرین ارسال: Ghoghnus
  [فوری] کمک جهت استارت نمودن sql 2014 mohamad101010 1 2,621 ۲۵-فروردین-۱۳۹۶, ۰۴:۳۹:۲۴
آخرین ارسال: babyy
  مشکل در SQL server bahargol 1 3,422 ۰۵-مهر-۱۳۹۵, ۲۳:۴۰:۱۱
آخرین ارسال: Ghoghnus
  نمیتونم به sql کانکت بشم.کانکشن استرینگ میخوام visman 0 2,049 ۲۵-تير-۱۳۹۵, ۱۷:۰۴:۰۲
آخرین ارسال: visman
  مشکل در انصال به sql بهروز عابدی 2 2,704 ۲۳-تير-۱۳۹۵, ۲۰:۵۴:۳۹
آخرین ارسال: babyy
  نحوه گرفتن مقدار از xml در sql shinsinbin 2 2,793 ۰۷-مهر-۱۳۹۴, ۲۳:۳۰:۳۸
آخرین ارسال: shinsinbin
  مشکل با connect به SQL Server 2014 Management Studio javaweb 1 2,794 ۰۴-شهریور-۱۳۹۴, ۰۹:۳۶:۴۵
آخرین ارسال: Di Di
  مجموعه فیلم های آموزشی پایگاه داده SQL SERVER bghad1 0 2,357 ۱۴-مرداد-۱۳۹۴, ۱۸:۲۶:۰۳
آخرین ارسال: bghad1

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS