Firebird,ibTable ve Performans

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Firebird,ibTable ve Performans

Mesaj gönderen emin_as »

Firebirdde ibtable dan uzak dur, ibtable tüm bilgileri çekip, onlar üzerinde filtre yapar. Dogru bileşen ibdatasettir. Ibdataset in selectsq ini istedigin dosyaları seçmek için kullanabilirsin. Çok daha performanslıdır, sorgulamayı firebird de yapıp, gerektigi kadar kayıt getirir.

Birden fazla veritabani olmasının dezavantajları vardır, öncelikle bu tablolar arasında join işlemleri yapamazsın, ayrıca her veritabani baglantısı için ekstra bufferlar açılır. Yedekleme, transaction vs her veritabanı için ayrı ayrı yapılmalıdır.

Kısaca ibtable dan uzak dur, ibdataset kullan ve tabloları tek bir veritabanında tut.
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Firebird,ibTable ve Performans

Mesaj gönderen CiTiZEN »

Bunca zaman ibtable kullanmıştım firebird çıkmadan önce msaccess ile yaptığım çalışmalarda da adotable bileşenini hatta ondan önce BDE ile de table kullanıştım :) sanırım bu table işi bende hastalık oldu yada kötü bi alışkanlık diyelim peki ibdataset ile ilk defa bir uygulama geliştireceğim ilk nerden başlamalıyım sistemi nasıl geliştirmeliyim,program açılınca benım hazırladığım formlardan birisinde kayıtlarla ilgili işlemler yapılacak diyelim bunun için nasıl bir yol izlemeliyim.kayıtlar nasıl ve neye göre çekilmeli vs.
UWESIS CORPORATION
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Firebird,ibTable ve Performans

Mesaj gönderen emin_as »

ibdataset in selectsql ine görmek istedigin kayıtları verirsin. Daha sonra ibdataset in üzerine sag tıklayıp dataset editor e girip, key i ve kullanmak istedigin fieldları seçip, generate sql yaparsın. Bu işlem insert, delete ve update için gerekli sql leri oluşturur.

Selectsql.text:='select * from cari ';
Yazarak tüm stokları getirebilirsin. Bu aslında table gibi bütün kayıtları getirir, o yüzden çok yerinde bir davranış degildir. 100-1000 kayıtta sorun çıkmaz, ama kayıt sayısının 100.000 leri buldugu durumda veya internet üzerinden programı kullanmak istersen ciddi anlamda network trafigi oluşturur ve son derece gereksizdir. Kimse 100.000 kaydı aynı anda incelemek istemez. Bu nedenle tablo yu açmadan önce bir süzme ekranı tasarlamak yerinde olur. Diyelim, cari kartına girilecek, oraya bazı seçenekler koyabiliriz.
* Kayıt tarihi şu tarihten sonraki cariler,
* isminde ahmet geçen cariler,
* adresi izmir olan cariler,
* kod u C-1001 ile C-5001 arası olan cariler
* En son seçenekte tüm carileri getir olabilir.

Bu şekilde tasarlamak hem kullanan açısından, hem de program açısında daha verimli olur. Kullanıcı gereksiz yere tüm kayıtlara ulaşmaz ve istedikleri kayıtları süzebilmiş olur. Sınırlı sayıda kayıt getirildigi için programın internet üzerinden kullanılması da son derece hızlı ve kolay olur.

http://www.rasyonelyazilim.com adresinde benim yazdıgım emlak programının demosunu http://www.rasyonelyazilim.com/filess/demozip.exe adresinden indirip, inceleyebilirsin. Orada kayıtlar açılmadan önce süzmeler yapılabiliyor. Süzmeler direk formun üzerinde, ayrıca bir pencere açılmıyor.
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Firebird,ibTable ve Performans

Mesaj gönderen CiTiZEN »

Hocam çok teşekkür ediyorum tavsiyeleriniz için şu anda programın interface tasarımının aşamasındayım veritabanı bağlantısı düzeyine geldiğimde bi sorun olursa tekrar sorunlarımı belirtirim Tekrar teşekkürlerimi sunarım. Kolay gelsin
UWESIS CORPORATION
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Firebird,ibTable ve Performans

Mesaj gönderen CiTiZEN »

Bu arada söylemeyi unuttum programınız oldukca güzel olmuş umarım istediğiniz başarıyı yakalarsınız :) ayrıca kullandığınız bileşenler neler öğrenmemede bi sakınca varmı sadece arayüz bileşenlerinden bahsediyorum
UWESIS CORPORATION
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: Firebird,ibTable ve Performans

Mesaj gönderen Kuri_YJ »

Selamlar,

Aslında TTable gibi nesneler kullanılırken şunları göz önünde bulundurmalısınız, Siz herhangi bir şeyi TTable'dan istediğinizde önce TTable (Tüm Kayıtları Yükle seçeneğini seçmediyseniz) yapacağı iş için önce kaydın belleğinde olup olmadığını kontrol eder, daha sonra yoksa o kayıtları yükler ve sonra sizin istediğiniz işlemi gerçekleştirir. Bu sebeple, TTable türü nesneleri kullanırken dikkatli olmak lazım !...

Aslında yapacağınız işleri, örneğin Kayıt silmeyi, Doğrudan TQuery nesnelerine yönelndirin, Table nesneleri yavaş olur. Ayrıca Database bir Deniz'dir, siz bu denizden ne kadar su çekmeye çalışırsanız işiniz o kadar hızlanır/yavaşlar. Eğer bir bardak su çekecekseniz kolayca halledebilirsiniz, ama Kamyonla su çekmeye kalkarsanız işiniz uzun sürer. Bu sebeple gönderdiğiniz sorgularda özellikle şunlara dikkat edin,

1. Sadece işinizi olduğu tablolara erişin,
2. Sadece işinizin olduğu tablo alanlarına erişin,
3. Sadece işinizi olduğu kayıtları filtreleyin ve onları getirin,
4. Indexlerinizi nerelerden filtreleme yapacaksanız o alanlara göre düzenleyin, Örneğin Tarih ve Müşteri ID'ye göre filtrelenen bir tablo için Tarih + Müşteri ID şeklinde bir index yapın, (denemedim ama ayrıca Müşteri + Tarih şeklinde de bir index yapın ki FB duruma göre en hızlısını kendi tayin edebilsin.)

Ayrıca şurada yazdıklarımı da bir oku,
viewtopic.php?f=18&t=581&p=3002&hilit=paradox#p3002

5. Elinden geldiğince sadece işin olan kayıtları elleçle, gereksiz Network trafiği oluşturma, server'ı oyalama. Eğer Döngülerle bir takım şeyler yapıp bilgileri güncelleyeceksen, bu tür işlemleri SP'lere at. Server kendi içerisinden en az 100 kat hızlı yapacaktır işin (100 kat dedim, çokluktan kinayedir yanlış anlaşılmasın)

6. Ayrıca, oluşturduğun DB'lerde İlişkilere dikkat et, data tekrarı yapma, tablolarındaki alan sayısını fazla tutma. İlişkilerle oluştur büyük dataları.

Vs. vs..

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Firebird,ibTable ve Performans

Mesaj gönderen CiTiZEN »

Hocam gerçekten güzel tavsiyeler ayrıca linkteki anlatımınızda gayet güzeldi bunları ayrıca örnek alarak tasarlayacağım veritabanlarımı çok teşkkür ediyor,kolaylıklar diliyorum.
UWESIS CORPORATION
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Re: Firebird,ibTable ve Performans

Mesaj gönderen aLonE CoDeR »

Bence doğru bileşen IBDataset (ya da Dataset) de değil, Query nesnesi...
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Firebird,ibTable ve Performans

Mesaj gönderen CiTiZEN »

ben eskiden query denince aklımda hiçbirşey oluşmazdı ama sorgulara ve verdiği sonuçlara bakınca table nesnesinden daha karalı oldugunu gördüm ve sayenizdedir ki (Çok teşekkürler) bu bileşene geçme kararı aldım yardımlarınızın dokunacağı iletilerinizi yazarsanız sevinirim
Kolay gelsin.
UWESIS CORPORATION
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: Firebird,ibTable ve Performans

Mesaj gönderen Kuri_YJ »

TQuery Nesnesini kullanırken aklında bulunsun, TUpdateSQL diye bir yardımcı nesnesi vardır onun. Bu sayede TQuery (Readonly) olmasına karşın, TUpdateSQL nesnesi yardımıyla, Query'lerini Update, Delete ve Insert yapabilir hale getirebilirsin. Emin ol TTable'dan çok daha hızlı olacaktır.

TUpdateSQL'i araştırmanı tavsiye ederim, örnekler bulup incele !... Ahan da aradığım şey buydu, süper oldu diyeceksin 8) ;)

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Firebird,ibTable ve Performans

Mesaj gönderen CiTiZEN »

Bi insan bu kadar haklı olur emin olun query ve updatesql kullanmaya başladım yaklaşık 2 gün oldu siz queryi tavsiye ettikten sonra araştırıp buldum onpost eventinde felan neler yapılır ama gerçekten ben bunca zaman TTable ile boşuna uğraşmış proje hazırlamışım Query çok hoşuma gitti sorgular felan
Ahan da aradığım şey buydu, süper oldu
:) :) Queryi tavsiye ettiğiniz için çok teşekkür ederim
UWESIS CORPORATION
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Firebird,ibTable ve Performans

Mesaj gönderen CiTiZEN »

Örnek açısından işlemlerimi şu şekilde yapıyorum :

Kod: Tümünü seç

Ekle:

IBQuery1.open;
IBQuery1.insert;
Afterpost ve After Delete Eventinde 

IBQuery1.applyupdates;

Kaydet:

IBQuery1.open;
IBQuery1.post;

Sil:

IBQuery1.Delete;

Düzenle:

IBQuery1.Edit;
İhtiyacı olan arkadaşların yararlanması adına yazıyorum umarım bi yanlışlık yoktur.
UWESIS CORPORATION
Slowhand
Üye
Mesajlar: 2
Kayıt: 26 Tem 2004 11:04

Re: Firebird,ibTable ve Performans

Mesaj gönderen Slowhand »

Selamlar.

Firebird veritabanını kullanacaksanız bence yol yakınken IBX componentlerinden kurtulup FIBPlus yükleyin. IBX, Interbase veritabanı için hazırlanmıştır. Her ne kadar Interbase ve Firebird benzer yapıda gözüksede Firebird 2.0 versiyonunun çıkması ile aradaki farklılıklar çoğalmaktadır. Bu sorunlarla hiç karşılaşmama ihtimalide var tabi ama şimdiden önlem alınmasında fayda var derim.

Kolay gelsin.
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Firebird,ibTable ve Performans

Mesaj gönderen CiTiZEN »

Slm bu tavsiyeniz üzerine fibplus indirdim o bileşenleri kullanma kararı aldım aradaki farkları gördüğümde bi sorun olursa tekrar burda yayınlarım teşekkür ediyorum
kolay gelsin
UWESIS CORPORATION
Cevapla