توسعه دهندگان SQLite با پشتیبانی از نوشتن موازی، HC-tree backend را توسعه می دهند

توسعه دهندگان پروژه SQLite شروع به آزمایش یک باطن آزمایشی HCtree کرده اند که از قفل شدن در سطح ردیف پشتیبانی می کند و سطح بالایی از موازی سازی را هنگام پردازش پرس و جوها فراهم می کند. هدف پشتیبان جدید بهبود کارایی استفاده از SQLite در سیستم های کلاینت-سرور است که باید تعداد زیادی درخواست نوشتن همزمان در پایگاه داده را پردازش کنند.

ساختارهای b-tree که به طور بومی در SQLite برای ذخیره داده‌ها استفاده می‌شوند، برای این نوع بار طراحی نشده‌اند، که SQLite را محدود می‌کند تا فقط در یک رشته بنویسد. به عنوان یک آزمایش، توسعه دهندگان شروع به توسعه یک راه حل جایگزین کردند که از ساختارهای HC-tree برای ذخیره سازی استفاده می کند، که برای موازی کردن عملیات نوشتن مناسب تر است.

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

مشتریان می توانند از سه عملیات تراکنش باز استفاده کنند:

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

HCtree از تکثیر master-slave پشتیبانی می کند، که به شما امکان می دهد تراکنش ها را به پایگاه داده دیگری منتقل کنید و پایگاه داده های ثانویه را با پایگاه داده اصلی هماهنگ نگه دارید. HCtree همچنین محدودیت اندازه پایگاه داده را حذف می کند - به جای شناسه های صفحه داده 32 بیتی، HCtree از شناسه های 48 بیتی استفاده می کند که حداکثر اندازه پایگاه داده را از 16 تب بایت به 1 اگزبی بایت (میلیون تب بایت) افزایش می دهد. انتظار می رود که عملکرد SQLite با باطن HCtree کمتر از باطن کلاسیک تک رشته ای نباشد. کلاینت های SQLite با پشتیبانی از HCtree می توانند به پایگاه های داده مبتنی بر HC-tree و پایگاه داده های قدیمی SQLite دسترسی داشته باشند.

منبع: opennet.ru

اضافه کردن نظر