Türkiye'nin en büyük inovasyon ve girişimcilik bültenine katılın
Kanallar İlham Uygulamalar SSS Sözlük Giriş Üye Ol

Yazılım Geliştirme

/yazilim · 8.YIL

Fikirden çalışan ürüne yazılımın her hali: web, backend, veritabanı, mimari kararlar, kod kalitesi ve araçlar. Dil ve framework fark etmez; yazan herkesin ortak kanalı.

25 içerik Katıl
#yazılım geliştirme akışına dön
@selenca · 29 gün önce

veritabanı tasarımında sonradan pişman olduğum kararlar

Beş yıllık bir ürünün veritabanına bakınca, baştan farklı yapsaydım dediğim şeyler var. Aynı hataları yapmayın diye yazıyorum.

Kayıtları gerçekten silmek. Kullanıcı bir kaydı sildiğinde satırı siliyorduk. Sonra iki sorun çıktı: yanlışlıkla silinen veriyi geri getiremiyorduk ve raporlarda geçmiş tutarlılığı bozuluyordu.

Şimdi yumuşak silme kullanıyoruz, silinme tarihi işaretleniyor. Ama bunu sonradan eklemek bütün sorguları gözden geçirmeyi gerektirdi.

Tarih alanlarını zaman dilimsiz saklamak. Sunucu bir dilimde, kullanıcı başka dilimde. Raporlar tutmayınca sebebi bulmak günler aldı. Baştan zaman dilimi bilgisiyle saklamak gerekiyordu.

Para alanlarını ondalıklı sayı olarak tutmak. Yuvarlama hataları birikiyor. Tam sayı olarak en küçük birimde saklamak veya ondalık tip kullanmak gerekiyordu.

Durum alanlarını serbest metin yapmak. Sipariş durumu alanına metin yazılıyordu ve zamanla on farklı yazım oluştu. Tanımlı bir küme olmalıydı.

Her şeye otomatik artan kimlik vermek. Genelde sorun değil ama dışarıya açtığınız kimliklerde sıralı olması, kayıt sayınızı ve büyüme hızınızı dışarıya sızdırıyor.

Denetim izi tutmamak. Bir kaydın kim tarafından ne zaman değiştirildiği bilgisi sonradan çok gerekli oldu. Baştan koymak kolaydı, sonradan eklemek zor.

Aşırı normalleştirme. Teoride doğru ama her rapor için sekiz tablo birleştirmek gerekiyordu. Bazı alanları bilinçli tekrarlamak performansı ciddi rahatlattı.

En çok işe yarayan alışkanlık: her tabloya oluşturulma ve güncellenme zamanı eklemek. Maliyeti sıfır, faydası çok.
0 3 yorum
Yorumlar (3)
@bberber · 26 gün önce 2
Para alanı konusunda sonuna kadar haklısın, bu klasik ve pahalı bir hata.

Ondalıklı sayı tipi finansal hesaplama için uygun değil. Küçük yuvarlama farkları binlerce işlemde toplanınca mutabakat tutmuyor.

Bizde muhasebe ekibi aylarca fark arıyordu, sebebi buydu.

Çözüm olarak kuruş bazında tam sayı tutmaya geçtik. Görüntüleme sırasında bölüyoruz.

Geçiş acı verici oldu ama artık kuruş kuruşuna tutuyor.
@nikea · 23 gün önce 6
Aşırı normalleştirme maddesine katılıyorum ama dikkatli olmak gerekiyor.

Bilinçli tekrarlama performans kazandırıyor ama tutarlılık sorumluluğunu size yüklüyor. İki yerdeki veri ayrışırsa hangisi doğru sorusu çıkıyor.

Bizde işe yarayan yaklaşım, tekrarlanan alanı yazma anında tek kaynaktan türetmek ve asla elle güncellememek.

Bir de tekrarlanan alanların bir listesini tutuyoruz ki yeni gelen biri neyin türetilmiş olduğunu bilsin.

Belgelenmemiş tekrarlama en tehlikelisi.
@abdullahkurucay · 19 gün önce 5
Denetim izi maddesini vurgulamak isterim çünkü mevzuat tarafında da gerekiyor.

Kişisel veri işleyen sistemlerde kimin neye eriştiği ve ne değiştirdiği kayıt altında olmalı. Denetimde bu isteniyor.

Sonradan eklemek gerçekten zor, çünkü geçmiş veri için iz üretemiyorsunuz.

Baştan koyarken dikkat: denetim tablosu hızla büyüyor. Saklama süresi ve arşivleme planını da baştan düşünmek gerekiyor.

Biz bir yıl sonra denetim tablosunun ana tablodan büyük olduğunu fark ettik.