Transaction kavramının ne demek olduğu ile alakalı biraz bilgi verebilir misiniz?
comments
4 references
// Comments are closed.
Transaction kavramının ne demek olduğu ile alakalı biraz bilgi verebilir misiniz?
// Comments are closed.
Transaction database üzerinden session açılmasıdır bu session üzerinden query sorgusu çalıştırabilirsin.
İşiniz bittikten sonra da session kapatılması gerekir .Bu da transaction kapatılarak yapılır.Aksi halde database üserinde session trafiği olacaktır. Transaction yönetimi manual olarak yapılabileceği gibi (aç,persist, kapa )enterprise uygulamalar kullanıldığında bu transaction frameworkler tarafından yönetilir (Hibernate ,JPA ..).
transaction ile session’ının dediğiniz gibi bir ilgisi yoktur. Sadece transaction çalıştırabilmek için tabiki db’de bir session açılmalıdır.
bir session açtıktan sonra da bir çok transaction çalıştırılabilir.
Transaction genel bir kavram ve bir sürü tanım bulabilirsiniz. Birkaç farklı şekilde tanımlamaya çalışalım.
Transaction tek bir parçaymış gibi (atomik) işlenerek bitmesi gereken iş/iş gurubu demek diyebiliriz. İş grubu içinde herhangi bir anda sorun çıkması durumunda transaction başlangıcından hata anına kadar gelen kısmın tamamen iptal edilmesi gerekir. (Detaylı/gelişmiş kullanımlarında bu işlemi en başına kadar geri döndürmeniz gerekmeyebilir. bkz: rollback) İşlemler bittiği zaman transaction bitmiş olur.
Benim beğendiğim diğer bir tanım ise (bir büyüğümüzün tanımı); elinizde bir sistem var ve bu sistem valid (tutarlı) duruyor, bir grup işleminiz var ve bu işlemleri yapıp bitirdiğiniz zaman sistemin tekrar tutarlı olmasını bekliyorsunuz. Bu işlemlerin uygulanması sırasında sorun olursa sistem tutarsız (invalid) hale geliyor. İşte bu sistemi tutarlı bir halde alıp tekrar tutarlı halde bırakacak işlem/işlem grupları, transaction olarak tanımlanabilir.
Dikkat edilmesi gereken durum; veritabanı oturumları (db session) içinde birden fazla transaction açılabilir, veya hiç transaction açılmadan tek bir işlem de yapılabilir. One dikkat edip oturum (session) ile transaction kavramlarını karıştırmamak gerekir.
Transaction başlaması ve kapanması elle yapılabilir veya otomatik transaction kullanımları da uygulanabilir. Spring transaction bir örnek olacaktır.
Transaction veritabanı üzerinde bir bütün olarak çalıştırılan sorgu veya sorgular dizisidir. bu sorgular dizisi Kenan bey’in de dediği gibi tutarlılığı sağlamak içindir. Bu sorgu dizisinin içinde bir yerde hata alınırsa, öncesindeki çalışan tüm sorgular rollback olur. Böylelikle tutarlılık bozulmamış olur.
Oracle’da transaction begin… end bloğu içerisinde yazılır ve bu Oracle için tek bir transactiondur. ya tamamen çalışacaktır, ya da hata alırsa çalıştırdıklarını geri alacaktır.
Bunu bir örnekle açıklayacak olursak bir satış operasyonunu düşünelim. Bunun bir çok adımı olacaktır.
Bu satış işleminin gerçekleşebilmesi için yukarıda begin end arasında belirtilen tüm işlemlerin eksiksiz olması gerekiyor. Begin End arasındaki tüm işlemler, veritabanı için tek bir transaction’dır aslında. 3 işlemden herhangi birinde bir hata oluşursa önceki işlemler geri alınacak. Yani veri tutarlılığı sağlanmış olacaktır.
Bu işlem sonrası session kapatılmadan başka transaction’lar da çalıştırılabilir.