مقدمه
هنگامی که شروع به یادگیری دیتابیس می کنید با مفاهیم متعددی آشنا می شوید، میخواهم در این مقاله یک نقطه شروع خوب به شما معرفی کنم به نام ACID
که در برگیرنده مفاهیم کلیدی و پایه برای آغاز یادگیری می باشد.
ACID چیست و چه کاربردی دارد ؟
در پایگاه داده، تراکنش (transaction)
یک عمل واحد می باشد که به محتوای پایگاه داده دسترسی دارد (منظور از تراکنش همان عملیات خواندن، نوشتن، بروزرسانی، حذف می باشد) و سپس میتواند داده ها را به صورت بالقوه تغییر دهد. تا اینجا با مفهوم transaction
در دیتابیس اشنا شدیم حالا وقت آن است که مفهوم ACID
باز کنیم، هر کلمه در این مفهوم به معنای (Atomicity
, Consistency
, Isolation
, Durability
) می باشد که وظیفه این خصوصیات اطمینان از حفظ ثبات حین تعاملات روی پایگاه داده اعمال می شود.خب حالا به سراغ این بریم که این چهار مفهوم را به صورت جدا برسی کنیم.
Atomicity (اتمی بودن)
atomicity
این اطمینان را به ما می دهد که یک تراکنش باید کامل انجام شود به این معنی که یک transaction
از ابتدا تا انتها باید به طور کامل انجام شود و اگر در این فرایند یکی از عملیات ها به درستی انجام نشد نباید تغییرات منعکس شود.
به عنوان مثال شما فرض کنید که میخواهید یک مبلغی را از حساب جاری خود (A
) به حساب پس انداز خود (B
) واریزی کنید. مبالغ به ترتیب در حساب A=10000
, B=5000
و مبلع انتقال 1000
می باشد.
Read(A)
A = A - 1000
Write(A)
Read(B)
B = B + 1000
Write(B)
به صورت کلی اگر یک فرایند در ابتدا موفق بود باید در پایان هم همانطور باشد و اگر نبود بلعکس، میبنید که ما به ترتیب تمام فرانید انتقال را نوشتیم حالا شما فرض کنید در مرحله ۳ با شکست مواجه شدیم و عملیات کسر شدن از حساب A
انجام شده است و باقی مانده به حساب B
منتقل نمی شود، در اینجام مفهوم atomicity
خود را نمایان می کند که می گوید اگر در یک فرایند ناسازگاری به وجود آمد و تا کامل شدن فرانید در بین راه شکست خورد باید تغییرات منعکس شود و تمام تغییرات به اخرین تغییرات صحیح خود برگردند.
Consistency (ثبات)
همانطور که از معنی این مفهوم پیدا است باید تمام داده ها ثبات داشته باشند یعنی در طی یک فرایند داده ها نباید از بین بروند یا به وجود بیایند. بیایم به همان مثال انتقال بانکی برگردیم و فرض کنید از دو حساب A
, B
باید مبلغی را به صندق بانک انتقال بدهیم به شکل زیر توجه کنید :
همانطور که مشاهده می کنید از حساب A
مبلغ 100
تومان و حساب B
مبلغ 200
تومان کسر شده است و جمعا باید مبلغ 300
تومان به صندق واریز شود حال زمانی مشکل رخ میدهد که در بین فرانید به هر دلیلی مثل رفتن برق سیستم قطع شود و مبالغ از حساب ها کسر شده باشد ولی به صندق انتقال پیدا نکرده باشد اینجا است که مفهوم consistency
وارد عمل می شود و ثبات از بین نرفتن داده ها را تضمین میکند، پس این مفهوم خیلی حائز اهمیت می باشد.
Isolation (ایزوله)
این مفهوم به ما این تضمین را می دهد که تمام تراکنش ها به صورت جداگانه اتفاق بیفتند. ما در پایگاه داده بیشتر اوقات تراکنش های داریم که به صورت همزمان و باهم دیگر اتفاق می افتند. این فرایند باید به گونه ای باشد که هر تراکنش در یک محیط ایزوله بدون تاثیر گذاشتن بر روی دیگری اتفاق بیفتد به عنوان مثال اگر تراکنش A
اتفاق بیفتد و در کنار آن تراکنش B
رخ بدهد نباید هیچ تداخلی باهم دیگر داشته باشند.
Durability (پایداری)
این مفهوم همانطور که از معنی آن پیدا است در فرانید یک تراکنش این تضمین را به ما میدهد داده ها در حالت پایدار و ایمن باقی بمانند به این معنا هنگامی که یک تراکنش به پایان می رسید داده های پایگاه داده دیگر بطور دايمی ثبت شده اند و هرگز به دلیل غیر منطقی یا غیر معمول مثل رفتن برق یا خرابی سیستم از بین نمی روند.
جمع بندی
همه پایگاه داده های رابطه ای از قبیل MySQL
, PostgresSQL
و غیره این اصول ACID
را دنبال می کنند و پایگاه داده های NoSQL
بر روی دسترسی بالا تمرکز دارند، به این مفهوم است که ویژگی های consistency
یا durability
قربانی خود می کنند.
قبل از شروع و یادگیری پایگاه داده و مفاهیم دیگر آن چه بهتر است که این مفاهیم را بدانید و نقط شروع یادگیری شما باشد، امیدوارم این مقاله برای شما مفید باشد.