PDA

View Full Version : locking در replication



emadfa
چهارشنبه 09 اردیبهشت 1394, 11:03 صبح
با عرض سلام خدمت دوستان عزیز.

من در حال طراحی یک سیستم local و یک نرم افزار اتوماسیون تحت ویندوز تحت دیتابیس Sql Server هستم. اکثر جداول باید در بازه های زمانی قابل قبول مثلا 2 تا 4 دقیقه با استفاده از replication تغییرات خود را در سرور همگام سازند. البته یک جدول از سرور به کلاینت همگام می شود که برای همگام سازی آن از روشی دیگر استفاده می شود.

بزرگترین نکته و مشکلی که وجود دارد این است که:
1) جداول در پایگاه داده publisher هر چند دقیقه باید با سرور همگام شوند و از طرفی این جداول توسط اپراتور به روز رسانی، اضافه و مشاهده می شود. بنابراین در سمت publication نباید هیچ کدام از جداول در هنگام عمل replication که ممکن است چند ثانیه طول بکشد lock شود.
2) پایگاه داده Subscriber نیز به شکل مرتب توسط کلاینت های تلفن همراه مشاهده می شوند. (به روز رسانی نمی شوند.) بنابراین این جداول نیز نباید به هیچ عنوان lock شوند.

به طور کلی در هنگام عمل replication که هر چند دقیقه صورت می گیرد هیچ کدام از جداول دو پایگاه داده publisher و subscriber نباید lock شوند. در غیر این صورت تاثرات جانبی هم در کلاینت های تلفن همراه قابل مشاهده است. و هم در نرم افزار کلاینت که به طور مرتب از این اطلاعات استفاده و آن ها را به روز می کند، اختلال به وجود می آید.

آیا راه حلی وجود دارد؟


ویرایش: در صورتی که replication در دیتابیس publication و subscription جداول را قفل می کند، آیا استفاده از روش CDC یا Change Data Capture و انتقال تغیرات به سرور برای اعمال تغییرات به همان ترتیب انجام شده در کلاینت (در replication یک طرفه) بهینه تر نیست؟ در این شرایط حداقل جداول پایگاه داده مبدا تحت هیچ شرایطی در هنگام همگام سازی قفل نمی شود.