Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
firebird master detail ve birleştirme
#1
arkadaşlar aşağıda gibi bir veritabanım var bunu master detail yaptığım zaman (3 tablo oluştrmam gerekiyor) tekrar bu hale nasıl birleştirebilirim bilemedim.. yada bu şekilde devam etsem yıllar sonra başım ağrırmı 364000 kayıtta 95 mb olmuş 100 milyon kayıtta olma ihtimali var ilerde

Untitled-1.jpg
Cevapla
#2
Konunun dosya boyutu ile ilgisi tablo aç / kapa dediğinizde tüm kayıtları göstermek üzere çekmeye çalışmak,  projenize ağırlık oluşturma potansiyeli var.

SQL konusuna giriş yapmanızı önerebilirim. Sadece sorduğunuz kadar cevap tablo oluşur.

SQL JOIN ile de verilecek şartlara göre farklı tabloları (master detail gibi belli şartlarda ilişki kurmak istediğiniz tablolar) kümeleyerek bir arada tek bir tablo elde etme imkanınız olur.  Idea
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#3
Merhaba.

@mrmarman  Üstadın da dediği gibi SQL JOIN ile istediğiniz sonucu almanız mümkün.

İyi çalışmalar.
Bazen daha ileriye ulaşmak için bir kaç adım geri gitmek mecburidir. Çünkü en ileri sıçrayışlar iki adım geriden başlar.
Cevapla
#4
(07-06-2020, Saat: 12:22)mrmarman Adlı Kullanıcıdan Alıntı: Konunun dosya boyutu ile ilgisi tablo aç / kapa dediğinizde tüm kayıtları göstermek üzere çekmeye çalışmak,  projenize ağırlık oluşturma potansiyeli var.

SQL konusuna giriş yapmanızı önerebilirim. Sadece sorduğunuz kadar cevap tablo oluşur.

SQL JOIN ile de verilecek şartlara göre farklı tabloları (master detail gibi belli şartlarda ilişki kurmak istediğiniz tablolar) kümeleyerek bir arada tek bir tablo elde etme imkanınız olur.  Idea


bende aynen dediğiniz gibi yapıyorum  sadece ilgili kayıtları alıyorumki aldığım kayıt sayısı max 3000 civarı.. sormak istediğim şuydu proje de yol sutunu path içeriyor görüldüğü gibi..
örnek 3000 kayıtta da aynısı yazıyor... tabloyu bölmesem benim daha da işime geliyor aslında .. örneğin 100 milyon kayıt olduğu zaman veritabanı boyutu da eşdeğer olarak çok fazla artacak sanırım.. örneğin 300 bin kayıtta 95 MB olan vt boyutu 300 milyon kayıtta eğer 95 gb olurmu ?olursa bu yüksek bir rakam değilmi.. bir veritabanı için
Cevapla
#5
Siz tabloyu bölmek derken fiziki olarak bölmekten kasıt...

Yıllara göre dinamik olarak bölünmüş database dosyaları kullanmak veritabanı dosya sağlığı açısından faydalı.

Kullanırken direkt dbgrid değil de listview vb liste kutusunda sunum yapılıyor ise basit bir kaç ek fonksiyon ile arama / güncelleme işlemleri halledilebilir.

Dosyaları aynı sql altında birleşik sorgu yapmak derseniz o zaman sıkıntı olabilir, keza sunucu tabanlı veritabanlarında (embedded kullansanız dahi bir sunucu) fiziki dosya yolu ancak sunucu tarafından yönetildiğinden linked server vb. benzeri yapı geliştirilmiştir.

Önermek için söylemiyorum, örneğin MSAccess gibi local veritabanında bu kolayca mümkün.


Firebird 2.5 versiyonu ile gelen sql içinden ON EXTERNAL DATASOURCE anahtarını bir araştırın isterseniz.

bkz. bu link
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#6
(08-06-2020, Saat: 07:07)mrmarman Adlı Kullanıcıdan Alıntı: Siz tabloyu bölmek derken fiziki olarak bölmekten kasıt...

Yıllara göre dinamik olarak bölünmüş database dosyaları kullanmak veritabanı dosya sağlığı açısından faydalı.

Kullanırken direkt dbgrid değil de listview vb liste kutusunda sunum yapılıyor ise basit bir kaç ek fonksiyon ile arama / güncelleme işlemleri halledilebilir.

Dosyaları aynı sql altında birleşik sorgu yapmak derseniz o zaman sıkıntı olabilir, keza sunucu tabanlı veritabanlarında (embedded kullansanız dahi bir sunucu) fiziki dosya yolu ancak sunucu tarafından yönetildiğinden linked server vb. benzeri yapı geliştirilmiştir.

Önermek için söylemiyorum, örneğin MSAccess gibi local veritabanında bu kolayca mümkün.


Firebird 2.5 versiyonu ile gelen sql içinden ON EXTERNAL DATASOURCE anahtarını bir araştırın isterseniz.

bkz. bu link

Yok hocam bölmek derken yanlış terim kullandım master detail yapayım dedim ('YOL' sütunu sürekli tekrarlamasın veritabanı boyutu azalsın anlamında )  vt: firebird viewde birleştirirme yaparım..  program tarafınd biraz sıkıntım olacak ama olsun.. program performans açısından sıkıntım yok hocam .. sadece ilgili kayıtları çektiğim için ilerde.. dosya boyutuyla ilgili sıkıntım olurmu anlamında .. acaba master detail yapıp dosya boyutunu azaltsam mı ?
Cevapla
#7
Yeni durum çerçevesinde konuşuyorum (aynı veritabanı içinde dönüyoruz)

Bir tablo ile birden fazla tablo arasındaki (master detail ilişkili) fark:

Boyut olarak aynısı artı ek olarak tabloları birbiri ile ilişkilendirdiğiniz anahtar alan başlıkları kadar büyüme. 

Boyuttaki büyğmeye ek olarak index tablo büyüklüğünün index alan sayısı ile orantılı artması vb ile dosya boyutu daha da büyüme vs. bunlar kaçınılmaz.

Kazancınız olmayacak mı? Tabii ki olacak. Master tablo kayıt sayısı, Detay tablo kayıt sayısı kere katı kadar daha az sayıda olmasından kazanç ile dosya boyutu o bakımdan da tersine küçülecektir. 

Boş bir kağıt üzerinde dahi hesaplayabilirsiniz. Üstüne üstlük, en çok yer kapladığını düşündüğüm fotoğraf path alanını dahi bölerek hareket tablosuna dönüştürerek (detayı da master kullanmak) daha da yer kazanabilirsiniz. 

Büyüme / küçülme bence ikinci sırada öneme sahip, çünkü doğru veritabanı alan tipleri, anahatar alan sayısı, index alan sayısı ve tipi tercihi zaten olması gerekenden farklı bir büyüklük değildir.

İlk öncelik performanstır. Performans veritabanını az yorduğunuz anlamına da gelir, bu veritabanı için sağlık da getirir.

Önerim : Madem Master/Detail için kolları sıvıyorsunuz, bunu sadece iki tablo gibi düşünmeyin, veriyi optimize edecek daha çok sayıda tabloyu çekinmeden kullanın. Optimizasyon yük değil kazançtır. 

Sonuç : Fiziki dosya boyutuna ilişkin rakamlar, tablolarınızın yapısındaki veri tiplerine göre, o tipler için ayrılan alanlar oranında büyür. 

Zaten bu sorunuzu sorarken farkında olduğunuz açık. Bir sonraki yapılanmada bunu zaten göze alıyor olacaksınız. Yolunuz açık olsun.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#8
(08-06-2020, Saat: 08:23)mrmarman Adlı Kullanıcıdan Alıntı: Yeni durum çerçevesinde konuşuyorum (aynı veritabanı içinde dönüyoruz)

Bir tablo ile birden fazla tablo arasındaki (master detail ilişkili) fark:

Boyut olarak aynısı artı ek olarak tabloları birbiri ile ilişkilendirdiğiniz anahtar alan başlıkları kadar büyüme. 

Boyuttaki büyğmeye ek olarak index tablo büyüklüğünün index alan sayısı ile orantılı artması vb ile dosya boyutu daha da büyüme vs. bunlar kaçınılmaz.

Kazancınız olmayacak mı? Tabii ki olacak. Master tablo kayıt sayısı, Detay tablo kayıt sayısı kere katı kadar daha az sayıda olmasından kazanç ile dosya boyutu o bakımdan da tersine küçülecektir. 

Boş bir kağıt üzerinde dahi hesaplayabilirsiniz. Üstüne üstlük, en çok yer kapladığını düşündüğüm fotoğraf path alanını dahi bölerek hareket tablosuna dönüştürerek (detayı da master kullanmak) daha da yer kazanabilirsiniz. 

Büyüme / küçülme bence ikinci sırada öneme sahip, çünkü doğru veritabanı alan tipleri, anahatar alan sayısı, index alan sayısı ve tipi tercihi zaten olması gerekenden farklı bir büyüklük değildir.

İlk öncelik performanstır. Performans veritabanını az yorduğunuz anlamına da gelir, bu veritabanı için sağlık da getirir.

Önerim : Madem Master/Detail için kolları sıvıyorsunuz, bunu sadece iki tablo gibi düşünmeyin, veriyi optimize edecek daha çok sayıda tabloyu çekinmeden kullanın. Optimizasyon yük değil kazançtır. 

Sonuç : Fiziki dosya boyutuna ilişkin rakamlar, tablolarınızın yapısındaki veri tiplerine göre, o tipler için ayrılan alanlar oranında büyür. 

Zaten bu sorunuzu sorarken farkında olduğunuz açık. Bir sonraki yapılanmada bunu zaten göze alıyor olacaksınız. Yolunuz açık olsun.
peki hocam durum anlaşıldı. master detail yapacam. bilmediğim birşeyi söylediniz şimdi [size]... anladığım kadarıyla örneğin varchar alanına ayrılan alan değerini gereğinden fazla yükseltmemem gerekiyor .. doğrumu anlamadım acaba.
Cevapla
#9
Güzel özetlediniz, bu kadar uzun yazmama lüzum yokmuş  Smile

Müşteri kaydı ile ilişkili belirli bir algoritma ile sadece hedef klasör göstererek path kurabiliyor olmalısınız. 

Fotoğrafın dosya adı dahi algoritmik mümkün görünüyor. 

Bu durumda işi algoritmaya bırakıp sadece root path kaydı yapmak yeterli olacaktır.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#10
(08-06-2020, Saat: 06:42)info@guzelceker.com Adlı Kullanıcıdan Alıntı:
(07-06-2020, Saat: 12:22)mrmarman Adlı Kullanıcıdan Alıntı: Konunun dosya boyutu ile ilgisi tablo aç / kapa dediğinizde tüm kayıtları göstermek üzere çekmeye çalışmak,  projenize ağırlık oluşturma potansiyeli var.

SQL konusuna giriş yapmanızı önerebilirim. Sadece sorduğunuz kadar cevap tablo oluşur.

SQL JOIN ile de verilecek şartlara göre farklı tabloları (master detail gibi belli şartlarda ilişki kurmak istediğiniz tablolar) kümeleyerek bir arada tek bir tablo elde etme imkanınız olur.  Idea


bende aynen dediğiniz gibi yapıyorum  sadece ilgili kayıtları alıyorumki aldığım kayıt sayısı max 3000 civarı.. sormak istediğim şuydu proje de yol sutunu path içeriyor görüldüğü gibi..
örnek 3000 kayıtta da aynısı yazıyor... tabloyu bölmesem benim daha da işime geliyor aslında .. örneğin 100 milyon kayıt olduğu zaman veritabanı boyutu da eşdeğer olarak çok fazla artacak sanırım.. örneğin 300 bin kayıtta 95 MB olan vt boyutu 300 milyon kayıtta eğer 95 gb olurmu ?olursa bu yüksek bir rakam değilmi.. bir veritabanı için


Kapasite hesaplamak istiyorsanız hesap belli;

Tablonuzdaki tek 1 satırınız kaç bayt tutuyor ise kayıt sayısı ile çarpın. Buna keyleri, indexleri ve relation'ların kapladığı veri miktarını da katarsanız daha net bir cevap bulursunuz.

YouTube Delphi Tips

"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" P.Safa
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Master Detail Kayıt Silme Sorunu Frrst 9 470 22-10-2020, Saat: 23:45
Son Yorum: Frrst
  Master detail bağlantı da indexfieldname de alan bulamama sorunu Gumiho309 4 391 28-09-2020, Saat: 18:41
Son Yorum: Gumiho309
  Firebird Veritabanı Oluşturulması MEDCEZİR 4 768 25-07-2020, Saat: 14:17
Son Yorum: ihalilcoban
  Firebird - İçinde veri olan bir alanın tipini değiştirme habikus 3 843 07-06-2020, Saat: 23:32
Son Yorum: habikus
  Firebird veri tabanlı programda arama filitreleme baloglurecep 3 883 18-03-2020, Saat: 11:51
Son Yorum: anemos



Konuyu Okuyanlar: 1 Ziyaretçi