Selam,
Aynı kayıt üzerinde(Aynı Paradoxdakigibi)işlem yapabiliyormu
Ne kadar korkunç bir ifade .... Aynı kayıt üzerinde aynı anda iki kullanıcının işlem yapması, birisinin yaptığı değişikliğin çöpe atılması demektir ki bu durum, neresinden bakarsanız bakın bilime aykırıdır.
Öncelikle kilit mekanizmalarını bir incelemelisiniz. İki tip kilit mekanizması mevcuttur. Pessimistic ve optimistic olarak..
Pessimistic kilitlerde, kaydın fiziksel olarak VT tarafından kilitlenmesi sözkonusudur. Bir kaydı ne zaman kilitleriz ne ve zaman çözeriz ? Kaydı kullanıcı güncellemeye kalkıştığı anda kilitleriz, şayet kilitliyse ya bekleriz (wait lock) ya da kullanıcıya bir mesaj verir döneriz. Kullanıcı commit ettiğinde de mevcut kilitleri kaldırırız. Şayet kilitleri kaldırma sürecini koymamışsanız, kullanıcı kayıtlarda çalıştıkça diğer kullanıcılar bir zaman sonra çalışamaz olurlar. Aslinda her kayıt işlemi bir transaction içinde olmak zorundadır, tek bir kaydı güncellesiniz bile.. Nedeni ise şayet bir trigger la içerde başkaca tablolar güncelleniyorsa failover durumlarda VT stabilitesini kaybeder ve artık o db ye güvenemezsiniz.. Ne mi olur ? En baba ticari paketlerde bile gördüğünüz "Servis" adı verilen program bölümleriniz olur. Bu konu uzun burada kesiyorum..
Optimistic lock da ise bir kayıt kilitlemezsiniz. Kaydın bir CRC sini yada tümünü tutarsınız. Kullanıcı submit ettiğinde kaydın bu eski CRC yada içeriğini kontrol eder ve değişiklik yoksa kaydı güncellersiniz.
Her iki sistem de db sürücüleri seviyesinde desteklenir. Öncelikle transaction yönetimi ve kayıt kilitleme mekanizmalarının detaylı bir incelemesini yapın. Multiuser sistemlerde bu konuda yeterli olmayan bir programcının hazırlayacağı VT den ve Uygulamadan hayır gelmeyeceğini rahatlıkla söyleyebilirim.
Kolay gelsin.
PS: Tablo değiştikçe tüm diğer clientlara broadcast geçmek, ciddi bir trafik oluşturacağı gibi, user tam veri girerken query sinin refresh edilmesiyle girdiği kaydı kaybetmesiyle de sonuçlanabilir. DB event larını bunun için kullanmak çok anlamlı değildir.