ASP, Tarih, Veritabanı
HTML ilk olarak uğraşmaya başladığımda bir yere bir tarih yazmak istediğimde <b>30.12.3002 Perşembe</b> yazmam yeterli oluyordu. Ama sayfa ve güncelleme sayısı arttıkça bu ve bu gibi işler içinden çıkılmaz bir hal almaya başlamışlardı. Oldukça uzun bir süre böyle cebelleştik. Ama gün geldi "ve Microsoft, ASP' yi yarattı." Artık hiçbir şey eskisi gibi değildi. Her şey çoook güzeldi.
Ama bir gün, iş evimde kendi ülke ayarlarımdan farklı bir sunucuda dosyalarımı host etmeye geldiğinde ASP ile yazdığım sitenin çuvalladığını gördüm. Tarihler 30.12.3002 değil de 12/30/2002 şeklinde çıkmaya başladı. (Titiz bir insan için önemli bir problem.)
İşte o zaman bir karar verdim. "Ne gerek var, bu tarih formatına" dedim. Tamam işler daha kolaydı. İşimi kolaylaştıran bir çok artısı vardı. Ama karşı sunucuda işler umduğum gibi gitmiyordu. Böylece tarihleri kendi formatımda saklamaya ve gerekli dönüşüm fonksiyonları ile ekrana yazdırmaya başladım. VB Script' in Mid() fonksiyonu bu işler için tam biçilmiş kaftandı.
Tarihleri, artık veritabanında tarih tipinde değil metin tipinde 8 karakterlik bir alanda saklamaya başlamıştım. Sıralamada sorun yaşamamak için YILAYGUN (30021230) şeklini benimsedim. 2 karakter deyip geçmemek gerek. Biraz hesaplama yapıldığında aslında ne kadar vahim bir durum olduğu ortaya çıkar.
| Kayıt Sayısı | Alan Sayısı | 1 Char Boyut (KB) | 2 Char Boyut (KB) |
| 1.000 | 1 | 0,98 | 1,95 |
| 10.000 | 1 | 9,77 | 19,53 |
| 100.000 | 1 | 97,66 | 195,31 |
| 1.000.000 | 1 | 976,56 | 1.953,13 |
| 10.000.000 | 1 | 9.765,63 | 19.531,25 |
| 1.000 | 2 | 1,95 | 3,91 |
| 10.000 | 2 | 19,53 | 39,06 |
| 100.000 | 2 | 195,31 | 390,63 |
| 1.000.000 | 2 | 1.953,13 | 3.906,25 |
| 10.000.000 | 2 | 19.531,25 | 39.062,50 |
| 1.000 | 3 | 2,93 | 5,86 |
| 10.000 | 3 | 29,30 | 58,59 |
| 100.000 | 3 | 292,97 | 585,94 |
| 1.000.000 | 3 | 2.929,69 | 5.859,38 |
| 10.000.000 | 3 | 29.296,88 | 58.593,75 |
| 1.000 | 4 | 3,91 | 7,81 |
| 10.000 | 4 | 39,06 | 78,13 |
| 100.000 | 4 | 390,63 | 781,25 |
| 1.000.000 | 4 | 3.906,25 | 7.812,50 |
| 10.000.000 | 4 | 39.062,50 | 78.125,00 |
Tablo 1 - Kayıt sayısı ve Alan Sayısı Faktörlerin göre 2 bytelık bilginin kapladığı alan.
Yukarıdaki tabloda 2 byteçık bilginin nelere yol açabileceğini sergilemeye çalıştım. Belki 10 Milyon kayıt biraz abartılı olabilir ama .mdb içindeki 100.000 kayıt hiç de abartılı değil. Veritabanımız içinde tarih sakladığımız 4 adet alan olması halinde yaklaşık 780 KB' lik fazla yer işgali ile karşı karşıya kalırız. Size rahatlıkla söyleyebilirim ki 5 tablodan oluşacak ufak bir uygulamanızda bile ortalama 10 adet alanda tarih saklamak zorunda kalırsınız. Yüksek trafikli sitelerde size getireceği yükü hayal edebilirsiniz...
Ayrıca, hosting aldığınız firmaya ülke ayarlarını kurdurmanın zorlukları ve/veya imkansızlıkları düşünüldüğünde yöntem geleneksel ama işe yarar bir yöntemdir.
