Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

VERİ TABANI ve YÖNETİMİ Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü.

Benzer bir sunumlar


... konulu sunumlar: "VERİ TABANI ve YÖNETİMİ Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü."— Sunum transkripti:

1 VERİ TABANI ve YÖNETİMİ Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü

2 BÖLÜM -11- İŞLEMLER (TRANSACTIONS) 2 BİL Veri Tabanı ve Yönetimi

3 Giriş Transaction Nedir? Transaction - Temel Bilgiler Örnek: Transaction Transaction Kuralları Transaction Bloğunun Çalışması Transaction İşlem Blokları Server ve Transaction 3 BİL Veri Tabanı ve Yönetimi

4 11.1. Transaction Nedir? Transaction veri tabanındaki verilere erişen ve çoğunlukla bu veriler üzerinde değişiklikler yapan bir program kesimidir. Birçok kullanıcının eşzamanlı olarak işlem yaptığı büyük veri tabanı sistemlerinde daha çok kullanılmaktadır. Bir işlem büyük bir bütünün parçası olabilir. Bu işlemlerden herhangi bir tanesinin gerçekleşmemesi bütün işlemleri anlamsız kılmaktadır. Böyle bir durumda bütün işlemler tek bir işlem gibi ele alınmalıdır. Bu parçalanamaz işlemlerin oluşturduğu yeni tek işleme «transaction» adı verilmektedir. 4 BİL Veri Tabanı ve Yönetimi

5 11.2. Transaction - Temel Bilgiler Önce transaction bloğu çalıştırılır. Transaction bloğunun çalıştırılması ile bütün işlemlerin bir bütünlük arz ettiği ve her an tamamının geçersiz sayılabileceği tanımlanmış olur. Bütün işlemler transaction log’ ların da tutulur ve herhangi bir problemde bu log’ lar dikkate alınır. Transaction bloğu SQL Server tarafından otomatik olarak veya kullanıcı tarafından «BEGIN TRANSACTION» komutu ile başlatılabilir. BEGIN TRANSACTION yerine BEGIN TRAN komutu da kullanılabilmektedir. 5 BİL Veri Tabanı ve Yönetimi

6 11.2. Transaction - Temel Bilgiler (devam) Transaction bloğunda yapılan her işlemin başarılı olup olmadığı, her biten işlem sonunda kontrol edilir. Eğer başarılı olunmadıysa yapılan işlem geri alınır. Geri alma işlemi «ROLLBACK» komutu ile gerçekleştirilir. Başarılı olunduysa bir sonraki işleme geçilir. Bu işlemler kullanıcı tarafından ve SQL Server tarafından gerçekleştirilebilir. 6 BİL Veri Tabanı ve Yönetimi

7 11.2. Transaction - Temel Bilgiler (devam) Tüm işlemler tamamlandığında «COMMIT» işlemi ile tüm veriler yeni hali ile veritabanına kaydedilir. Eğer işlem başarısız olursa «ROLLBACK» komutu ile bütün işlemler tekrar en başa alınır ve yapılacak olan işlem veritabanına yansıtılmaz. 7 BİL Veri Tabanı ve Yönetimi

8 11.3. Örnek: Transaction Bir banka sistemini ele alarak bir havale işlemini gerçekleştirelim. A kullanıcısı B kullanıcısına havale yaptığında;  A kullanıcısının hesabından havale edilecek olan miktar düşülür. Ardından B kullanıcısının hesabına bu havale miktarı eklenir ve havale işlemi gerçekleşmiş olur. Ancak her zaman bu şartlar sağlanamamış olabilmektedir. Örneğin, A kullanıcısı para havale ettiğinde elektrikler kesilebilir yada programda bir hata meydana gelebilir. Bu gibi bir durumda neler olabilir? 8 BİL Veri Tabanı ve Yönetimi

9 11.4. Transaction Kuralları Bir veritabanı veriler üzerinde değişiklik yaparken dört kuralı sağlamak zorundadır. Sağlanması gereken bu dört kural aşağıdaki gibidir. Bölünmezlik (Atomicity) Tutarlılık (Consistency) İzolasyon (Isolation) Dayanıklılık (Durability) 9 BİL Veri Tabanı ve Yönetimi

10 Bölünmezlik (Atomicity) Bir transaction bloğu asla yarım kalamaz. Ya hepsi gerçekleşmiş sayılır yada hiçbir işlem gerçekleşmemiş kabul edilerek başa dönülür. Başka bir ifade ile transaction, daha küçük parçalara ayrılamayan işlem birimi olarak ele alınır. 10 BİL Veri Tabanı ve Yönetimi

11 Tutarlılık (Consistency) Transaction veritabanının yapısını bozmadan işlem bloğunu terk etmelidir. Yani ara işlemler yapılırken işlem bloğunun etkisini veritabanına yansıtarak transaction’ı terk edemez. Örneğin A kullanıcısının hesabından parayı azaltıp B kullanıcısına eklemeden işlemi sonlandırmaz. Veritabanının mutlaka tutarlı olması gerekmektedir. 11 BİL Veri Tabanı ve Yönetimi

12 İzolasyon (Izolation) Farklı transaction’lar birbirinden farklı olarak ele alınmalıdırlar. Her transaction için veritabanının yapısı ayrı ayrı korunmalıdır. İlk transaction tarafından yapılan değişiklikler ikinci transaction’da görülmemelidir. Ancak işlem bittiğinde bir bütün olarak görülmelidirler. 12 BİL Veri Tabanı ve Yönetimi

13 Dayanıklılık (Durability) Tamamlanmış bir transaction’nın hatalara karşı esnek olması gerekmektedir. Elektrik kesilmesi, herhangi bir donanım arızası gibi nedenlerden dolayı yapılacak işlemlerin gerçekleşmesine engel olması gerekmektedir. Bunun için gerçekleşmiş ve başarılı olmuş transaction’nın değişikliklerinin diske kalıcı olarak yansıtılması gerekmektedir. 13 BİL Veri Tabanı ve Yönetimi

14 11.5. Transaction Bloğunun Çalışması SQL Server üzerinde herhangi bir veride değişiklik yapıldığı zaman, ilgili sayfalar daha önce diskten hafızaya çağrılmamış ise öncelikle tampon belleğe alınır. Daha sonra üstünde değişiklikler yapılır. Yapılan değişiklikler diske hemen yansıtılmaz. Bu şekilde içeriği denenmiş ama henüz diske kaydedilmemiş sayfalara kirli sayfa adı verilmektedir. Sayfada meydana gelen her değişiklik *.ldb uzantılı transaction log dosyalarına kaydedilir. Kirli sayfaların diske kaydedilmesi işlemine «arındırma» adı verilmektedir. 14 BİL Veri Tabanı ve Yönetimi

15 11.5. Transaction Bloğunun Çalışması (devam) Arındırma işlemi gerçekleşmeden önce kirli sayfalardaki tüm değişiklikler log dosyasına yansıdığı için işlem gerçekleşirken ortaya çıkacak olan istenmeyen durumlardan sonra eski haline dönmek mümkün olmaktadır. Eğer herhangi bir sorun ortaya çıkmaz ise arındırma işlemi düzgün olarak gerçekleşir ve veriler diske yazılır. 15 BİL Veri Tabanı ve Yönetimi

16 11.6. Transaction İşlem Blokları Transaction’lar içerdikleri tüm işlemleri başarıyla gerçekleştiren ya da veri tabanı üzerinde hiçbir değişiklik yapmayan atomik yapılardır. Olası bir durumda kurtarma işlemlerinin gerçekleştirilebilmesi için her işlemin ne zaman başladığı, ne zaman bittiği ve başarılı bir şekilde tamamlanıp tamamlanmadığı bilgisinin sistemde tutulması gereklidir. Bu sebeple kurtarma yöneticisi (recovery manager) şu bilgileri saklamaktadır 16 BİL Veri Tabanı ve Yönetimi

17 11.6. Transaction İşlem Blokları (devam) BEGIN TRANSACTION: Transaction’ ın başlangıcını işaretler. READ/WRITE: Transaction’ın içeriğinde gerçekleştirilen işlemlerin bilgisini içerir. END TRANSACTION: Transaction’ın bitişini işaretler. COMMIT: Transaction’ın başarıyla sonuçlandığı bilgisini içerir. ROLLBACK/ABORT: Transaction’ın başarısız olduğu bilgisini içerir. 17 BİL Veri Tabanı ve Yönetimi

18 11.6. Transaction İşlem Blokları (devam) Bir transaction’ın çalışması aşağıdaki gibidir. 18 BİL Veri Tabanı ve Yönetimi

19 11.7. SQL Server ve Transaction SQL Transaction’ları da diğer işlemlerden farksız olarak atomik bir yapıya sahiptir. Herhangi bir SQL sorgusu da aynı yapıda olduğu için ya tüm komut/sorgu başarıyla çalıştırılır ve sonucu alınır ya da veri tabanında hiçbir değişiklik yapılmadan işlem sonuçlandırılır. Dolayısı ile bunları Transaction yapıları içinde kullanmak mümkündür. 19 BİL Veri Tabanı ve Yönetimi

20 11.7. SQL Server ve Transaction (devam) SQL Server’ da transaction’ın genel yapısı aşağıdaki gibidir. BEGIN TRANSACTION Transaction komutları COMMIT TRANSACTION / ROLLBACK 20 BİL Veri Tabanı ve Yönetimi

21 11.7. SQL Server ve Transaction (devam) Örnek: Aşağıdaki niteliklere sahip banka hesaplarının tutulduğu bir tablo oluşturalım. 21 BİL Veri Tabanı ve Yönetimi

22 11.7. SQL Server ve Transaction (devam) Oluşturduğumuz bu tabloya iki adet kayıt ekleyelim. Dilerseniz daha fazla kayıtta ekleyebilirsiniz. 22 BİL Veri Tabanı ve Yönetimi

23 11.7. SQL Server ve Transaction (devam) Oluşturduğumuz bu tablo üzerinde bir Stored Procedure (SP) tanımlayalım. Bu SP dışarıdan havale yapanın hesap numarasını, havaleyi alacak olan kişinin hesap numarasını ve havale miktarını alacak ve Transaction başladıktan sonra havale işlemini gerçekleştirecektir. Eğer havalede bir sorun çıkmaz ise işlem geçerli olacaktır. Bir sorun oluşur ise, her aşamada «ROLLBACK» komutu ile bütün işlemler geri alacaktır. 23 BİL Veri Tabanı ve Yönetimi

24 11.7. SQL Server ve Transaction (devam) Oluşturduğumuz «havale» procedure’ü aşağıdaki gibidir. 24 BİL Veri Tabanı ve Yönetimi

25 11.7. SQL Server ve Transaction (devam) SP’yi bir havale işlemi gerçekleştirerek test ederek sonuçlarına baktığımızda havale işleminin sorunsuz gerçekleştiği görülmektedir. 25 BİL Veri Tabanı ve Yönetimi

26 11.7. SQL Server ve Transaction (devam) Bu transaction bloğu çalıştırıldığında hesap numaralarının herhangi birinin yanlış girilmesi durumunda dikkat edilirse herhangi bir uyarının verilmediği görülür. Bu gibi durumlarda hata yakalama komutu olan "TRY- CATCH" yapısına ihtiyaç vardır. Bu yapı oluşacak hataları kullanıcının görmesini ve gerekli düzeltmeleri yapmasını sağlamaktadır. TRY-CATCH bloğunu ekleyerek SP’yi yeniden düzenleyelim. 26 BİL Veri Tabanı ve Yönetimi

27 11.7. SQL Server ve Transaction (devam) Yeni SP aşağıdaki gibi olacaktır. 27 BİL Veri Tabanı ve Yönetimi

28 11.7. SQL Server ve Transaction (devam) Eğer herhangi bir hata meydana gelirse bir hata kodu üretilerek kullanıcı bilgilendirilecektir. Bu hata elektrik kesintisi, donanımsal yada programlama ile ilgili bir hata olabilmektedir. 28 BİL Veri Tabanı ve Yönetimi


"VERİ TABANI ve YÖNETİMİ Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü." indir ppt

Benzer bir sunumlar


Google Reklamları