Zeos ve MyDac
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Zeos ve MyDac
Merhaba ,
Uzun süredir (10 yıl kadar) projelerimizde MySQL veritabanı kullanıyoruz .. Zeos komponentleri işimizin çok büyük kısmını rahatlıkla görüyor ..
2 sıkıntı yaşıyoruz .. çözüm arayışı içindeyim .. kendi forumuna da yazdım ..
1. MySQL SP lerde oluşan hataların detaylarını alamıyorum "Cannot retrieve Resultset Data" hata mesajını alıyorum ..
2. Backup ve yedekleme işlemlerinde sıkıntı yaşayabiliyorum .. MySQL GUI olarak HeidiSQL kullanıyorum .. buradan aldığım yedekleri TZQLProcedure işlerken delimiterlarda takla atmamız gerekebiliyor ..
MyDAC'ı biraz test ettim bu sıkıntılarımızı aşmış gözüküyor .. ancak projelerin tamamında MyDAC kullanmadan önce yaşabileceğim sıkıntılar yada püf noktaları bilenler paylaşabilir mi ?
Örnek Zeos un 7.1.4 versiyonunda karşılaştığım püf noktalar
1. UseMetaData Parametresini false yaptığımızda ZQuery lerin Edit ve Post işlemlerinda hata alıyoruz işlem gerçekleşmiyor.
2. SqlHourGlass (İmlecin simgesinin sorgularda değiştirilmesi ) True yapılırsa MySQL sorgularında yavaşlık oluyor ..
gibi MyDAC ında dikkat etmemiz gereken birşey varmıdır ? mesela testlerimde şununla karşılaştım ..
Server Adresi yanlış yada eksik olursa Delphi yi durduruyor ..
Tecrübesi olanlardan yorumlarını bekliyorum
Uzun süredir (10 yıl kadar) projelerimizde MySQL veritabanı kullanıyoruz .. Zeos komponentleri işimizin çok büyük kısmını rahatlıkla görüyor ..
2 sıkıntı yaşıyoruz .. çözüm arayışı içindeyim .. kendi forumuna da yazdım ..
1. MySQL SP lerde oluşan hataların detaylarını alamıyorum "Cannot retrieve Resultset Data" hata mesajını alıyorum ..
2. Backup ve yedekleme işlemlerinde sıkıntı yaşayabiliyorum .. MySQL GUI olarak HeidiSQL kullanıyorum .. buradan aldığım yedekleri TZQLProcedure işlerken delimiterlarda takla atmamız gerekebiliyor ..
MyDAC'ı biraz test ettim bu sıkıntılarımızı aşmış gözüküyor .. ancak projelerin tamamında MyDAC kullanmadan önce yaşabileceğim sıkıntılar yada püf noktaları bilenler paylaşabilir mi ?
Örnek Zeos un 7.1.4 versiyonunda karşılaştığım püf noktalar
1. UseMetaData Parametresini false yaptığımızda ZQuery lerin Edit ve Post işlemlerinda hata alıyoruz işlem gerçekleşmiyor.
2. SqlHourGlass (İmlecin simgesinin sorgularda değiştirilmesi ) True yapılırsa MySQL sorgularında yavaşlık oluyor ..
gibi MyDAC ında dikkat etmemiz gereken birşey varmıdır ? mesela testlerimde şununla karşılaştım ..
Server Adresi yanlış yada eksik olursa Delphi yi durduruyor ..
Tecrübesi olanlardan yorumlarını bekliyorum
Kim ilim öğrenir sonra da onu gizlerse âhirette onun ağzına ateşten bir gem vurulur. (Hadis-i Şerif)
Re: Zeos ve MyDac
Merhabalar,
2011 yılından bu yana MyDAC bileşenlerini kullanıyorum ,
Genel olarak son derece memnunum ,
sizin belirttiğiniz noktalar üzerinden gidecek olursak ,
Yedekleme ve yedekten geri dönme bileşeni (TMyDump) gayet sorunsuz ayrıca iş süreçlerini görsel olarak göstermek için de olaylar sunuyor (OnBackupProgress , OnRestoreProgress gibi..) ayrıca yedekleyeceğiniz yada geri yükleyeceğiniz veritabanının boyutunun hiç bir önemi yok yazrken de okurkende diskten parça parça işlem yapıyor bellek sorunları yaşamıyorsunuz.
SP leri normal TMyQuery ile EXECUTE diyerek çalıştırabileceğiniz gibi sırf bu işler için TMyStoredProc bileşeni sunuyor,
MySQL komut satırından yada editörlerden uygulanabilen tüm komutları çalıştırabilmesniz için amacına uygun bileşenler sunuyor mesela , MAster-Slave bir MySQL konfigürasyonunda show slave status vb gibi komutları TMyQuery yada TMyScript ile çalıştıramıyorken TmyCommand isimli bileşenle çalıştırabiliyorsunuz. geçersiz bir sunucu adresi yazdığınızda Delphinin kilitlenmesi konusunu hiç yaşamadım belki sürümlerle ilgili olabilir.
Eğer SSH arkasında bir MySQL e erişmeniz gerekirse DevArt ın SecureBridge setini kullanmak şartıyla MyDAC doğrudan SSH ve SSL desteği sağlıyor.
Son derece hızlı.
Bahsetmeden geçemeyeceğim müthiş bir özellik , TMyConnection üzerinde "Data Type Mapping" özelliği mevcut bu özellik sayesinde Delphi nin veritabanı alanlarını nesneleştirirken (uygun TField tipine dönüştürürken) varsayılan da tercih ettiği haritayı değiştirebiliyorsunuz, bunu bir örnekle açıklamaya çalışayım bir MySQL sorugunuzda SQL içinde hesaplanan bir sahanız var ve bu saha bazı durumlarda delphide TIntegerField sınırlarında olurken bazı durumlarda TLageIntField sınırlarına çıkabiliyor ve sizinde bir mecburiyetten dolayı mutlaka dataset içinde bu alanı nesne olarak ekleyerek kullanma durumunuz var diyelim, kaçınılmaz olarak bazı durumlarda "Type Mismatch excepting integer actuel LargeInt" gibi bir hata alacaksınız, bu editör sayesinde ise TLargeIntField gereksede sen bunları TIntegerField olarak yorumla yada daha detaylı boyut sınırları da vererek haritaya müdehale edebiliyorsunuz. ücretini hakeden bir çözüm olduğunu söyleyebilirim.
İyi çalışmalar.
2011 yılından bu yana MyDAC bileşenlerini kullanıyorum ,
Genel olarak son derece memnunum ,
sizin belirttiğiniz noktalar üzerinden gidecek olursak ,
Yedekleme ve yedekten geri dönme bileşeni (TMyDump) gayet sorunsuz ayrıca iş süreçlerini görsel olarak göstermek için de olaylar sunuyor (OnBackupProgress , OnRestoreProgress gibi..) ayrıca yedekleyeceğiniz yada geri yükleyeceğiniz veritabanının boyutunun hiç bir önemi yok yazrken de okurkende diskten parça parça işlem yapıyor bellek sorunları yaşamıyorsunuz.
SP leri normal TMyQuery ile EXECUTE diyerek çalıştırabileceğiniz gibi sırf bu işler için TMyStoredProc bileşeni sunuyor,
MySQL komut satırından yada editörlerden uygulanabilen tüm komutları çalıştırabilmesniz için amacına uygun bileşenler sunuyor mesela , MAster-Slave bir MySQL konfigürasyonunda show slave status vb gibi komutları TMyQuery yada TMyScript ile çalıştıramıyorken TmyCommand isimli bileşenle çalıştırabiliyorsunuz. geçersiz bir sunucu adresi yazdığınızda Delphinin kilitlenmesi konusunu hiç yaşamadım belki sürümlerle ilgili olabilir.
Eğer SSH arkasında bir MySQL e erişmeniz gerekirse DevArt ın SecureBridge setini kullanmak şartıyla MyDAC doğrudan SSH ve SSL desteği sağlıyor.
Son derece hızlı.
Bahsetmeden geçemeyeceğim müthiş bir özellik , TMyConnection üzerinde "Data Type Mapping" özelliği mevcut bu özellik sayesinde Delphi nin veritabanı alanlarını nesneleştirirken (uygun TField tipine dönüştürürken) varsayılan da tercih ettiği haritayı değiştirebiliyorsunuz, bunu bir örnekle açıklamaya çalışayım bir MySQL sorugunuzda SQL içinde hesaplanan bir sahanız var ve bu saha bazı durumlarda delphide TIntegerField sınırlarında olurken bazı durumlarda TLageIntField sınırlarına çıkabiliyor ve sizinde bir mecburiyetten dolayı mutlaka dataset içinde bu alanı nesne olarak ekleyerek kullanma durumunuz var diyelim, kaçınılmaz olarak bazı durumlarda "Type Mismatch excepting integer actuel LargeInt" gibi bir hata alacaksınız, bu editör sayesinde ise TLargeIntField gereksede sen bunları TIntegerField olarak yorumla yada daha detaylı boyut sınırları da vererek haritaya müdehale edebiliyorsunuz. ücretini hakeden bir çözüm olduğunu söyleyebilirim.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: Zeos ve MyDac
öncelikle mesajınız için teşekkür ederim ..
Peki MyConnection komponentinde Compress özelliği mevcut ama ayrıntılı test etmedim .. kullanıyormusunuz ?
bunun ile ilgili özellikle uzak bağlantılarda ve büyük listelerde zeos daki süre 200 saniyeye kadar çıkabiliyor ..
Peki MyConnection komponentinde Compress özelliği mevcut ama ayrıntılı test etmedim .. kullanıyormusunuz ?
bunun ile ilgili özellikle uzak bağlantılarda ve büyük listelerde zeos daki süre 200 saniyeye kadar çıkabiliyor ..
Kim ilim öğrenir sonra da onu gizlerse âhirette onun ağzına ateşten bir gem vurulur. (Hadis-i Şerif)
Re: Zeos ve MyDac
Bildiğim kadarıyla compression desteğini veren bileşen değil, bağlanmak için kullandığımız dll dosyası. Bu nedenle performansa etkisi olmayacaktır diye düşünüyorum.
Re: Zeos ve MyDac
Merhabalar ,
Compress özelliğini kullanmadım.
@mkysoft https://www.devart.com/mydac/ burada mysql client library olmaksızın doğrudan bağlanır diyor bu sebeple belki compression konusunda farklı bir deneyim yaşatabilir düşüncesindeyim.
iyi çalışmalar.
Compress özelliğini kullanmadım.
@mkysoft https://www.devart.com/mydac/ burada mysql client library olmaksızın doğrudan bağlanır diyor bu sebeple belki compression konusunda farklı bir deneyim yaşatabilir düşüncesindeyim.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: Zeos ve MyDac
küçük bir test yaptım ..
internetteki bir bilgisayarda
1814 kayıt için ..
compress özelliği aktif değilken 15 saniye civarı zeos ve mydac ..
mydac in compress true olduğunda 8 saniye ..
zeos da Zconnection Properties özelliğine compress=1 eklenirse zeos da sıkıştırma yapıyor ..
sıkıştırma işlemlerinde veri kaydetme vs.de sorun olmaz sanırım ??
internetteki bir bilgisayarda
1814 kayıt için ..
compress özelliği aktif değilken 15 saniye civarı zeos ve mydac ..
mydac in compress true olduğunda 8 saniye ..
zeos da Zconnection Properties özelliğine compress=1 eklenirse zeos da sıkıştırma yapıyor ..
sıkıştırma işlemlerinde veri kaydetme vs.de sorun olmaz sanırım ??
Kim ilim öğrenir sonra da onu gizlerse âhirette onun ağzına ateşten bir gem vurulur. (Hadis-i Şerif)
Re: Zeos ve MyDac
Merhaba hızlıca bir test ettim Compress := True iken bir limitasyon yok normal çalışıyorsunuz bir sıkıntı gözlemlemedim.
iyi çalışmalar.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: Zeos ve MyDac
2. sorunumu çözdüm .. zeos un restore işlemlerinde 6.6 versiyonlarında delimiterType özelliğinde dtdelimiter özelliği yoktu ..
sonrasında eklenmiş sanırım 7.1.4 versiyonunda var dolayısıyla delimiter sorunum ortadan kalktı ..
dump işlemi için şimdilik mysqldump ı kullanıyoruz ..
1. sorunum için araştırma yapıyorum çözüm bulursam dönerim ..
procedurelerde işlemler sonucunda id dönüyor .. bu yüzden
şeklinde çalışıyoruz .. tabi procedure de bir hata olunca Zeos da "Cannot Retrieve Resultset Data" hatası alıyorum ..detail hatayı alamadım ..
MyDac direk hatayı veriyor ..
projede MyDac a geçmeye cesaret edemedim henüz ..
sonrasında eklenmiş sanırım 7.1.4 versiyonunda var dolayısıyla delimiter sorunum ortadan kalktı ..
dump işlemi için şimdilik mysqldump ı kullanıyoruz ..
1. sorunum için araştırma yapıyorum çözüm bulursam dönerim ..
procedurelerde işlemler sonucunda id dönüyor .. bu yüzden
Kod: Tümünü seç
ZQuery.SQL.Text:='select procedure_ismi()';
ZQuery.Open;
ZQuery.Fields[0].AsInteger ......
MyDac direk hatayı veriyor ..
projede MyDac a geçmeye cesaret edemedim henüz ..
Kim ilim öğrenir sonra da onu gizlerse âhirette onun ağzına ateşten bir gem vurulur. (Hadis-i Şerif)
Re: Zeos ve MyDac
"Cannot retrieve Resultset Data" Data hatası ile ilgili Sorunuda çözdüm ..
sorun hakkında kısa bilgi vereyim .. yazdığımız functionlarda belli işlemler yapıldıktan sonra geriye sonuç döndürüyoruz ..
Hata Oluştuğunda result set geri gelmediği için direk "Cannot retrieve Resultset Data" hatası veriyordu .. detay hatayı alma ile ilgili
aşağıdaki düzenleme ile sorunu çözmüş olduk ..
ZDbcMySqlResultSet.pas dosyasında
Uses kısmına
ekliyoruz
procedure TZMySQLResultSet.Open;
aşağıdaki şekilde değiştirdim ..
sorun hakkında kısa bilgi vereyim .. yazdığımız functionlarda belli işlemler yapıldıktan sonra geriye sonuç döndürüyoruz ..
Kod: Tümünü seç
ZQuery.SQL.Text:='select procedure_ismi()';
ZQuery.Open;
aşağıdaki düzenleme ile sorunu çözmüş olduk ..
ZDbcMySqlResultSet.pas dosyasında
Uses kısmına
Kod: Tümünü seç
ZDbcLogging;
procedure TZMySQLResultSet.Open;
aşağıdaki şekilde değiştirdim ..
Kod: Tümünü seç
procedure TZMySQLResultSet.Open;
var
I: Integer;
FieldHandle: PZMySQLField;
LogSQL: String;
begin
if ResultSetConcurrency = rcUpdatable then
raise EZSQLException.Create(SLiveResultSetsAreNotSupported);
if FUseResult and (not FIgnoreUseResult) then
begin
FQueryHandle := FPlainDriver.UseResult(FHandle);
LastRowNo := 0;
end
else
begin
FQueryHandle := FPlainDriver.StoreResult(FHandle);
if Assigned(FQueryHandle) then
LastRowNo := FPlainDriver.GetRowCount(FQueryHandle)
else
LastRowNo := 0;
end;
if not Assigned(FQueryHandle) then
begin
CheckMySQLError(FPlainDriver, FHandle, lcExecute, LogSQL);
raise EZSQLException.Create(SCanNotRetrieveResultSetData);
end;
{ Fills the column info. }
ColumnsInfo.Clear;
for I := 0 to FPlainDriver.GetFieldCount(FQueryHandle) - 1 do
begin
FPlainDriver.SeekField(FQueryHandle, I);
FieldHandle := FPlainDriver.FetchField(FQueryHandle);
if FieldHandle = nil then
Break;
ColumnsInfo.Add(GetMySQLColumnInfoFromFieldHandle(FPlainDriver,
FieldHandle, ConSettings, FUseResult));
end;
inherited Open;
end;
Kim ilim öğrenir sonra da onu gizlerse âhirette onun ağzına ateşten bir gem vurulur. (Hadis-i Şerif)