firebird coklu kullanimda refresh
firebird coklu kullanimda refresh
selamu aleyküm cemaat-i müslimin
hocalarim...
firebird veritabani kullanmaya calisiyorum V1.5... yapmak istedigim program bir kac bilgisayarda ayni anda calisacak ve firebird server ana makinada calisacak. yani tüm client ler ana makinaya baglanacak. fakat aklima takilan sey, client lerden biri bir veri gönderdiginde ve / veya sildiginde ayni anda diger client ler kendilerini nasil refresh edecekler? her yaplan islem diger tüm client lere ayni anda yansilmali...
firebird e yeni basladim... sanirim 2 saatlik bir gecmisim var yardimci olursaniz duaciniz olurum...
Allah'in (cc) selami üzerinize olsun...
hocalarim...
firebird veritabani kullanmaya calisiyorum V1.5... yapmak istedigim program bir kac bilgisayarda ayni anda calisacak ve firebird server ana makinada calisacak. yani tüm client ler ana makinaya baglanacak. fakat aklima takilan sey, client lerden biri bir veri gönderdiginde ve / veya sildiginde ayni anda diger client ler kendilerini nasil refresh edecekler? her yaplan islem diger tüm client lere ayni anda yansilmali...
firebird e yeni basladim... sanirim 2 saatlik bir gecmisim var yardimci olursaniz duaciniz olurum...
Allah'in (cc) selami üzerinize olsun...
kıdemsiz üye
viewtopic.php?t=1273&postdays=0&postord ... d&start=15
galiba arkadaslar burada cözmeye calismislar... epey aradim ama henüz bir seye rastlamis degilim... devam ediyorum...
galiba arkadaslar burada cözmeye calismislar... epey aradim ama henüz bir seye rastlamis degilim... devam ediyorum...
kıdemsiz üye
Post event..........................
Selamün Aleyküm İkra Kardeşim ..Post Event ile işi çözdüm diyorsun..Nasıl çözdün?..Peki diğer Kullanıcılar Aynı kayıt üzerinde değişiklik,düzeltme yapabiliyorlarmı? Bu hakka sahiplermi?.Ben günlerdir bunun için uğraşıyorum,Yaptığım proğram 9 Bilgisayarda çalışıyor.Her kez tablo üzerinde işlem yapabilsin,aynı anda kayıt girebilsin.ama olmuyor.Bir firmaya yaptığım proğram da iş gereği buların olması lazım.Ama firebird hemen kilit koyuyor" Deadlock"..Sitelerde çok araştırdım. ama çözüm bulamadım haa IBObjects ,FIBPlus'la bu sorun çözülüyor zaten araştırdıkça seni buralara yönlendiriyorlar ama astarı Kumaşından pahalıya çıkıyor..Bende bir süre pes edip ara verdim..o firmada Paradox la devam ettiriyorum. şu ana kadar hiç bir problem yaşamadık..9 ağ bilgisayarı tıkır tıkır çalışıyor.
ve aleyküm selam...
delphi 7 ve firebird 1.5 kullaniyorum... ilk defa firebird kullaniyorum. sanirim cok kisa bir zaman zarfinda Allah'in (cc) izni ile cözecegim...
her bir tablo icin trigger ekledim. bu trigger after (insert, delete, update) olayinda tetikleniyor.
örnegin
post_event 'tabloxxx yenilendi';
daha sonra form üzerine bir IBEvent koydum. database yi bagladim. ve IBEvent in Events'ine post event icine yazmis oldugum string i yazip AutoRegister i TRUE yaptim.
OnEventAlert kismina ilk deneme olarak Showmessage(eventname); ekledim... ( acaba mesaji alabiliyormuyum ve mesaj hangi tablodan geliyor)
daha sonra fark ettim ki her bir registered event icin bir numara veriliyormus. yani
0, 1, 2, 3 diye...
sana düsen hangi tablodan hangi numara dönüyor o'nu görmek ve daha sonra
Case EventCount of
1: Tablo1.refresh;
2: Tablo2.refresh;
end;
bu sekilde hangi tablodan mesaj geliyor ise o tabloyu refresh edebiliyorsun...
Kolay gelsin...
( Yanlis bilgilenmekten ve bilgilendirmekten, harflerin sahibi olan alemlerin Rabbine siginirim )
delphi 7 ve firebird 1.5 kullaniyorum... ilk defa firebird kullaniyorum. sanirim cok kisa bir zaman zarfinda Allah'in (cc) izni ile cözecegim...
her bir tablo icin trigger ekledim. bu trigger after (insert, delete, update) olayinda tetikleniyor.
örnegin
post_event 'tabloxxx yenilendi';
daha sonra form üzerine bir IBEvent koydum. database yi bagladim. ve IBEvent in Events'ine post event icine yazmis oldugum string i yazip AutoRegister i TRUE yaptim.
OnEventAlert kismina ilk deneme olarak Showmessage(eventname); ekledim... ( acaba mesaji alabiliyormuyum ve mesaj hangi tablodan geliyor)
daha sonra fark ettim ki her bir registered event icin bir numara veriliyormus. yani
0, 1, 2, 3 diye...
sana düsen hangi tablodan hangi numara dönüyor o'nu görmek ve daha sonra
Case EventCount of
1: Tablo1.refresh;
2: Tablo2.refresh;
end;
bu sekilde hangi tablodan mesaj geliyor ise o tabloyu refresh edebiliyorsun...
Kolay gelsin...
( Yanlis bilgilenmekten ve bilgilendirmekten, harflerin sahibi olan alemlerin Rabbine siginirim )
kıdemsiz üye
selam
ben Firebird ü kullanmaya başlayalı 1 ay gibi bir zaman oldu önceden
Paradox kullanıyordum ama Firebird daha güzel . Paradox ta yazdıgım
bir Taksitli satış programını Firebird e geçirdim aynı anda 2 terminal
rahatlıkla kullanıyor tüm kayıt ,silme ,update işlemlerinde Cache Update
kullandım şuana kadar bir sorun yaşamadım . (Firebird e ODBC üzerinden
bağlanıyorum)
saygılar.
ben Firebird ü kullanmaya başlayalı 1 ay gibi bir zaman oldu önceden
Paradox kullanıyordum ama Firebird daha güzel . Paradox ta yazdıgım
bir Taksitli satış programını Firebird e geçirdim aynı anda 2 terminal
rahatlıkla kullanıyor tüm kayıt ,silme ,update işlemlerinde Cache Update
kullandım şuana kadar bir sorun yaşamadım . (Firebird e ODBC üzerinden
bağlanıyorum)
saygılar.
Bilgi Paylaştıkça Çoğalır
-
- Kıdemli Üye
- Mesajlar: 395
- Kayıt: 22 Tem 2004 09:15
- Konum: İzmir
- İletişim:
Selam,
Ö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.
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.Aynı kayıt üzerinde(Aynı Paradoxdakigibi)işlem yapabiliyormu
Ö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.
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Niye Olmasın Bir Tablo üzerinde Bir çok kullanıcı Bazı haklara sahip olmalı
Mesela benim yaptığım veritabanında bu gerekli .Tablo içinde Kullanıcılarla ilgili bölümler var bu bölümler diğer kullanıcılar tafafından doldurulmak zorunda ..bu şekilde kullanıcılar, girdiği veriler sürekli değişim geçirmek zorunda ..Yani Veritabanları hep klasik bir türde yazılmak zorunda değil..İhtiyaca göre yazılması lazım..Ha ben kalkıp müşterime bu yo şu yok dediğim zaman ..nal toplarız..iyi çalışmalar.
Mesela benim yaptığım veritabanında bu gerekli .Tablo içinde Kullanıcılarla ilgili bölümler var bu bölümler diğer kullanıcılar tafafından doldurulmak zorunda ..bu şekilde kullanıcılar, girdiği veriler sürekli değişim geçirmek zorunda ..Yani Veritabanları hep klasik bir türde yazılmak zorunda değil..İhtiyaca göre yazılması lazım..Ha ben kalkıp müşterime bu yo şu yok dediğim zaman ..nal toplarız..iyi çalışmalar.
-
- Kıdemli Üye
- Mesajlar: 395
- Kayıt: 22 Tem 2004 09:15
- Konum: İzmir
- İletişim:
Selam,
Field bazlı bir güvenlik evet ama field bazlı bir locking ve update mekanizması ben hiç duymadım.. VT kaydı bütün olarak okuyup bütün olarak yazıyor.. Hatta çoğu sistem page bazında yapıyor bu işi.. Bu nedenle güncel teknolojşyle çalışabilmek için tabloyu bölerek bunu yapmalısınız. X tipi kullanıcıların güncelleyeceği alanlar bir tabloda, Y tipi kullanıcıların güncelleyeceği bilgiler bir tabloda olabilir.. Muhtemelen bu bilgilere ait ana kaydın bulunduğu bir tablonuz daha olacak.
Field bazlı bir güvenlik evet ama field bazlı bir locking ve update mekanizması ben hiç duymadım.. VT kaydı bütün olarak okuyup bütün olarak yazıyor.. Hatta çoğu sistem page bazında yapıyor bu işi.. Bu nedenle güncel teknolojşyle çalışabilmek için tabloyu bölerek bunu yapmalısınız. X tipi kullanıcıların güncelleyeceği alanlar bir tabloda, Y tipi kullanıcıların güncelleyeceği bilgiler bir tabloda olabilir.. Muhtemelen bu bilgilere ait ana kaydın bulunduğu bir tablonuz daha olacak.
Veritabanı motorunu siz yazıyorsanız bu olabilir. Fakat siz sadece VT de çalışıyorsanız, sisteminin nasıl çalıştığını bilmelisiniz...Yani Veritabanları hep klasik bir türde yazılmak zorunda değil..İhtiyaca göre yazılması lazım
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
VT larınin nasıl çalıtığını çok iyi biliyorum ama bir yere de(vt'ye) takılmamak lazım.
Bakin Size bir Ornek vereyim: Bundan bir sure once Belcikada SOPHIS diye bir Yazilim firmasi vardi,Tekstil Uzerine Unix altinda bir program yaziyor tabi o zamanin ihtiyaclarina gore ve bu programi bir cok tekstil firmasi satin aliyor kullaniyor,ve bir sure sonra programin ihtiyaca gore yetersizligi ortaya cikiyor, Linux a geciyor.tabi bu arada bu is uzerine rakip firmalar cikiyor,Bu firma programi gelistirib,sattigi firmalara yeteri kadar destek vermiyor,kisaca program tek duz de kaliyor,iste efendim rakip firma Windows da sunu yapiyormus!,cevap Efendim windows cokecek en iyisi linux[Halbuki Linux bu konuda Cok Yetersiz] Gelistirme yok,Guncelleme yok,yani bu yazilim firmasina dunyanin parasina satin alip baglandiklari program baslarina dert oluyor Cunku obur firmalar Veritabanlarini WINDOWS da bir de resimli yaparak ki(bu sitede bakiyorum Resimli Veritabanlarina cogu karsi Demekki oluyormus) bir cok ozelliklerle donatip adeta sov yapiyorlar veee sonuc kacinilmaz,7-8 sene once WINDOWS un Cokecegini soyleyen SOPHIS iflas ediyor,Simdi zerresi yok bu yuzden tek duzde kalmayacaksiniz Gelelim bize eee efendim iki kisi ayni Tablo uzerinde islem yapmasin zaten normalide bu(Begenmediginiz Paradoxda Pekala oluyor),efendim resimli veritabani yapmayin,efendim soyle yapmayin boyle yapmayin,Sitenin girisindeki yaziyi iyi okumamiz lazim Cagimiz insani artik bilincli,Turkcesi Programci Piyasa ihtiyacina gore kendisini gelistirmek zorunda..Eger bir kusur islediysem Af ola..Herkese iyi calismalar.
Bakin Size bir Ornek vereyim: Bundan bir sure once Belcikada SOPHIS diye bir Yazilim firmasi vardi,Tekstil Uzerine Unix altinda bir program yaziyor tabi o zamanin ihtiyaclarina gore ve bu programi bir cok tekstil firmasi satin aliyor kullaniyor,ve bir sure sonra programin ihtiyaca gore yetersizligi ortaya cikiyor, Linux a geciyor.tabi bu arada bu is uzerine rakip firmalar cikiyor,Bu firma programi gelistirib,sattigi firmalara yeteri kadar destek vermiyor,kisaca program tek duz de kaliyor,iste efendim rakip firma Windows da sunu yapiyormus!,cevap Efendim windows cokecek en iyisi linux[Halbuki Linux bu konuda Cok Yetersiz] Gelistirme yok,Guncelleme yok,yani bu yazilim firmasina dunyanin parasina satin alip baglandiklari program baslarina dert oluyor Cunku obur firmalar Veritabanlarini WINDOWS da bir de resimli yaparak ki(bu sitede bakiyorum Resimli Veritabanlarina cogu karsi Demekki oluyormus) bir cok ozelliklerle donatip adeta sov yapiyorlar veee sonuc kacinilmaz,7-8 sene once WINDOWS un Cokecegini soyleyen SOPHIS iflas ediyor,Simdi zerresi yok bu yuzden tek duzde kalmayacaksiniz Gelelim bize eee efendim iki kisi ayni Tablo uzerinde islem yapmasin zaten normalide bu(Begenmediginiz Paradoxda Pekala oluyor),efendim resimli veritabani yapmayin,efendim soyle yapmayin boyle yapmayin,Sitenin girisindeki yaziyi iyi okumamiz lazim Cagimiz insani artik bilincli,Turkcesi Programci Piyasa ihtiyacina gore kendisini gelistirmek zorunda..Eger bir kusur islediysem Af ola..Herkese iyi calismalar.
tabiki ayni tablo'da bir cok kisi islem yapabilir. Ama yukardaki aciklamalar, ayni Kayit üzerinde islem yapilmasindan bahsediyor.Aynı kayıt üzerinde(Aynı Paradoxdakigibi)işlem yapabiliyormu
Anlasmazlik sadece sizin (HBV) olayi anlatirken, dikkatsizce sectiginiz kelimelerden kaynaklaniyor, ve Dogan beyin hangi konu üzerine konustuguna da dikkat etmediginizi gösteriyor.
miskin
Ve Tanri, bütün kullarini davul edecek
Ve Tanri, bütün kullarini davul edecek