ACID Özellikleri: Veritabanı İşlemlerinin Güvenliğini Anlamak

Veritabanı işlemlerinin güvenilir olması için dört temel özelliğe sahip olması gerekir. Bunları ACID kısaltmasıyla bilirsiniz: Atomicity (Atomiklik), Consistency (Tutarlılık), Isolation (İzolasyon) ve Durability (Dayanıklılık). Bir banka hesabından para transferi düşünün, para bir hesaptan çıkmalı, diğerine girmelidir. Araya bir sorun girerse, her ikisi de gerçekleşmemeli. ACID bunu garantiler.

Bir işlem ya tamamen başarılı olur, ya tamamen başarısız. Yarım kalan işlem yoktur.

1BEGIN TRANSACTION;
2UPDATE hesaplar SET bakiye = bakiye - 1000 WHERE hesap_id = 1;
3UPDATE hesaplar SET bakiye = bakiye + 1000 WHERE hesap_id = 2;
4COMMIT;

Eğer ikinci sorgu başarısız olursa, birinci de geri alınır (rollback). Her ikisi de yapılır ya da hiçbiri yapılmaz.

Veritabanı her zaman geçerli bir durumda kalır. Kurallar ihlal edilmez.

1CREATE TABLE hesaplar (
2hesap_id INT PRIMARY KEY,
3bakiye DECIMAL(10, 2) CHECK (bakiye >= 0)
4);

Bakiye hiçbir zaman negatif olamaz. Sistem bunu zorlar.

Eş zamanlı işlemler birbirini etkilemez. Her biri kendi dünyasında çalışır.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
2BEGIN TRANSACTION;
3SELECT bakiye FROM hesaplar WHERE hesap_id = 1;
4-- Diğer işlemler bu veriyi değiştiremez
5COMMIT;

Bu ayar sayesinde, bir işlem devam ederken başka bir işlem aynı veriyi değiştiremez.

İşlem tamamlandıktan sonra, güç kesintisi olsa bile veriler kaybolmaz.

1COMMIT;
2-- Bu noktada veri diskte kalıcı olarak yazılmıştır

Commit komutu çalıştıktan sonra, bilgisayar kapanırsa bile veriler güvende kalır.

Bir e-ticaret siteniz var. Müşteri sipariş verdi, ödeme alındı. Şimdi stok güncellenmeli.

1BEGIN TRANSACTION;
2INSERT INTO siparisler (musteri_id, urun_id, miktar, tarih)
3VALUES (5, 102, 3, NOW());
4
5UPDATE urunler SET stok = stok - 3 WHERE urun_id = 102;
6
7UPDATE musteriler SET bakiye = bakiye - 150 WHERE musteri_id = 5;
8COMMIT;

Beklenen çıktı: Üç sorgu da başarılı olur. Sipariş oluşturulur, stok azalır, müşteri hesabı ödenir. Herhangi bir hata olursa, tüm işlem geri alınır. Yarım kalan durum olmaz.

ACID özellikleri sayesinde, veritabanınız her durumda tutarlı ve güvenilir kalır. Özellikle finansal uygulamalarda bu kurallar hayati öneme sahiptir.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz