برنامه نویسی

ACID در Postgres – انجمن DEV

Summarize this content to 400 words in Persian Lang
اسید مجموعه ای از ویژگی هایی است که تراکنش های قابل اعتماد را در یک سیستم پایگاه داده تضمین می کند. مخفف آن است اتمی، سازگاری، انزوا، و ماندگاری. PostgreSQL از این اصول پیروی می کند تا یکپارچگی و قابلیت اطمینان داده ها را در طول تراکنش ها حفظ کند. در اینجا به تفکیک هر ویژگی و نحوه پیاده سازی PostgreSQL آن می پردازیم:

1. اتمی

تعریف: اتمیسیتی تضمین می کند که یک تراکنش به عنوان یک واحد کار واحد و غیرقابل تقسیم تلقی می شود. یا تمام عملیات داخل تراکنش با موفقیت انجام می شود، یا هیچ کدام اعمال نمی شوند (در صورت عدم موفقیت بخشی).

پیاده سازی PostgreSQL:

مدیریت تراکنش: PostgreSQL از BEGIN، COMMIT، و ROLLBACK بیانیه هایی برای مدیریت تراکنش ها اگر تراکنش با خطا یا صریح مواجه شود ROLLBACK منتشر می شود، PostgreSQL تمام تغییرات ایجاد شده در طول تراکنش را برمی گرداند و از اتمی بودن اطمینان حاصل می کند.

ثبت پیش از نوشتن (WAL): تغییرات ابتدا قبل از اعمال شدن در پایگاه داده واقعی در WAL نوشته می شوند. این تضمین می‌کند که حتی اگر سیستم در طول یک تراکنش از کار بیفتد، PostgreSQL می‌تواند از WAL برای بازیابی به یک وضعیت ثابت استفاده کند.

2. سازگاری

تعریف: سازگاری تضمین می کند که یک تراکنش پایگاه داده را از یک وضعیت معتبر به حالت دیگر می آورد و یکپارچگی پایگاه داده را حفظ می کند. این بدان معنی است که هر تراکنش نباید محدودیت ها یا قوانین پایگاه داده را نقض کند.

پیاده سازی PostgreSQL:

محدودیت ها: PostgreSQL محدودیت هایی مانند کلیدهای اصلی، کلیدهای خارجی و محدودیت های منحصر به فرد را برای اطمینان از اعتبار داده ها اعمال می کند. اگر تراکنش هر گونه محدودیتی را نقض کند، بازگردانده می شود.

محرک ها: محرک های سفارشی را می توان برای اجرای قوانین تجاری و حفظ ثبات داده ها فراتر از محدودیت های اساسی تعریف کرد.

3. انزوا

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

پیاده سازی PostgreSQL:

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

سطوح جداسازی: PostgreSQL از سطوح مختلف جداسازی (Read Uncommitted، Read Committed، Repeatable Read، Serializable) پشتیبانی می کند که میزان دید و تعامل بین تراکنش ها را تعیین می کند.

4. ماندگاری

تعریف: دوام تضمین می کند که پس از انجام یک تراکنش، حتی در صورت خرابی سیستم نیز ادامه خواهد داشت. داده های متعهد نباید از بین بروند یا به عقب برگردند.

پیاده سازی PostgreSQL:

ثبت پیش از نوشتن (WAL): PostgreSQL تغییرات را در WAL قبل از اعمال آنها در پایگاه داده می نویسد. این تضمین می کند که حتی در صورت خراب شدن سیستم، WAL می تواند برای پخش مجدد تراکنش های متعهد و بازیابی به آخرین حالت سازگار استفاده شود.

ایست های بازرسی: نقاط بازرسی دوره‌ای ایجاد می‌شوند تا تغییرات را از WAL به دیسک تخلیه کنند. این مقدار WAL را که باید پس از تصادف دوباره پخش شود به حداقل می رساند و سرعت بازیابی را بهبود می بخشد.

خلاصه

به طور خلاصه، PostgreSQL ویژگی‌های ACID را از طریق سیستم مدیریت تراکنش، محدودیت‌ها، MVCC برای جداسازی و WAL برای دوام تضمین می‌کند. این پیاده سازی قوی به حفظ یکپارچگی و قابلیت اطمینان پایگاه داده در سناریوهای مختلف کمک می کند.

مراجع

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

1. اتمی

تعریف: اتمیسیتی تضمین می کند که یک تراکنش به عنوان یک واحد کار واحد و غیرقابل تقسیم تلقی می شود. یا تمام عملیات داخل تراکنش با موفقیت انجام می شود، یا هیچ کدام اعمال نمی شوند (در صورت عدم موفقیت بخشی).

پیاده سازی PostgreSQL:

  • مدیریت تراکنش: PostgreSQL از BEGIN، COMMIT، و ROLLBACK بیانیه هایی برای مدیریت تراکنش ها اگر تراکنش با خطا یا صریح مواجه شود ROLLBACK منتشر می شود، PostgreSQL تمام تغییرات ایجاد شده در طول تراکنش را برمی گرداند و از اتمی بودن اطمینان حاصل می کند.
  • ثبت پیش از نوشتن (WAL): تغییرات ابتدا قبل از اعمال شدن در پایگاه داده واقعی در WAL نوشته می شوند. این تضمین می‌کند که حتی اگر سیستم در طول یک تراکنش از کار بیفتد، PostgreSQL می‌تواند از WAL برای بازیابی به یک وضعیت ثابت استفاده کند.

2. سازگاری

تعریف: سازگاری تضمین می کند که یک تراکنش پایگاه داده را از یک وضعیت معتبر به حالت دیگر می آورد و یکپارچگی پایگاه داده را حفظ می کند. این بدان معنی است که هر تراکنش نباید محدودیت ها یا قوانین پایگاه داده را نقض کند.

پیاده سازی PostgreSQL:

  • محدودیت ها: PostgreSQL محدودیت هایی مانند کلیدهای اصلی، کلیدهای خارجی و محدودیت های منحصر به فرد را برای اطمینان از اعتبار داده ها اعمال می کند. اگر تراکنش هر گونه محدودیتی را نقض کند، بازگردانده می شود.
  • محرک ها: محرک های سفارشی را می توان برای اجرای قوانین تجاری و حفظ ثبات داده ها فراتر از محدودیت های اساسی تعریف کرد.

3. انزوا

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

پیاده سازی PostgreSQL:

  • MVCC (کنترل همزمانی چند نسخه): PostgreSQL از MVCC برای ارائه جداسازی تراکنش ها استفاده می کند. MVCC به چندین تراکنش اجازه می دهد تا داده ها را به طور همزمان بخوانند و بنویسند بدون اینکه یکدیگر را مسدود کنند، در حالی که اطمینان حاصل می کند که هر تراکنش یک عکس فوری از پایگاه داده را مشاهده می کند.
  • سطوح جداسازی: PostgreSQL از سطوح مختلف جداسازی (Read Uncommitted، Read Committed، Repeatable Read، Serializable) پشتیبانی می کند که میزان دید و تعامل بین تراکنش ها را تعیین می کند.

4. ماندگاری

تعریف: دوام تضمین می کند که پس از انجام یک تراکنش، حتی در صورت خرابی سیستم نیز ادامه خواهد داشت. داده های متعهد نباید از بین بروند یا به عقب برگردند.

پیاده سازی PostgreSQL:

  • ثبت پیش از نوشتن (WAL): PostgreSQL تغییرات را در WAL قبل از اعمال آنها در پایگاه داده می نویسد. این تضمین می کند که حتی در صورت خراب شدن سیستم، WAL می تواند برای پخش مجدد تراکنش های متعهد و بازیابی به آخرین حالت سازگار استفاده شود.
  • ایست های بازرسی: نقاط بازرسی دوره‌ای ایجاد می‌شوند تا تغییرات را از WAL به دیسک تخلیه کنند. این مقدار WAL را که باید پس از تصادف دوباره پخش شود به حداقل می رساند و سرعت بازیابی را بهبود می بخشد.

خلاصه

به طور خلاصه، PostgreSQL ویژگی‌های ACID را از طریق سیستم مدیریت تراکنش، محدودیت‌ها، MVCC برای جداسازی و WAL برای دوام تضمین می‌کند. این پیاده سازی قوی به حفظ یکپارچگی و قابلیت اطمینان پایگاه داده در سناریوهای مختلف کمک می کند.

توضیحات تصویر

مراجع

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

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

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

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