برنامه نویسی

داخلی معاملات دجله – جامعه dev

Tigris یک سرویس ذخیره سازی شیء سازگار با S3 در سطح جهانی است. Tigris از رابط ارزش کلیدی معامله ای FoundationDB برای ذخیره سازی ابرداده اساسی خود استفاده می کند. این وبلاگ به موضوعات مربوط به معاملات سریال ، مکانیک معاملات درون دجله و کنترل همزمانی می پردازد.

معاملات Serializable یک مدل قوام معامله ای است که تضمین می کند که نتیجه معاملات همزمان معادل اجرای سریال این معاملات است. به عبارت دیگر ، به نظر می رسد معاملات به طور همزمان تحت ثبات سریال قابل اجرا هستند که یک بار به ترتیب پی در پی اجرا می شوند. این یک ضمانت قوی برای صحت ، اطمینان از اجرای معاملات باعث ایجاد رفتارهای غیر عادی مانند خواندن کثیف یا به روزرسانی های از دست رفته ، می شود که می تواند در سطح انزوا ضعیف تر رخ دهد. FoundationDB ، مورد استفاده Apple ، Snowflake و دیگران ، چنین سیستمی است. این همان ضمانت قوام و انزوا را به عنوان Spanner – سریال سازی دقیق ارائه می دهد و از طریق آزمایش شبیه سازی یک داستان صحیح فوق العاده دارد.

معاملات سریال در دجله

Tigris برای ذخیره سازی ابرداده زیربنایی خود از رابط ارزش کلیدی معامله ای FoundationDB استفاده می کند. معاملات به طور خودکار توسط دجله پس از دریافت درخواست آغاز می شود ، زیرا آنها برای هر عملیاتی اصلی هستند.

معاملات

Tigris تمام عملیات را در چارچوب معامله به طور پیش فرض انجام می دهد ، و این امکان را برای همه عملیات فراهم می کند و به برنامه اجازه می دهد تا پس از نوشتن در پایگاه داده ، خواندن های کاملاً سازگار را انجام دهد. در بخش زیر ، ما نحوه کار معاملات در داخل دجله را بررسی خواهیم کرد.

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

مدیریت جلسات معامله
مدیر جلسه در Tigris مسئولیت مدیریت جلسات معامله را بر عهده دارد ، که هر بار درخواست معامله جدید ایجاد می شود. مدیر جلسه یک زمینه معامله را به هر جلسه متصل می کند و تمام جلسات ایجاد شده توسط سرور را با استفاده از ردیاب جلسه ردیابی می کند. یک شیء جلسه مسئول مدیریت چرخه عمر یک معامله است. در هر جلسه از لایه ذخیره سازی برای برقراری ارتباط با موتور ذخیره سازی زیرین استفاده می کند تا مشخص شود که آیا تعهد ، بازگشت مجدد یا سیگنال یک خرابی را نشان می دهد. برای هر درخواست معامله جدید ، مدیر جلسه زمینه معامله ای را به جلسه وصل می کند و تمام جلسات ایجاد شده توسط سرور را با استفاده از ردیاب جلسه ردیابی می کند.

کنترل همزمان
بسیاری از سیستم ها از زمان دستیابی به همه قفل ها برای تعیین ترتیب سریال در بین معاملات و تضمین اتمی و انزوا استفاده می کنند. به عنوان مثال ، Spanner از زمان واقعی برای تعیین زمان های متعهد هنگام دستیابی به همه قفل ها استفاده می کند. CockroachDB از ساعت هیبریدی-لجیک ، ترکیبی از زمان فیزیکی و منطقی استفاده می کند. Tigris کنترل همزمانی بدون قفل را با استفاده از FoundationDB ، ترکیب OCC و MVCC برای سفارش معاملات فراهم می کند. این توسط یک ترتیب سنج حاصل می شود که با اختصاص یک نسخه خوانده شده و یک نسخه تعهد به هر معامله ، ترتیب سریال را تعیین می کند. Proxies نسخه های خوانده شده MVCC را به مشتریان و تعهدات معامله ارکستر ارائه می دهد.

FDB

پایان

ما معتقدیم که توسعه دهندگان نباید مسئولیت کار در مورد استفاده از معاملات و پیچیده کردن معماری های کاربردی آنها را بر عهده بگیرند. در عوض ، سیستم های ذخیره سازی باید معاملات اسیدی را به طور پیش فرض و مکانیک سازگاری داده های قوی ارائه دهند ، برنامه ها را ساده تر کرده و آنها را برای توسعه دهندگان کنترل کنند.

نوشته های مشابه

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

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

دکمه بازگشت به بالا