1

Konu: Bir tabloya bağlı birden fazla memo dosyası olabilir mi

Açtığım önceki konuda Çetin Bey VFP'nin 2GB'lik tablo ya da memo dosyası sınırından söz etti.

Benim projede hasta.dbf'de 4 memo field'ım var. Bildiğiniz gibi bunları VFP aynı adlı (hasta.fpt) tek bir memo dosyasında saklıyor. Hiçbir dosyanın bu sınıra yaklaşmasını bile istemediğim için memo dosyasını bölmek istiyorum. Örneğin 2 memo field'ı bir dosyada öbürlerini de başka bir dosyada saklamak olası mıdır?

2

Re: Bir tabloya bağlı birden fazla memo dosyası olabilir mi

Ne yazik ki hayir:) Bir tablonun tum memo fieldleri ayni fpr dosyasinda tutuluyor.
Biraz garip ve zor gelecek belki ama ideal dosya yapisinda o memolarin her biri icin ayri tablo olsa daha iyi:

tablo1: hastaID, ...
tablo2: hastaID, memo1
tablo3: hastaID, memo2

Tabii bunun nedenini VFP dosyalari ile anlamak cok da kolay degil. Hani VFP disina da yayilir, SQL server, .Net filan kullanmaya baslarsin diye. SQL server acisindan da cok onemli degil aslinda. O oldukca guvenilir ve hizli hallediyor. .Netde ise perfromans acisindan iyi bir secim olarak karsina cikabilir. Soyleki,
10000 tane hasta kaydini aliyorsun diyelim. Eger memolar bu tablonun uzerindeyse (adres, notlar, anamnez vs) onlari da aliyorsun demektir. Halbuki pratik olarak bu memolarin icinde belki 3 belki 5'i ise yarayacak. Onun yerine sadece onemli birkac kolonluk hasta dosyasini alarak hizli bir sistem olusur. Hastanin uzerine gittiginde o sirada milisaniye duzeyinde eger henuz alinmadiysa memolari alinir. O milisaniyeler tek dosyada hepsi oldugunda 10000*birkac milisaniyelik yuk olacakti (nedense yasandikca isin kolayina kacmaktansa boyle mimari detaylara taktim:)

3

Re: Bir tabloya bağlı birden fazla memo dosyası olabilir mi

Ben kişisel olarak .NET ya da SQL server'a geçmeyi düşünmüyorum. Çünkü bunun için hem zamanım yok hem de gerçekten karmaşık görünüyor.
Aslında ben Clipper'da prg yazarken işi şöyle çözümlemiştim. Halen birkaç kuruluşta kullanılan prg böyle.
Makro, mikro, tanı ve yorum gibi 4 memo olabilecek field kullandım. Olabilecek diyorum çünkü bunları memo yerine Ch türünde oluşturmuştum. Çünkü Clipper'ın harika bir özelliği vardı benim için. O da bir karakter field'ın en fazla 65535 (!) karakterden oluşabiliyor olması idi. Bildiğiniz gibi VFP'de bu rakam 254'dür.
Ben örneğin mikroskopik özellikleri 3 dosyaya bölmüştüm. İlk 280 karakterlik bölüm ana tabloda (hasta.dbf), öbür 280 karakterlik bölüm mikro2.dbf'de geri kalan bölüm de (1400 karakterlik, çünkü daha uzun mikroskopik tanımlama yapılmıyor genelde) mikro3.dbf'de saklanıyor. Tabii bu iş çok kod ve emek demekti benim için. Benim Clipper'da memo kullanmamın nedeni şuydu. Diyelim 10 satırlık bir tanımlama yaptım ve kaydettim. Ancak uzun olduğunu düşünüp kısalttım, 2 satır yaptım. Clipper bu memonun boyutunu kısaltmıyordu. Biliyorsunuz bir zamanların hard diskleri daha küçük kapasiteli idi ve birkaç byte'ın bile önemi vardı. Ayrıca Cippper'ın da sınırlarını zorlamak istemiyordum.
Burada bir şey sormak istiyorum. VFP'de denedim ama birkaç kayıt üzerindeki küçük denemelerdi bunlar. VFP, memo boyutunu uzatıp genelde kısaltabiliyor. Ama büyük boyutlu kısaltmalar yapmadım.
Acaba VFP'deki memo field'ında belirgin uzatma ve kısaltmalar yapsam (örneğin 4000 karaktelik bir memo texti yazsam ve kaydetsem, sonra da 500 karaktere düşsem) memo dosyası da uzayıp (tabii ki uzar ama) kısalabilir mi? Yoksa arada PACK mi yapmam gerek.

Teşekkürler...

4

Re: Bir tabloya bağlı birden fazla memo dosyası olabilir mi

Çetin Bey,
Bir önceki iletimde yazmayı unutmuşum; haklısınız bence de her memo field'ın ayrı dosyası olabilmeli. Tıpkı index dosyaları gibi, tek tek indeks dosyaları yapabiliyoruz ama bileşik (.cdx ) indeksler de yapabiliyoruz. Onu gibi olmalı.

5

Re: Bir tabloya bağlı birden fazla memo dosyası olabilir mi

Clipper yavasti ama:)
VFP memolarda senin kullandigin kayıt duzeyinde kafana takma derim uzayıp kısalmasını. Kesin kısalır diyemiyorum, eskiden sorsan kısalmaz pack yap derdim ama VFP9da oldukca optimize edilmis durumda artık.