ACID özelliklerinden Isolation ve Durability

İlk flood’da RDBMS’lerin ACID özelliklerinden Atomicity ve Consistency’ye değinmiştik. Bu bölümde de Isolation ve Durability’ye göz atalım.

Isolation, DB üzerinde eş zamanlı gerçekleşen işlemlerin birbirleri ile çakışmadan birbiri ardına -belirlenen öncelik sırasına göre- işletilmesini sağlar. İlerleyen bölümlerde Transaction Isolation seviyelerini incelerken pratik kullanım örneklerini daha fazla konuşacağız ancak burada kısa bir örnek verelim.

İki farklı işlem üzerinden DB’deki aynı satırda, içeriği 3 olan kolon 1'er artırılmak istensin. DB, Isolation özelliği sayesinde aynı anda gelen bu işlemleri sıraya sokarak önce 3'ü 1 artırarak kolonu 4'e, sonra da 4'ü yine 1 artırarak kolonun değerini 5'e günceller. Böylece DB işlemleri birbirinden izole ederek hepimizin bildiği “Race Condition”ı engellemiş olur. Burada Isolation özelliği olmasaydı DB, 3 değeri ile başlayıp iki artırımı paralel gerçekleştirip kolonu hatalı bir şekilde 4'e güncelleyebilirdi.

ACID’in bütün özellikleri birbirinden değerli olmakla birlikte bizi en çok cezbeden özelliği şüphesiz Durability’dir. Durability özelliği sayesinde DB bir Transaction tamamlandıktan sonra her ne olursa olsun bu Transaction’ın kaybolmayacağını ve bozulmayacağını garanti eder. RDBMS’ler açısından bunu sağlamak oldukça zor olmakla birlikte bunu genellikle başarılı bir şekilde yerine getirirler. İşlemin zorluğu Transaction’ın gerçekleştiği Memory (RAM) ile kayıt altına alındığı Disk arasındaki senkronizasyon ve olası problemlerden (disk bozulması, elektrik kesilmesi) ileri gelmektedir ve uzunca bir blog konusu olacak kadar karmaşıktır.

Böylece RDBMS’leri RDBMS yapan temel özellikleri somutlaştırmış olduk. Bundan sonraki flood’larda pratik kullanıcı senaryolarında RDBMS’lerin davranışlarını inceleyerek çalışma prensiplerini irdeleyeceğiz. Daha sonra NoSQL DB’lerle durum durum karşılaştırma yapmaya çalışacağız.