مسئله چیست؟#

فرض کنید از کارت خود ۱۰۰ هزار تومان به دوستتان منتقل می‌کنید. دو کار باید انجام شود: کم کردن از حساب شما و اضافه کردن به حساب او. اگر وسط کار برق برود و فقط کار اول انجام شود، پول گم می‌شود. ACID قاعده‌هایی است که چنین اتفاقی را غیرممکن می‌کند.

چهار ستون#

  • Atomicity (اتمی بودن): تراکنش یا کاملاً انجام می‌شود یا هیچ‌چیزش اثر نمی‌گذارد.
  • Consistency (سازگاری): بعد از تراکنش، داده همچنان قاعده‌ها را رعایت می‌کند؛ مثلاً موجودی منفی نمی‌شود.
  • Isolation (انزوا): تراکنش‌های هم‌زمان در کار هم دخالت نمی‌کنند، انگار پشت‌سرهم اجرا می‌شوند.
  • Durability (پایداری): بعد از تأیید، حتی اگر سرور خاموش شود نتیجه از بین نمی‌رود.

کجا مهم است؟#

  • بانکداری و پرداخت
  • ثبت سفارش و موجودی انبار
  • رزرو بلیت و هتل

ارتباط با انواع پایگاه#

بیشتر پایگاه‌های رابطه‌ای مثل PostgreSQL و MySQL (با موتور InnoDB) ACID را پشتیبانی می‌کنند. بعضی پایگاه‌های NoSQL برای سرعت و مقیاس بیشتر، بخشی از این تضمین‌ها را سبک‌تر می‌گیرند. پس اگر دقت مالی مهم است، پشتیبانی از ACID را بررسی کنید.