مسئله چیست؟#
فرض کنید از کارت خود ۱۰۰ هزار تومان به دوستتان منتقل میکنید. دو کار باید انجام شود: کم کردن از حساب شما و اضافه کردن به حساب او. اگر وسط کار برق برود و فقط کار اول انجام شود، پول گم میشود. ACID قاعدههایی است که چنین اتفاقی را غیرممکن میکند.
چهار ستون#
- Atomicity (اتمی بودن): تراکنش یا کاملاً انجام میشود یا هیچچیزش اثر نمیگذارد.
- Consistency (سازگاری): بعد از تراکنش، داده همچنان قاعدهها را رعایت میکند؛ مثلاً موجودی منفی نمیشود.
- Isolation (انزوا): تراکنشهای همزمان در کار هم دخالت نمیکنند، انگار پشتسرهم اجرا میشوند.
- Durability (پایداری): بعد از تأیید، حتی اگر سرور خاموش شود نتیجه از بین نمیرود.
کجا مهم است؟#
- بانکداری و پرداخت
- ثبت سفارش و موجودی انبار
- رزرو بلیت و هتل
ارتباط با انواع پایگاه#
بیشتر پایگاههای رابطهای مثل PostgreSQL و MySQL (با موتور InnoDB) ACID را پشتیبانی میکنند. بعضی پایگاههای NoSQL برای سرعت و مقیاس بیشتر، بخشی از این تضمینها را سبکتر میگیرند. پس اگر دقت مالی مهم است، پشتیبانی از ACID را بررسی کنید.