Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Veri Tabanında Transaction Kavramı - Musa ÇİÇEK - Bilisimdergi.Com
      Veri Tabanında Transaction Kavramı Temmuz 2010 | Sayı : 16

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210

Transaction, belirli işlemleri bir bütün halinde çalıştırmak için kullanılan bir yapıdır. Transaction ile birden çok komut bir blok halinde çalıştırılır ve tüm komutların başarılı olması halinde işlemler onaylanır. Eğer komutlardan bir tanesi bile başarısız olursa işlem iptal olur.

"Ya hep, ya hiç"  kuralı...

Bu ifade, transaction kavramını tanımlamak için yerinde bir ifade olacaktır. Çünkü transaction içindeki tüm komutlar ya hep beraber çalışacak ya da hiçbiri çalışmayacak.

"Peki bu yapının avantajı nedir?" diye sorarsanız...

İlişkisel veri tabanı tasarımında birçok tablo birbirine bağımlı haldedir. Bir tablodaki kaydın silinmesi diğer tablodaki kayıtları da etkileyebilmektedir veya bir tabloya kayıt eklenmesi için başka bir tabloda buna ilişkin kaydın önceden eklenmiş olması gerekebilmektedir.

Transaction işlemlerinin en çok kullanıldığı sistemler banka sistemleridir çünkü banka sistemleri güvenli olmak zorundadır ve hesap işlemlerinde oluşabilecek en küçük hatalar bile telafisi imkansız büyük problemlere yol açabilir. Örneğin; "Musa Çiçek" isimli müşterinin hesabından "Özge Ataseven" isimli müşterinin hesabına para havale ederken, bir taraftan gönderenin hesabından para kesilecek diğer taraftan alıcının hesabına para eklenecektir ve bu iki işlem de beraber gerçekleşmelidir. Ya iki işlem de gerçekleşecek ya da her iki işlem de iptal edilecektir.

 

Örnek Senaryo

Bir banka sisteminde para havale etme işlemi için örnek bir transaction tasarlayalım.

Öncelikle aşağıdaki gibi bir "hesap" tablosu oluşturalım ve tablomuzda müşterilere ait hesap numarası, ad - soyad, şube kodu ve bakiye bilgileri tutalım.

  

Şimdi tablomuza örnek kayıtlar girelim.

 

 

Evet, şimdi senaryomuzu yazalım.

 

"Mehmet Duran'ın hesabından, Ayşe Kaçmaz'ın hesabına 1500 TL havale yapılsın."

 

Bunu yapmak için aşağıdaki adımlar izlenir

 

  1. Mehmet Duran'ın bakiye bilgisini 1500 azalt.
  2. Ayşe Kaçmaz'ın bakiye bilgisini 1500 artır.

 

Şimdi senaryomuza ait SQL kodlarını yazalım


 

Havale işleminin gerçekleşmesi için bu iki sorgunun aynı anda gerçekleşmesi gerekir ve sistem kullanıcısı bu iki sorguyu birden çalıştırıyor.

Evet, şimdi gelelim tehlikeli bölüme. J

Bu senaryo üzerinde gerçekleşebilecek olası hataları inceleyelim.

1 - Diyelim ki, birinci SQL sorgusunda bir hata oluştu ve ikinci sorgu çalıştı. Bu durumda, Mehmet Duran'ın hesabından herhangi bir eksilme olmayacak fakat Ayşe Kaçmaz'ın hesabına 1500 TL eklenecek ve tablomuz aşağıdaki gibi olacaktır.

Gördüğünüz gibi, Mehmet Duran'ın hesabında herhangi bir değişiklik olmadığı halde Ayşe Kaçmaz'ın hesabına 1500 TL eklenmiştir.

Bu durumda, Mehmet Duran'ın hesabında kendisine ait olmayan 1500 TL bulunmaktadır. Kısacası bedavadan 1500 TL kazanmış olacaktır. J

2 - Bir diğer hata olasılığı da birinci sorgunun çalışması fakat ikinci sorguda hata oluşması. Bu durumda Mehmet Duran'ın hesabından 1500 TL eksilme olacak fakat Ayşe Kaçmaz'ın hesabına herhangi bir ekleme olmayacak.

 

Gördüğünüz gibi, Mehmet Duran'ın hesabından 1500 TL düşüldü fakat bu para Ayşe Kaçmaz'ın hesabına aktarılmadı ve durumu fark eden Ayşe hanım hemen Mehmet beyi arayıp parayı yatırmadığını söyler fakat Mehmet bey parayı yatırdığını söyler ve elinde fiş bulunduğunu dahi söyler. :)

 

Peki, bu durumda hangisi haklıdır sizce? Tabii ki, ikisi de haklıdır fakat sorun sistemden kaynaklanmaktadır ve maalesef böyle bir durumda çok büyük para kayıpları yaşanabilmektedir.

 

İşte, yukarıda saydığımız problemlerin önüne geçmek için TRANSACTION yapısı kullanılır ve her iki komut birden çalıştırılır. Eğer her iki komut başarılı ise transaction onaylanır fakat herhangi bir komutta hata oluşursa her iki işlem de iptal olur. Böylece yanlış bir değişikliğin önüne geçilmiş olur.

 

 

Bu yapıyı SQL kodlarına dökmek için COMMIT - ROLLBACK komutları kullanılır.

 

COMMIT komutu ile çalıştırılan tüm SQL komutlarının başarılı olması halinde işlemler veri tabanına yansıtılır.

 

ROLLBACK komutu ise herhangi bir hata oluşumunda tüm işlemleri geri alır.

 

 

 

 

      Musa ÇİÇEK
Ege Üniversitesi Bilgisayar Mühendisliği 4.Sınıf
- Temmuz 2010 -

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Editörden... | H. Can ÇOBANOĞLU
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Laplace’in Şeytanı | Özge ATASEVEN
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Dünya Kupası’nda Güvenlik | Neslişah ÇELİK
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Yapay Beyin | Rukiye Şerife BAŞTUĞ
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Model Güdümlü Yazılım Geliştirme | Özkan AKGÜL
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
İş Zekası | Duygu KARABATAK
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Joomla | Serkan AKDEMİR
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Yaşanacak Yeni Dünya | Erman TEPE
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
JExcel Api | Mustafa Burak AMASYALI
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Java Editörleri | Bülent ÇOBANOĞLU
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Veri Tabanında Transaction Kavramı | Musa ÇİÇEK
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Sessiz İletişim | Muhammed CÜCE

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
« önceki sayfa - 10 - sonraki sayfa »

Ana Sayfa | Künye | Dergimiz | Yazarlar İçin | İletişim
© 2009-2010 Bilisimdergi.Com Tasarım - Kodlama : İU BİLGİSAYAR

Creative Commons License
Bilişim Dergi içeriği  Creative Commons  lisansı ile korunmaktadır.
Kaynak göstermek ve link vermek şartıyla yazılarımızı kullanabilirsiniz.