معاملات اسید در طراحی سیستم

Summarize this content to 400 words in Persian Lang
معاملات اسید در طراحی سیستم
ACID مخفف نشان دهنده است اتمی، سازگاری، انزوا، و دوام- ویژگی های اصلی که پردازش تراکنش های قابل اعتماد در پایگاه های داده را تضمین می کند. این ویژگی ها در حفظ یکپارچگی داده ها، به ویژه در محیط های چند کاربره یا توزیع شده، حیاتی هستند.
1. اتمی
تعریف: تراکنش یک واحد غیرقابل تقسیم کار است که یا به طور کامل تکمیل می شود یا به طور کامل به عقب برگشته است.
هدف: تضمین می کند که تراکنش های جزئی پایگاه داده را در حالت ناسازگار قرار نمی دهند.
مثال:
انتقال پول بین دو حساب شامل دو عملیات است:
بدهکار حساب A.
حساب اعتباری B.
اگر یک عملیات با شکست مواجه شود، کل تراکنش برگشت داده می شود.
2. سازگاری
تعریف: یک تراکنش باید پایگاه داده را از یک حالت معتبر به حالت دیگر بیاورد و قوانین، محدودیت ها و یکپارچگی تعریف شده را حفظ کند.
هدف: اطمینان می دهد که پایگاه داده به تمام محدودیت ها و روابط قبل و بعد از تراکنش پایبند است.
مثال:
اگر قانون بانک این باشد که موجودی حساب نمی تواند منفی شود، تراکنشی که این قانون را نقض می کند لغو می شود.
3. انزوا
تعریف: تراکنش ها به طور مستقل و بدون تداخل با یکدیگر عمل می کنند، حتی زمانی که به طور همزمان انجام شوند.
هدف: از تعامل ناخواسته بین معاملات همزمان جلوگیری می کند.
مثال:
دو تراکنش که موجودی حساب یکسانی را به روز می کند:
تراکنش 1 100 دلار اضافه می کند.
تراکنش 2 50 دلار کسر می کند.
جداسازی تضمین می کند که تغییرات یک تراکنش تا زمان تکمیل برای دیگری قابل مشاهده نیست.
سطوح جداسازی:
خواندن غیرمتعهد: حداقل محدود کننده; اجازه خواندن کثیف را می دهد.
Read Committed: از خواندن کثیف جلوگیری می کند اما امکان خواندن غیرقابل تکرار را فراهم می کند.
Repeatable Read: از خواندن یکسان برای داده های یکسان در یک تراکنش اطمینان می دهد.
Serializable: محدودترین. ایزوله کامل را تضمین می کند.
4. ماندگاری
تعریف: پس از انجام یک تراکنش، تغییرات آن به طور دائم ثبت می شود، حتی در صورت خرابی سیستم.
هدف: از داده ها در برابر از دست رفتن به دلیل خرابی یا قطع برق محافظت می کند.
مثال:
پس از تکمیل تراکنش برای بهروزرسانی رکورد پایگاه داده، سیستم تضمین میکند که تغییر حتی پس از راهاندازی مجدد نیز ادامه خواهد داشت.
اسید در سیستم های توزیع شده
در سیستم های توزیع شده، اطمینان از انطباق ACID می تواند چالش برانگیز باشد زیرا:
تأخیر شبکه.
خرابی گره ها.
پارتیشن بندی داده ها.
تکنیک های مورد استفاده:
تعهد دو فاز (2PC): ارتکاب تراکنش در چندین گره را مختصات می کند.
الگوریتم های اجماع توزیع شده: به عنوان مثال، Raft یا Paxos، برای اطمینان از توافق در مورد ایالات معامله.
مزایای تراکنش های ACID
یکپارچگی داده ها را در محیط های چند کاربره تضمین می کند.
قابلیت اطمینان را برای برنامه های کاربردی مهم مانند بانکداری و تجارت الکترونیک تضمین می کند.
رفتار قابل پیش بینی را تحت دسترسی همزمان ارائه می دهد.
محدودیت های ACID
سربار عملکرد: اطمینان از خواص ACID می تواند پردازش تراکنش را کند کند.
مسائل مقیاس پذیری: انطباق دقیق ACID می تواند در پایگاه های داده توزیع شده چالش برانگیز باشد.
پیچیدگی: پیاده سازی ACID در سیستم های توزیع شده نیاز به پروتکل های پیچیده ای دارد.
جایگزین های ACID: BASE
در سیستم های بسیار توزیع شده یا مقیاس پذیر (مانند پایگاه های داده NoSQL)، BASE اغلب استفاده می شود:
ببه صورت غیر عادی الفدر دسترس
اساغلب ایالت
Eسازگاری تصادفی
BASE سازگاری دقیق را با در دسترس بودن و مقیاس پذیری بالا معامله می کند، که در سیستم هایی مانند رسانه های اجتماعی یا پلت فرم های جریان ضروری است.
کاربردهای اسید
سیستم های مالی: بانکداری، معاملات سهام.
پلتفرم های تجارت الکترونیک: پردازش سفارش.
سیستم های بهداشت و درمان: سوابق بیمار.
نمونه ای از معاملات ACID
سناریو: فرآیند پرداخت خرید آنلاین
تصور کنید در حال خرید یک کالا از یک وب سایت تجارت الکترونیک هستید. این فرآیند شامل چندین عملیات مانند کسر پول از حساب شما و به روز رسانی موجودی است.
توضیح گام به گام
1. اتمی بودن
اقدام:
500 دلار از کیف پول یا کارت اعتباری خود کم کنید.
تعداد موجودی کالای خریداری شده را کاهش دهید.
مورد نیاز:
اگر هر یک از عملیات شکست بخورد (به عنوان مثال، پرداخت موفقیت آمیز است، اما به روز رسانی موجودی ناموفق است)، کل تراکنش برگشت داده می شود.
نتیجه: کیف پول شما شارژ نمی شود و موجودی آن بدون تغییر باقی می ماند.
2. سازگاری
اقدام:
این سیستم قوانینی را اجرا میکند، مانند اطمینان از اینکه کالایی که در انبار موجود نیست، قابل خرید نیست.
معامله قبل از ادامه بررسی می کند که آیا تعداد موجودی ها بیشتر از 0 است.
مورد نیاز:
اگر سهام ناکافی باشد، معامله با شکست مواجه می شود و پایگاه داده با قوانین تجاری سازگار است.
نتیجه: هیچ پولی کسر نمی شود و موجودی ثابت باقی می ماند.
3. انزوا
اقدام:
ممکن است چندین کاربر سعی کنند به طور همزمان یک مورد را خریداری کنند.
اگر کاربر A در حال خرید آخرین واحد باشد، تراکنش آنها ردیف موجودی را تا زمان تکمیل قفل می کند.
مورد نیاز:
کاربر B باید منتظر بماند تا تراکنش کاربر A قبل از ادامه تعهد یا برگشت داده شود.
این امر مانع از “خرید” آخرین مورد به طور همزمان هر دو کاربر می شود.
نتیجه: کاربر A با موفقیت کالا را خریداری می کند و کاربر B موجودی به روز شده را می بیند.
بیشتر در انزوا با مثال – پیوند
4. دوام
اقدام:
هنگامی که تراکنش انجام می شود (پرداخت کسر می شود، موجودی به روز می شود)، سیستم تضمین می کند که این تغییرات در حافظه دائمی ذخیره می شوند.
مورد نیاز:
حتی اگر سرور بلافاصله پس از انجام از کار بیفتد، اثرات تراکنش باقی می ماند.
نتیجه: تغییرات پرداختی و موجودی شما از بین نمی رود.
پیاده سازی در سطح پایگاه داده
BEGIN TRANSACTION;
— Deduct $500 from user’s account
UPDATE Wallets
SET Balance = Balance – 500
WHERE UserId = 123;
— Decrease inventory count for the purchased item
UPDATE Inventory
SET Stock = Stock – 1
WHERE ItemId = 456;
— Check constraints to ensure no violations
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION;
PRINT ‘Transaction Failed’;
END
ELSE
BEGIN
COMMIT TRANSACTION;
PRINT ‘Transaction Successful’;
END;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مدیریت شکست
مورد 1: اگر به روز رسانی کیف پول موفقیت آمیز بود اما به روز رسانی موجودی ناموفق بود → The بازگشت به عقب تضمین می کند که موجودی کیف پول به حالت اولیه خود باز می گردد.
مورد 2: در صورت موفقیت هر دو عملیات → The متعهد شوید دوام را تضمین می کند.
پیاده سازی تراکنش ACID در پایگاه داده – لینک
معاملات اسید در طراحی سیستم
ACID مخفف نشان دهنده است اتمی، سازگاری، انزوا، و دوام– ویژگی های اصلی که پردازش تراکنش های قابل اعتماد در پایگاه های داده را تضمین می کند. این ویژگی ها در حفظ یکپارچگی داده ها، به ویژه در محیط های چند کاربره یا توزیع شده، حیاتی هستند.
1. اتمی
- تعریف: تراکنش یک واحد غیرقابل تقسیم کار است که یا به طور کامل تکمیل می شود یا به طور کامل به عقب برگشته است.
- هدف: تضمین می کند که تراکنش های جزئی پایگاه داده را در حالت ناسازگار قرار نمی دهند.
-
مثال:
- انتقال پول بین دو حساب شامل دو عملیات است:
- بدهکار حساب A.
- حساب اعتباری B.
- اگر یک عملیات با شکست مواجه شود، کل تراکنش برگشت داده می شود.
- انتقال پول بین دو حساب شامل دو عملیات است:
2. سازگاری
- تعریف: یک تراکنش باید پایگاه داده را از یک حالت معتبر به حالت دیگر بیاورد و قوانین، محدودیت ها و یکپارچگی تعریف شده را حفظ کند.
- هدف: اطمینان می دهد که پایگاه داده به تمام محدودیت ها و روابط قبل و بعد از تراکنش پایبند است.
-
مثال:
- اگر قانون بانک این باشد که موجودی حساب نمی تواند منفی شود، تراکنشی که این قانون را نقض می کند لغو می شود.
3. انزوا
- تعریف: تراکنش ها به طور مستقل و بدون تداخل با یکدیگر عمل می کنند، حتی زمانی که به طور همزمان انجام شوند.
- هدف: از تعامل ناخواسته بین معاملات همزمان جلوگیری می کند.
-
مثال:
- دو تراکنش که موجودی حساب یکسانی را به روز می کند:
- تراکنش 1 100 دلار اضافه می کند.
- تراکنش 2 50 دلار کسر می کند.
- جداسازی تضمین می کند که تغییرات یک تراکنش تا زمان تکمیل برای دیگری قابل مشاهده نیست.
- دو تراکنش که موجودی حساب یکسانی را به روز می کند:
سطوح جداسازی:
- خواندن غیرمتعهد: حداقل محدود کننده; اجازه خواندن کثیف را می دهد.
- Read Committed: از خواندن کثیف جلوگیری می کند اما امکان خواندن غیرقابل تکرار را فراهم می کند.
- Repeatable Read: از خواندن یکسان برای داده های یکسان در یک تراکنش اطمینان می دهد.
- Serializable: محدودترین. ایزوله کامل را تضمین می کند.
4. ماندگاری
- تعریف: پس از انجام یک تراکنش، تغییرات آن به طور دائم ثبت می شود، حتی در صورت خرابی سیستم.
- هدف: از داده ها در برابر از دست رفتن به دلیل خرابی یا قطع برق محافظت می کند.
-
مثال:
- پس از تکمیل تراکنش برای بهروزرسانی رکورد پایگاه داده، سیستم تضمین میکند که تغییر حتی پس از راهاندازی مجدد نیز ادامه خواهد داشت.
اسید در سیستم های توزیع شده
در سیستم های توزیع شده، اطمینان از انطباق ACID می تواند چالش برانگیز باشد زیرا:
- تأخیر شبکه.
- خرابی گره ها.
- پارتیشن بندی داده ها.
تکنیک های مورد استفاده:
- تعهد دو فاز (2PC): ارتکاب تراکنش در چندین گره را مختصات می کند.
- الگوریتم های اجماع توزیع شده: به عنوان مثال، Raft یا Paxos، برای اطمینان از توافق در مورد ایالات معامله.
مزایای تراکنش های ACID
- یکپارچگی داده ها را در محیط های چند کاربره تضمین می کند.
- قابلیت اطمینان را برای برنامه های کاربردی مهم مانند بانکداری و تجارت الکترونیک تضمین می کند.
- رفتار قابل پیش بینی را تحت دسترسی همزمان ارائه می دهد.
محدودیت های ACID
- سربار عملکرد: اطمینان از خواص ACID می تواند پردازش تراکنش را کند کند.
- مسائل مقیاس پذیری: انطباق دقیق ACID می تواند در پایگاه های داده توزیع شده چالش برانگیز باشد.
- پیچیدگی: پیاده سازی ACID در سیستم های توزیع شده نیاز به پروتکل های پیچیده ای دارد.
جایگزین های ACID: BASE
در سیستم های بسیار توزیع شده یا مقیاس پذیر (مانند پایگاه های داده NoSQL)، BASE اغلب استفاده می شود:
- ببه صورت غیر عادی الفدر دسترس
- اساغلب ایالت
- Eسازگاری تصادفی
BASE سازگاری دقیق را با در دسترس بودن و مقیاس پذیری بالا معامله می کند، که در سیستم هایی مانند رسانه های اجتماعی یا پلت فرم های جریان ضروری است.
کاربردهای اسید
- سیستم های مالی: بانکداری، معاملات سهام.
- پلتفرم های تجارت الکترونیک: پردازش سفارش.
- سیستم های بهداشت و درمان: سوابق بیمار.
نمونه ای از معاملات ACID
سناریو: فرآیند پرداخت خرید آنلاین
تصور کنید در حال خرید یک کالا از یک وب سایت تجارت الکترونیک هستید. این فرآیند شامل چندین عملیات مانند کسر پول از حساب شما و به روز رسانی موجودی است.
توضیح گام به گام
1. اتمی بودن
-
اقدام:
- 500 دلار از کیف پول یا کارت اعتباری خود کم کنید.
- تعداد موجودی کالای خریداری شده را کاهش دهید.
-
مورد نیاز:
- اگر هر یک از عملیات شکست بخورد (به عنوان مثال، پرداخت موفقیت آمیز است، اما به روز رسانی موجودی ناموفق است)، کل تراکنش برگشت داده می شود.
- نتیجه: کیف پول شما شارژ نمی شود و موجودی آن بدون تغییر باقی می ماند.
2. سازگاری
-
اقدام:
- این سیستم قوانینی را اجرا میکند، مانند اطمینان از اینکه کالایی که در انبار موجود نیست، قابل خرید نیست.
- معامله قبل از ادامه بررسی می کند که آیا تعداد موجودی ها بیشتر از 0 است.
-
مورد نیاز:
- اگر سهام ناکافی باشد، معامله با شکست مواجه می شود و پایگاه داده با قوانین تجاری سازگار است.
- نتیجه: هیچ پولی کسر نمی شود و موجودی ثابت باقی می ماند.
3. انزوا
-
اقدام:
- ممکن است چندین کاربر سعی کنند به طور همزمان یک مورد را خریداری کنند.
- اگر کاربر A در حال خرید آخرین واحد باشد، تراکنش آنها ردیف موجودی را تا زمان تکمیل قفل می کند.
-
مورد نیاز:
- کاربر B باید منتظر بماند تا تراکنش کاربر A قبل از ادامه تعهد یا برگشت داده شود.
- این امر مانع از “خرید” آخرین مورد به طور همزمان هر دو کاربر می شود.
- نتیجه: کاربر A با موفقیت کالا را خریداری می کند و کاربر B موجودی به روز شده را می بیند.
بیشتر در انزوا با مثال – پیوند
4. دوام
-
اقدام:
- هنگامی که تراکنش انجام می شود (پرداخت کسر می شود، موجودی به روز می شود)، سیستم تضمین می کند که این تغییرات در حافظه دائمی ذخیره می شوند.
-
مورد نیاز:
- حتی اگر سرور بلافاصله پس از انجام از کار بیفتد، اثرات تراکنش باقی می ماند.
- نتیجه: تغییرات پرداختی و موجودی شما از بین نمی رود.
پیاده سازی در سطح پایگاه داده
BEGIN TRANSACTION;
-- Deduct $500 from user's account
UPDATE Wallets
SET Balance = Balance - 500
WHERE UserId = 123;
-- Decrease inventory count for the purchased item
UPDATE Inventory
SET Stock = Stock - 1
WHERE ItemId = 456;
-- Check constraints to ensure no violations
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION;
PRINT 'Transaction Failed';
END
ELSE
BEGIN
COMMIT TRANSACTION;
PRINT 'Transaction Successful';
END;
مدیریت شکست
- مورد 1: اگر به روز رسانی کیف پول موفقیت آمیز بود اما به روز رسانی موجودی ناموفق بود → The بازگشت به عقب تضمین می کند که موجودی کیف پول به حالت اولیه خود باز می گردد.
- مورد 2: در صورت موفقیت هر دو عملیات → The متعهد شوید دوام را تضمین می کند.
پیاده سازی تراکنش ACID در پایگاه داده – لینک