Dr. Volkan Tunalı'nın Kişisel Blogu

Bilgisayar, Teknoloji, Bilim, Sanat

Database Smells

leave a comment

Programlamada “code smells” olarak bilinen bir kavram vardır: artık refactor (yeniden düzenleme) edilme zamanı gelmiş olan kod kendini belli etmeye başlar. Örneğin çok uzun metodlar, kopyala-yapıştır ile çoklanmış kod blokları kötü kokmaya başlar, temizliğe gerek vardır.

Scott Ambler ve Pramod Sadalage, “Refactoring Databases: Evolutionary Database Design” isimli kitaplarında veritabanı tasarımına “Database Smells” diye bir kavram getirdiler. Aşağıda, bir veritabanının yeniden düzenlemeye ihtiyacı olduğunun bazı göstergelerini kısa maddeler halinde bulacaksınız.

  • Çok amaçlı kolon: Eğer bir kolon birden çok amaçla kullanılıyorsa, muhtemelen o kolonu anlamlandırmak için kod tarafında ekstra çaba sarfediliyordur ve muhtemelen bu iş diğer bazı kolonlardaki değerlere bağlı olarak yapılıyordur.
  • Çok amaçlı tablo: Benzer şekilde, çeşitli türdeki varlıkları aynı tabloda saklamaya çalışmak da tasarımda bir kusur olduğunun göstergesidir.
  • Çoklanmış veri: Aynı verinin veritabanın bir çok yerinde bulunması zaman içerisinde tutarsızlıklar oluşmasına yol açabilir.
  • Çok fazla kolonu olan tablo: Bir tabloda çok fazla kolon olması genellikle o tabloda çeşitli türlerde varlıklara ait veri tutulmaya çalışılmasından ileri gelir.
  • Çok fazla satırı olan tablo: Büyük tablolar performans sorunlarını da beraberinde getirir. Mümkün ise bazı kolonların ya da bazı satırların başkta tablolara dağıtıldığı bir tasarıma gidilmesi ciddi performans kazancı sağlayacaktır.
  • Akıllı kolon: Akıllı kolon, kolon verisinin değişik bölümlerinin değiişik anlamlara geldiği kolonlardır. Örneğin, müşteri numarasının ilk 4 hanesi müşteri grubunu, sonraki 2 hanesi kayıt yılını vs. gösteriyor olabilir. Bazen de bir kolonda komple XML olarak veri tutuluyor olabilir. Ancak bu tür kolonlarda ayrıntılara inmek ekstra işlemlerin yapılmasını gerektirir. En iyisi bu tür kolonları yeniden organize etmektir.
  • Değiştirmekten korkmak: Eğer veritabanı şemasında bir değişiklik yaparak birşeyleri bozmaktan korkuluyorsa, o veritabanının yeniden düzenlenme zamanı gelmiştir. Eğer bu yapılmazsa, ileriye dönük olarak işler sadece daha da kötüleşecektir.

Ambler ve Sadalage, kitaplarında bu kötü kokular için yeniden düzenleme tekniklerini hem veritabanı şeması olarak hem de SQL ve çeşitli dillerde kod örnekleriyle anlatıyorlar.

Kaynak: “Refactoring Databases: Evolutionary Database Design“, Scott Ambler & Pramod Sadalage.

Written by vtunali

Kasım 21st, 2009 at 9:40 pm