VERİTABANI TASARIM HAKKINDAKİ GÖRÜŞLERİNİZ..

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 02:53

VERİTABANI TASARIM HAKKINDAKİ GÖRÜŞLERİNİZ..

Mesaj gönderen softdestek » 09 Oca 2015 11:42

MYSQL Veritabanı ve Delphi7 kullanarak yazmış olduğum bir programda veritabanını Firebirde geçirmek istiyorum..

XE6 PROGRAMI YENİDEN YAZACAM

30 civarında tablo var fakat en önemli olan 2 tablo mevcut...
Bunlardan biri master tablo diğeri ise detay tablo

MASTER
HER YIL YAKLAŞIK 10000-15000 KAYIT GİRİŞİ OLUYOR...
DETAY
TABLOYA İSE 50000-80000 GİRİŞ OLUYOR...
Ben yıllar önce 2005 yılında veritabanından belki sorun çıkabilir veya tüm kayıtları birleştirirsem şişme olabilir diye her yıl için ayrı veritabanı dosyası açıyordum.. Fakat zamanla geçmiş yıllarıda sorgulama istekleri arttı..Geçmiş yıla kullanıcı girmeden çalıştığı yıl üzerinden geçmişten gelen datalar alması gerektir..sorunu kısmi çözümlerle hallettim..Fakat birden fazla bağlantı componenti kullnamaktan sıkıldım..(Geçmiş yıllardanda aynı anda sorgulamam yapabilmek için birden fazla bağlantı komponenti kullanıyordum)

Bu yıl ise geçmiş yılların tüm verilerini Firebird veritabanına atmak istiyorum..
Yaklaşık bir hesapla master tabloda 90.0000-135.0000 kayıt olacak
Detay tabloda ise 500.000 ve 720.0000 kayıt üstünden kayıt olacak ...

Veritabanı bağlantı komponenti olarak ibdac kullanacam..(Diğer programlarında bunu kullanıyorum)

Sorularım şu
1)Master tablosunda
MID diye bir yeni bir alan alan ekleyecem Autoincremet ve
detay tablosunda
DID diye yeni bir alan lan alan ekleyecem Autoincremet

Sql ise ise master ve detay tablosundaki tarih alanına göre süzme yapacam

Select * From Master
Where YEAR(TARIH)

SELECT FROM DETAY
WHERE TESCILNO=:TESCILNO


Yukardaki gibi sql ifadelerle mi işi çözmeyi düşünüyorum...


Başka bir önerisi olan varmı arkadaşlar...?
mesela TArih verisinden yıl için ayrı bir alan oluşturup bu alanı mı kullansam veya Where YEAR(TARIH) işi görür mü sizce hız ve performans açısından en iyisi hangisi olur...
Benim kaanatim ayrı bir alan oluşturmak mesala YIL GİBİ...
Görüş ve önerilerinizi bekliyorum arkadaşlar.

Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 30 Eyl 2007 11:02
Konum: Ankara

Re: VERİTABANI TASARIM HAKKINDAKİ GÖRÜŞLERİNİZ..

Mesaj gönderen Battosai » 09 Oca 2015 01:19

En kolay yöntem MySQL ile devam etmen. Neden Firebird'e geçmeye ihtiyaç duydunuz. MySQL, Firebird'e göre daha sağlam bir arkası var :) Ayrıca veritabanını belli aralıklarla bölmeniz performans açısından mantıklı ve kullanılan bir yöntemdir. Eski kayıtları görmek isteyenler için farklı bir seçenek ile yeni bağlantı açtırabilirsiniz. Zaten sizde böyle yapmışsınız. Bağlantı bileşeni kullanmaznı gerektiği yerde kullanacaksınız. Bağlantı işlemleri component arayüzü ile değilde bir procedure'a bağlı runtime create ederseniz tüm projenizde daha rahat edersiniz. Böylece aynı işler için formunuza bileşen ikonu koyup ayar yapmanız gerekmez.

Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 02:53

Re: VERİTABANI TASARIM HAKKINDAKİ GÖRÜŞLERİNİZ..

Mesaj gönderen softdestek » 09 Oca 2015 01:53

Cevap aslında çok basit benim açımdan..İlk yazdığım muhasebe programında 2001 yılında interbase kullanmıştım.Fakat daha sonra onuda firebirdde geçirdim.bugüne kadar geçen 13 yıl boyunca tek bir sorun yaşamadım.Elektrikler gitti serverlar değişti ama hiç sorun oluşmadı..Fakat 2005 yılında başka bir servis için yazdığım MYSQL veritabanında ise şimdiye kadar bir çok sorun yaşadım.Geçmiş yıllarda MYSQL ün MYISAM dosya yapısı kullandığımdan belki olabilir..Fakat sorunları EMS şirketinin http://www.sqlmanager.net şirketinin SQL MANAGER FOR MYSQL progrramındaki tamir seçeneklerini kullanarak çözdüm..Bu kadar sorundan sonra insanın aklına gelen soru şu?Tamam tamir programı ile tamir ediyorum sorun çözülüyor ama ne gerek var...Firebirdün sunduğu procedure triger...ve sonradan eklenen aynı anda birden fazla veritabanında sorgu seçeneği varken (bu kısmı muhasebe kısmında kullanıyorum mesela...)
Mysql da çıkan en basit sorunlardan birine örnek vereyim mesala veritabanına yeni alan ekliyorum sorun çıkabiliyor...Veya auto inc alanı sql kodla sıfırlamada sorun yaşayabiliyorum bazen..birde bunların haricinde çok fazla veride sql açısından ince hassas ayara ihtiyaç duyuyor....Bu sorunların hiç birini firebirde yaşamadım...Firebirdün default ayarları ile programlarım sorunsuz çalıştı...Fakat mysql de büyük miktarlarda veri taşıyan tablolar join sql kullanmak bile ince ayar gerektiriyor...

Kısacası 1)Aynı anda birden fazla veritabanını veritabanında yazacağım tek bir procedure ile sorgulam isteği..
2)Veritabanına yeni alanlar eklerken yaşadığım errorları görmemek isteği..
3)Mysql configurasyonunda ince ayar yapmaktan bıkma durumum..
4)Delphi XE6 kullanarak zamanın gereklerine uyarak yeniden program yazma isteği....
Nedenlerden dolayı kendini ispatlamış olan firebird veritabanı kullanmak istiyorum...

Birde şunun gibi bir sql ile firebirde yazabiliyorum...En önemli sebeplerden biride bu...(Aynı anda birden fazla veritabanında işlem yapabilme isteği)

Kod: Tümünü seç

execute block returns (emp_no smallint) as
begin
FOR EXECUTE STATEMENT 'select emp_no from employee'
ON EXTERNAL DATA SOURCE 'localhost:employee' AS USER 'sysdba' PASSWORD 'masterkey'
INTO :emp_no
DO SUSPEND;
end
En son softdestek tarafından 09 Oca 2015 03:50 tarihinde düzenlendi, toplamda 1 kere düzenlendi.

Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 30 Eyl 2007 11:02
Konum: Ankara

Re: VERİTABANI TASARIM HAKKINDAKİ GÖRÜŞLERİNİZ..

Mesaj gönderen Battosai » 09 Oca 2015 02:20

Hangi veritabanını daha çok biliyorsanız onunla çalışmanız daha mantıklı. Başlarken yanlış yapmışısınız. Veritabanı aktarım araçları var onlardan birini kullanarak dönüşüm sağlayabilirsiniz...

Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 02:53

Re: VERİTABANI TASARIM HAKKINDAKİ GÖRÜŞLERİNİZ..

Mesaj gönderen softdestek » 09 Oca 2015 03:49

Öncelikle zaman ayırıp cevap verdiğiniz için teşekkür ederim..Aktarıma sorun yaşamam sanırım. EMS programları ile veritabanı yapısını oluşturup kendi yazacağım aktarım programı ile aktarımı yapabilirim..Genelde aşağıaki şekilde aktarımı yapıyorum..Fakat sizinle firebird konusunda fikir alışverişi yapmak isterim..vedatpala@gmail.com mail adresim ..Ekleyebilirseniz sizinle tanışmak isterim .Teşekkür ederim.

Kod: Tümünü seç

procedure TFormAna.BitBtn2Click(Sender: TObject);
var sayac:integer;
begin
QKaynak.close;
QKaynak.TableName:='tes_islemler';
QKaynak.Open;

QHedef.close;
QHedef.TableName:='tes_islemler';
QHedef.Open;


ProgressBar1.Position:=0;
ProgressBar1.Max:=QKaynak.RecordCount;

QKaynak.First;
while not QKaynak.Eof do begin
  ProgressBar1.Position:=ProgressBar1.Position+1;

  QHedef.Append;
For sayac:=0 to QKaynak.FieldCount-1 do begin
//showmessage(QKaynak.Fields [sayac].FieldName);
  QHedef.FieldValues[QKaynak.Fields[sayac].FieldName]:= QKaynak.FieldValues[QKaynak.Fields[sayac].FieldName];
                                        end;
                                    
QHedef.Post;
QKaynak.Next;


                          end;
showmessage('aktarım bitti');

 
end;

Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 30 Eyl 2007 11:02
Konum: Ankara

Re: VERİTABANI TASARIM HAKKINDAKİ GÖRÜŞLERİNİZ..

Mesaj gönderen Battosai » 09 Oca 2015 03:56

Firebird konusunda çok deneyimli değilim. Aktarım işlemleri için hazır uygulama varsa kullan uğraşmaya gerek yok. Firebird konusunda fikir alışverişi için forumu kullanmak en doğrusu. Böylece herkes faydalanır. Forumda firebird konusunda oldukça bilgi ve tecrübe sahibi kişiler var. Cevap geç olsada gelir. Kolay gelsin...

Cevapla