Sunuyu indir
1
VERİ TABANI ve YÖNETİMİ
Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü
2
İŞLEMLER (TRANSACTIONS)
BİL Veri Tabanı ve Yönetimi BÖLÜM -11- İŞLEMLER (TRANSACTIONS)
3
Giriş Transaction Nedir? Transaction - Temel Bilgiler
3 BİL Veri Tabanı ve Yönetimi Giriş Transaction Nedir? Transaction - Temel Bilgiler Örnek: Transaction Transaction Kuralları Transaction Bloğunun Çalışması Transaction İşlem Blokları Server ve Transaction Bu hafta veritabanı yönetim sistemleri için son derece önemli olan transaction’lar konusunu ele alacağız. Transaction‘lar bir veritabanına verilerin ya tamamının kaydedilmesini yada hiçbirinin kaydedilmemesini sağlamaktadır. 3
4
4 BİL Veri Tabanı ve Yönetimi 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. BİRİNCİ MADDEDEN SONRA: Transaction yönetim sistemleri (transaction processing systems) banka, otel rezervasyon, süpermarket gibi birçok kullanıcının eşzamanlı olarak işlem yaptığı büyük veri tabanı sistemleri için geçerlidir. Bu sistemlerin yüksek performansla ve doğrulukla çalışması son derece önemlidir. ÜÇÜNCÜ MADDE İÇİN: Bazı durumlarda yapılan bir işlem büyük bir bütünün parçasıdır. Bu işlemlerden herhangi bir tanesinin gerçekleşmemesi bütün işlemleri anlamsız kılmaktadır. Bu durumda bürü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. Bir diğer değişle transaction, daha küçük parçacıklara ayrılamayan işlem bloklarıdır. 4
5
11.2. Transaction - Temel Bilgiler
5 BİL Veri Tabanı ve Yönetimi 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
6
11.2. Transaction - Temel Bilgiler (devam)
6 BİL Veri Tabanı ve Yönetimi 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
7
11.2. Transaction - Temel Bilgiler (devam)
7 BİL Veri Tabanı ve Yönetimi 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
8
8 BİL Veri Tabanı ve Yönetimi 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
9
11.4. Transaction Kuralları
9 BİL Veri Tabanı ve Yönetimi 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
10
11.4.1. Bölünmezlik (Atomicity)
10 BİL Veri Tabanı ve Yönetimi 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
11
11.4.2. Tutarlılık (Consistency)
BİL Veri Tabanı ve Yönetimi 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
12
11.4.3. İzolasyon (Izolation)
12 BİL Veri Tabanı ve Yönetimi İ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
13
11.4.4. Dayanıklılık (Durability)
13 BİL Veri Tabanı ve Yönetimi 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
14
11.5. Transaction Bloğunun Çalışması
14 BİL Veri Tabanı ve Yönetimi 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
15
11.5. Transaction Bloğunun Çalışması (devam)
15 BİL Veri Tabanı ve Yönetimi 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
16
11.6. Transaction İşlem Blokları
16 BİL Veri Tabanı ve Yönetimi 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
17
11.6. Transaction İşlem Blokları (devam)
17 BİL Veri Tabanı ve Yönetimi 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
18
11.6. Transaction İşlem Blokları (devam)
18 BİL Veri Tabanı ve Yönetimi 11.6. Transaction İşlem Blokları (devam) Bir transaction’ın çalışması aşağıdaki gibidir. 18
19
11.7. SQL Server ve Transaction
19 BİL Veri Tabanı ve Yönetimi 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
20
11.7. SQL Server ve Transaction (devam)
20 BİL Veri Tabanı ve Yönetimi 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
21
11.7. SQL Server ve Transaction (devam)
21 BİL Veri Tabanı ve Yönetimi 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
22
11.7. SQL Server ve Transaction (devam)
22 BİL Veri Tabanı ve Yönetimi 11.7. SQL Server ve Transaction (devam) Oluşturduğumuz bu tabloya iki adet kayıt ekleyelim. Dilerseniz daha fazla kayıtta ekleyebilirsiniz. 22
23
11.7. SQL Server ve Transaction (devam)
23 BİL Veri Tabanı ve Yönetimi 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
24
11.7. SQL Server ve Transaction (devam)
24 BİL Veri Tabanı ve Yönetimi 11.7. SQL Server ve Transaction (devam) Oluşturduğumuz «havale» procedure’ü aşağıdaki gibidir. 24
25
11.7. SQL Server ve Transaction (devam)
25 BİL Veri Tabanı ve Yönetimi 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
26
11.7. SQL Server ve Transaction (devam)
26 BİL Veri Tabanı ve Yönetimi 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
27
11.7. SQL Server ve Transaction (devam)
27 BİL Veri Tabanı ve Yönetimi 11.7. SQL Server ve Transaction (devam) Yeni SP aşağıdaki gibi olacaktır. 27
28
11.7. SQL Server ve Transaction (devam)
28 BİL Veri Tabanı ve Yönetimi 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
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.