+1 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

اینکه می گویند یک پایگاه داده ACID Compliance است چه معنی می دهد؟

2 پاسخ

+5 امتیاز
قبل توسط (1.1هزار امتیاز)

ACID یا Atomicity, Consistency, Isolation و Durability یک روش اساندارد برای قضاوت درباره data integrity (جامعیت داده) بین DBMS ها است، این مجموعه از خصوصیات تضمین می دهند که تراکنش های پایگاه داده با اطمینان انجام می شوند.

  • Atomicity بمعنی این است که هر تراکنش یا باید کامل اجرا شود یا اصلا اجرا نشود.
  • Consistency تضمین می دهد که هر تراکنش، پایگاه داده را از یک وضعیت سالم و معتبر به یک وضعیت سالم و معتبر دیگر می برد.
  • Isolation تضمین می دهد که اجرای همزمان ترکنش ها مشکلی در سلامت پایگاه داده ایجاد نکند.
  • Durability بمعنی ذخیره کردن تغییرات داده ای اعمال شده توسط هر تراکنش بمنظور بازگردادن پایگاه داده به وضعیت قبل از تراکنش در زمان های crashe یا رخ دادن خطا.
قبل توسط (7.2هزار امتیاز)
ویرایش شده قبل توسط
+1
در مبحث Atomicity آیا دستورات DDL نیز باید  این خاصیت را داشته باشند؟
یعنی آیا دستورات DDL نیز باید قابلیت Roll Back شدن داشته باشند؟
تا آنجا که من می دانم برخی پایگاه های داده قابلیت Roll Back کردن دستورات DDL را دارند و برخی ندارند.
قبل توسط (1.1هزار امتیاز)
+1
منم فکر می کنم برای سازگاری با ACID قابلیت rool back برای دستورات DDL اجباری نیست.
+2 امتیاز
قبل توسط (80 امتیاز)

در ادامه پاسخ دوستمون آقا سعید عزیز چند نکته رو هم من اضافه کنم...

نکته اول : در حالت پیش فرض  setAutoCommit(true) است و برای در اختیار گرفتن ACID Property باید به false تغییر دهیم.

نکته دوم :   Isolation Level   به چهار حالت تقسیم میشه :

  • TRANSACTION_READ_UNCOMMITTED : که Performance  زیاد ولی بسیار Unsafe  هستش(اکثر DB ها اجازه نمیدن).یعنی با هر  select  بتوانیم، دیتا های non Commited را هم ببیند.

 

  • TRANSACTION_READ_COMMITTED : از آنجایی که برروی Row ای که تراکنش در حال رخ دادن استlock  میگذاره و بقیه تراکنش ها در صف هستند تا تکلیفش state مشخص بشه مثل حالت Synchronized  هستش.

 

  • TRANSACTION_REPEATABLE_READ : نه تنها رکوردی که در حال تغییرات است  lock  میکند بلکه هر رکوردی که select  میکنیم نیز باید lock  شود.یعنی lock  رو روی تمام row هایی که در این تراکنش  هستند قرار می دهد.ما اینجا row های بیشتری را کنترل می کنیم حتی اگر نخواهیم همش رو تغییر بدیم.

 

  • TRANSACTION_SERIALIZABLE  : سخت گیرانه ترین حالت است و بسیار امن ولی با Performance پایین و بیشترین overhead را به سیستم وارد می کند.بطوریکه به ازای اجرای هر تراکنش و تا پایان آن ،کل Table  را  lock می کند.بعد از پایان stat آزاد میشود و نوبتی تراکنش ها اجرا می شود.

 

http://webtrends.ir/Isolation_Level.txt

 

سوالات مشابه

0 امتیاز
1 پاسخ 409 بازدید
+1 امتیاز
1 پاسخ 541 بازدید
...