طرح معامله

ساخت وبلاگ

طرح مدیریت معامله مستقر در MonetDB گاهی اوقات سردرگمی را با توسعه دهندگان برنامه ایجاد می کند. به طور خاص چگونه معاملات متعهد ، ادامه و جدا شده برای تضمین خصوصیات اسید SQL. بیشتر سردرگمی ناشی از تفاوت بین پردازش آنلاین-تحلیلی (OLAP) و پردازش آنلاین (OLTP) است.

MONETDB در درجه اول یک بانک اطلاعاتی تحلیلی (OLAP) است ، که در آن بیشتر عملیات از نمایش داده های گروهی در جایی انتخاب می شوند. با توجه به این نکته ، طرح مدیریت معاملات آن برای خواندن بخش های زیادی از داده ها تنظیم شده است ، نه اینکه نوشتن تکه های کوچک از داده ها را به طور همزمان با سرعت بالا بنویسید. با این وجود ، MonetDB SQL از معانی معامله استاندارد SQL پیروی می کند.

طرح مدیریت معامله

مدیریت معاملات MONETDB مبتنی بر کنترل همزمانی خوش بینانه (OCC) است. OCC به ویژه برای برنامه های سنگین خواندن مفید است ، با هدف طراحی که مدیریت معامله فقط در صورت لزوم باید پرداخت شود. OCC در حالی که به روزرسانی ها در یک ضمیمه جمع آوری می شود ، هر معامله را با یک نمای مداوم در پایگاه داده فراهم می کند. ضمیمه سپس در تعهد معامله پردازش می شود. اگر در زمان متعهد جداول تحت تأثیر معامله تغییر نکرده باشد ، نتایج ادغام می شوند. در غیر این صورت معامله سقط شده و به روزرسانی های در انتظار دور ریخته می شود. در نتیجه ، OCC می تواند بر معاملات طولانی مدت تأثیر منفی بگذارد ، زیرا این موارد می تواند تحت تأثیر به روزرسانی های همزمان در جداول اساسی آنها باشد. همین موارد برای برنامه هایی که سعی می کنند به روزرسانی های همزمان را در همان جداول از موضوعات مختلف برنامه انجام دهند یا به طور همزمان ایجاد/اصلاح طرح پایگاه داده انجام دهند. برای جلوگیری از چنین سقط های معامله غیر منتظره ، معاملات باید توسط توسعه دهنده برنامه به صورت داخلی سریال شوند.

گزارش معامله

لایه MonetDB SQL به طور پیش فرض در حالت کاملی خودکار اجرا می شود. این بدان معناست که پایگاه داده هر چه بیشتر ممکن است معاملات را انجام دهد ، معمولاً پس از هرگونه بیانیه SQL یا تغییر کاتالوگ. با تنظیم متغیر جلسه AUTO_COMMIT به FALSE ، می توان با کمبود خودکار غیرفعال شد. با غیرفعال کردن تعهد خودکار ، باید به صورت دستی شروع معامله را با معامله شروع مشخص کرد و آن را با تعهد خاتمه داد. جایگزین ، فراخوانی بازپرداخت از ابتدای معامله ، تمام عملیات را برمی گرداند. این حالت برای بارگیری مجموعه داده های بزرگ با بیانیه های ساده درج مفید است.

هنگامی که یک معامله انجام می شود ، تغییرات آن به گزارش معامله MonetDB یا ورود به سیستم نوشتن (WAL) ارسال می شود. این تعهد تا زمانی که معامله به طور کامل در وال ادامه یابد ، موفق نخواهد شد. معاملات متعهد نیز بلافاصله در فروشگاه منطقی اعمال می شود ، بنابراین برای کلیه معاملات زیر و کلیه مشتریانی که از پایگاه داده پرس و جو می کنند قابل مشاهده است. در فواصل معینی ، اگر پایگاه داده بیکار باشد ، مدیر فروشگاه به روزرسانی های موجود را از WAL در ذخیره سازی اولیه - جداول انجمن باینری (BATS) ادغام می کند. به طور پیش فرض ، معاملات مداوم از وال پاک می شوند. در حین راه اندازی پایگاه داده ، تمام معامله ای که هنوز در وال باقی مانده است خوانده می شوند و هر چیزی که هنوز اعمال نشده است در ذخیره مداوم خفاش نوشته شده است. از این رو ، در صورت عدم موفقیت ، تمام معاملات که به عنوان متعهد گزارش شده اند ، در واقع حضور خواهند داشت ، پس از در دسترس بودن بانک اطلاعاتی در اختیار کاربر.

وال به دیسک نوشته شده است ، جایی که هر معامله در یک پرونده جداگانه ذخیره می شود. به طور پیش فرض فقط یک پرونده معامله در دایرکتوری WAL وجود دارد - کنونی ، که هنوز مرتکب نشده است. دایرکتوری WAL به طور پیش فرض در زیر /sql_logs یافت می شود. در داخل آن یک Directory SQL/ برای معاملات ماژول SQL قرار دارد. ماژول های مختلف/رابط های سطح بالا می توانند دایرکتوری های مختلف WAL داشته باشند. فهرست داخلی شامل پرونده های زیر است:

ورود به سیستم - پرونده های کاتالوگ WAL

  • خط اول پرونده نسخه داخلی MonetDB Keel Wal است
  • خط بعدی خالی است
  • خط سوم آخرین شناسه معامله است که به عنوان تعداد طولانی مدت ذخیره می شود.

ورود به سیستم.- هر یک از این پرونده ها یک معامله MonetDB را ذخیره می کنند

  • بخشی از محتوای پرونده باینری است

بسیار توصیه می شود که هرگز به صورت دستی پرونده های MonetDB WAL را ویرایش نکنید.

تکثیر معامله

کار در حال انجام در مورد یک طرح تکثیر معامله برای MonetDB وجود دارد. با تکثیر معاملات ، می توان نمونه های ماکت MONETDB را پیکربندی کرد و از دسترسی بیشتر سیستم و بهبود سطح همزمانی اطمینان حاصل کرد. اطلاعات بیشتر در مورد معماری تکثیر معاملات در MONETDB را می توان در مقاله "تک کلیک به بینش داده ها: تکثیر معاملات و اتوماسیون استقرار ساده برای عصر ابر" یافت. ما قصد داریم این ویژگی را در نسخه ویژگی به دنبال ژوئیه 2015 آماده کنیم.

کپی رایت © 2008-2022 Monetdb B. V. کلیه حقوق محفوظ است

پلتفرم های تجاری...
ما را در سایت پلتفرم های تجاری دنبال می کنید

برچسب : نویسنده : مریم کاویانی بازدید : <-PostHit-> تاريخ : جمعه 9 تير 1402 ساعت: 11:54