Kodlamada anormal bişey yok hocam. O edit fazladanmış gerçekten şimdi gördüm (açık kaynak kodlu yazılımlar böyle gelişiyor demekki) ama bunu hayati sorunlara yol açacağını zannetmiyorum. Bunun yanında anormal şey-(ler) eki niye anlamadım. Her post işleminden sonra transaction ı onaylamak zorundayım. Elektrik kesilirse veya OS kilitlenirse ne olacak? Adam onlarca satışı yeniden mi girecek? Birde bu zaten tam olarak bir hızlı satış sistemi değil. Bazı satışların tamamlanması 1 dakikadan az sürerken bazıları 1 saat sürüyor. Sen 1 saat boyunca commit yapma, ondan sonra elektrik kesilince adama tüm veriyi yeniden girdir. Tabi alıcı o sırada isyan edip gitmezse. Uzaktan hüküm vermek kolay biliyorum. Ama işin içinde olup da yaptıklarının kefili olunca zor.bLue aLonE yazdı:Kodlamanda anormal şeyler var.Örneğin önce append akabinden edit editmişsin dataseti, buradaki maksat nedir, bunun birçok veri tutarsızlığını beraberinde getireceğini sanırım biliyorsundur..Ek olarak sen normal bir post işlemi gerçekleştiriyorsan buradaki kod bloklarının içinde spesifik bir commit/commitretaining kullanma ihtiyacını neden duydun bunu da çözemedim.Özellikle network ortamlarında bu tür spesifik commit ve muadili işlemler veri tutarsızlığı için en önemli sebeplerden biridir.Insert ya da Update için kullandığın transaction nesnesi baz alınmak kaydıyla bir bilemedin iki yerde commit ya da muadili bir komut icra ettirmek gerekir.Özellikle hızlı satış sistemleri söz konusu olduğunda ve bir de network yükü fazlaysa bu organizasyon hataya davetiye çıkartır..Bu noktada commitretaining bazen iptal ediyor demek pek sağlıklı bir hüküm değil fikrimce..
Kolay gele..
fb vt ye kayıt girme yöntemi hakkıda
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
@Ali Erdoğan;
- Kasdetmek istediğim şeyler bunlar değil.Ben de her post işleminden sonra veri tutarlılığı için commit gerçekleştiririm, tabii tek işlemde birden fazla kayıt işliyorsam işlem bitiminde...Benim commit organizasyonundan kastım bunu merkezi bi yerden yönetmek.Eğer sistematik kodlama yapıyorsan zaten buna mecbursun, aksi halde proje büyüdükçe içinden çıkılmaz bir hal alır..
- Append ve akabinde Edit yapmanın hayati bir hata oluşturması çok rahat oluşabilecek bir durumdur, emin olabilirsin..
- Uzaktan hüküm verme konusunda genelleme yapılarak düşünüldüğünde haklısın ancak bir konuda yorum yapacaksam o konu hakkında bilgim olması dışında yaşanmışlık ararım kendimde..Bahsettiğin olaylarla birebir olmasa da genel anlamda biz de uğraşmaktayız..Ve kullancıya karşı mahçup olmanın ne demek olduğunu çok iyi bilirim..Zira tecrübe kazanmak için bu, olmazsa olmazlardandır bence..
Kolay gele..
- Kasdetmek istediğim şeyler bunlar değil.Ben de her post işleminden sonra veri tutarlılığı için commit gerçekleştiririm, tabii tek işlemde birden fazla kayıt işliyorsam işlem bitiminde...Benim commit organizasyonundan kastım bunu merkezi bi yerden yönetmek.Eğer sistematik kodlama yapıyorsan zaten buna mecbursun, aksi halde proje büyüdükçe içinden çıkılmaz bir hal alır..
- Append ve akabinde Edit yapmanın hayati bir hata oluşturması çok rahat oluşabilecek bir durumdur, emin olabilirsin..
- Uzaktan hüküm verme konusunda genelleme yapılarak düşünüldüğünde haklısın ancak bir konuda yorum yapacaksam o konu hakkında bilgim olması dışında yaşanmışlık ararım kendimde..Bahsettiğin olaylarla birebir olmasa da genel anlamda biz de uğraşmaktayız..Ve kullancıya karşı mahçup olmanın ne demek olduğunu çok iyi bilirim..Zira tecrübe kazanmak için bu, olmazsa olmazlardandır bence..
Kolay gele..

Terminatör usta cevabınız için teşekkür ederim.şimdi anladığım kadarı ile sürekli kayıt ekleme durumlarında her kayıttan sonra transactin i commitreatening etmek yerine commit daha sağlıklı oluyor .peki biz şöyle bişey yapsak örneğin bi değişken tanımlayıp her commitreateningten sonra bu değişkeni bi arttırsak.mesela değişken değeri 5 olunca yani 5 defa commitreatening edilince.transactionu kapatıp açsak server kaynaklarını tüketmemek adına bi çözüm olabilirmi.
- Terminator
- Üye
- Mesajlar: 313
- Kayıt: 13 Ara 2005 01:45
- Konum: İzmir, ama Aydın Efesi!
kim söyledi her kayıttan sonra commit ya da commitretaining gerektiğini sana???meron06 yazdı:Terminatör usta cevabınız için teşekkür ederim.şimdi anladığım kadarı ile sürekli kayıt ekleme durumlarında her kayıttan sonra transactin i commitreatening etmek yerine commit daha sağlıklı oluyor .peki biz şöyle bişey yapsak örneğin bi değişken tanımlayıp her commitreateningten sonra bu değişkeni bi arttırsak.mesela değişken değeri 5 olunca yani 5 defa commitreatening edilince.transactionu kapatıp açsak server kaynaklarını tüketmemek adına bi çözüm olabilirmi.
bunun sağlık demek olduğu sonucunu nereden çıkardın?
commit etmeye bu kadar meraklıysanız ISAM tabanlı mysql kullanın
yazdığınız herşey anında kalıcı kaydolur, geri alınma imkanı yok.
transactionın ne olduğunu, amacını, yerini, zamanını bilemiyor veya ayarlayamıyorsanız kullanmayın bence.
Firebird Foundation Member #208
http://www.firebirdsql.org
http://www.firebirdsql.org
Terminatör usta vakit ayırdığın için teşekkür ederim .
"kim söyledi her kayıttan sonra commit ya da commitretaining gerektiğini sana???bunun sağlık demek olduğu sonucunu nereden çıkardın? "
şimdi ben fb de yeniyim.ama bi kullanıcı yeni bi kayıt eklediğinde bu kaydın diğer kullanıcılar tarafından da görülmesi lazım.bunun içinde transaction u commit etmek gerekiyor.benim bildiğim bu .ayrıca ben fb yi bu forum sayesinde öğreniyorum.forumda anlatılanları uyguluyorum.her eklenen kayıttan sonra transactionu commit etmezsek vtye girilen bilgi fiziksel olarak yzılmıyor.ya elektrik kesilse yada o anda pc de bi sorun olsa ve pc kapansa transactionu commit etmediğim için bi veri kaybı sözkonusu olur.her kayıttan sonra commit etmekten kasıtımbuydu.
ama burda öğrenmek istediğim bişey var."belki de server çok fazla commitretaining yaptığın için kaynakları tüketmiş ve yeni transactionu başlatamamış da olabilir.".bu durumun başıma gelmemesi için transactionu nasıl kullanmalıyım.forumda çok aradım.en son çare yeniden sormaya kaldı.ilgin için teşekkür ederim.
"kim söyledi her kayıttan sonra commit ya da commitretaining gerektiğini sana???bunun sağlık demek olduğu sonucunu nereden çıkardın? "
şimdi ben fb de yeniyim.ama bi kullanıcı yeni bi kayıt eklediğinde bu kaydın diğer kullanıcılar tarafından da görülmesi lazım.bunun içinde transaction u commit etmek gerekiyor.benim bildiğim bu .ayrıca ben fb yi bu forum sayesinde öğreniyorum.forumda anlatılanları uyguluyorum.her eklenen kayıttan sonra transactionu commit etmezsek vtye girilen bilgi fiziksel olarak yzılmıyor.ya elektrik kesilse yada o anda pc de bi sorun olsa ve pc kapansa transactionu commit etmediğim için bi veri kaybı sözkonusu olur.her kayıttan sonra commit etmekten kasıtımbuydu.
ama burda öğrenmek istediğim bişey var."belki de server çok fazla commitretaining yaptığın için kaynakları tüketmiş ve yeni transactionu başlatamamış da olabilir.".bu durumun başıma gelmemesi için transactionu nasıl kullanmalıyım.forumda çok aradım.en son çare yeniden sormaya kaldı.ilgin için teşekkür ederim.
- Terminator
- Üye
- Mesajlar: 313
- Kayıt: 13 Ara 2005 01:45
- Konum: İzmir, ama Aydın Efesi!
Transaction bir iş bütünlüğü-tutarlılığı-güvenliği sağlama aracıdır.meron06 yazdı:Terminatör usta vakit ayırdığın için teşekkür ederim .
"kim söyledi her kayıttan sonra commit ya da commitretaining gerektiğini sana???bunun sağlık demek olduğu sonucunu nereden çıkardın? "
şimdi ben fb de yeniyim.ama bi kullanıcı yeni bi kayıt eklediğinde bu kaydın diğer kullanıcılar tarafından da görülmesi lazım.bunun içinde transaction u commit etmek gerekiyor.benim bildiğim bu .ayrıca ben fb yi bu forum sayesinde öğreniyorum.forumda anlatılanları uyguluyorum.her eklenen kayıttan sonra transactionu commit etmezsek vtye girilen bilgi fiziksel olarak yzılmıyor.ya elektrik kesilse yada o anda pc de bi sorun olsa ve pc kapansa transactionu commit etmediğim için bi veri kaybı sözkonusu olur.her kayıttan sonra commit etmekten kasıtımbuydu.
ama burda öğrenmek istediğim bişey var."belki de server çok fazla commitretaining yaptığın için kaynakları tüketmiş ve yeni transactionu başlatamamış da olabilir.".bu durumun başıma gelmemesi için transactionu nasıl kullanmalıyım.forumda çok aradım.en son çare yeniden sormaya kaldı.ilgin için teşekkür ederim.
her kayıttan sonra commit etmenize imkan tanıyan basit/sade işlemleriniz
varsa tabii ki commit edebilirsiniz.
Ali'ye, commitretaining edememiş olabilir dedim ve neden kontrol edilmesi gerektiğini de açıkladım. retainingi bırakın bazen commit bile edemeyebilirsiniz. yaptığınız her! iletişimi kontrol etmelisiniz.
neden commit hata verir uzmanlaştıkça anlayabilirsiniz.
basit bir örnek vereyim:
bir index yaratın çift kayıtların olduğu bir sahaya unique olarak
create dediğinizde komutu alır ve itiraz etmez, ama commit dediğinizde
indexi yapılandırmaya başlar ve çift kayıtlar yüzünden hata döndürür.
nolcak şimdi?
bunlar firebirde yeni olmakla ilgili değil, genel RDBMS/sql ilkeleridir.
firebirde yeni katılan arkadaşların eğer transaction anlama problemi varsa
bu, onların upgrading yapan kullanıcılar olmasından kaynaklanıyor.
paradox, dbase gibi tek kullanıcılı sistemlerden yükselenler zor anlıyor.
ama başka bir SQL sisteminden FB ye geçenler, FBdeki rahat transaction yapısını görünce hayran kalıyor.
Adaşım Ali'nin commitretainingi neden bazen çalışmıyor olabilir onlarca senaryo üretebilirim ama bu bence anlamsız, önce Ali'nin kodunu sağlamlaştırması gerekiyor. kodunun nerelerinde eventlar var, kullandığı componentlerdeki buglar neler, tam düzgün kullanıyor mu, FB serverda
başka hangi programlar çalışıyor, configurasyon yeterli mi, serveri analiz etmişmi vs vs...
kesin olan şu ki, FB en eski ve sağlam sistemlerden biri ve yaptım dediği bir işi kaybedecek bir mimariye sahip değil, Ali de en yoğun veya tek FB kullanıcısı değil retainingi buglı olarak tespit edecek.
Firebird, insertleri updateleri fiziksel olarak dosyaya yazar, ve kaybetmez,
sadece onaylanmamış görünür.
Bilinen basit bir örnek vereyim, bir banka ATMsi FB kullanıyor diyelim
adam bir hesaptan diğerine havale yaptı
bir hesaptaki parayı azaltıp diğerini de artırman lazım değil mi?
peki sen her updateden sonra commit edersen bu güvenli mi olur?
bazı işlemler ya hep ya hiç kuralıyla çalışır, transaction da bunun yoludur.
bazen tek bir işlemden sonra işiniz bitmiştir, commit edersiniz,
bazen de bütün VT dosyasını restore/replication ettikten sonra commit edersiniz.
bilgisayar ürüne odaklı öğrenilmez, tüm bunlar temel bilgisayar bilimleri bilgileri ve kurallarıdır ve okuyup araştırıp kendinizi yetiştirmeniz gerekiyor.
bilgisayar bilimi deneme yanılmayla ya da sorarak bağdata ulaşma kadar muaffak olunabilecek basit bir konu değildir.
kolay gelsin.
Firebird Foundation Member #208
http://www.firebirdsql.org
http://www.firebirdsql.org