SORU
24 ŞUBAT 2011, PERŞEMBE


Nasıl Kullanıcı Tanımlı Alanlar için bir veritabanı tasarımı için?

Benim gereksinimleri şunlardır:

  • Edebilmek için gereken dinamik olarak Kullanıcı Tanımlı veri türü alanları ekleyin
  • UDF hızlı bir şekilde sorgulamak gerekiyor
  • UDF veri üzerinde hesaplamalar yapmak gerekiyor
  • UDF veri türüne göre sıralamak gerekiyor

Diğer Bilgiler:

  • Performans için öncelikle bakıyorum
  • UDF veri bağlı olan birkaç milyon Master bir kayıt vardır
  • Ben en son kontrol ettiğinde, 50mil üzerinde mevcut veritabanı UDF kayıtları vardı
  • Çoğu zaman, bir UDF sadece Master kayıtları, hepsi değil, bir kaç bin bağlıdır
  • UDF veya anahtarları olarak katıldı kullanılmaz. Sadece veriler veya raporlar için kullanılır

Seçenekler:

  1. StringValue1, StringValue2... İntValue1, İntValue2, vb, büyük bir tablo oluşturun. Bu düşünceden nefret ediyorum, ama eğer birisi başka bir fikir daha iyi olduğunu bana söyleyebilir eğer bunu dikkate alacak ve neden.

  2. Gerektiğinde talep üzerine yeni bir sütun ekler dinamik bir tablo oluşturun. Ben de her sütun endeksli sürece performansı yavaş olur bu yana bu fikri sevmedim.

  3. Tek bir tablo UDFName, UDFDataType ve Değer içeren oluşturun. Yeni bir UDF ekledi geldiğinde, biz de bu verileri çeker ve belirtilen her neyse içine ayrıştırır bir Görünüm oluşturur. Ayrıştırma kriterleri dönüş BOŞ uymayan öğeler.

  4. Birden fazla UDF tablolar, veri türü başına bir tane oluşturun. UDFStrings, UDFDates, vb tabloları istiyoruz. Muhtemelen #2 ile aynı yapın ve oto üretecek yeni bir alan eklenir her zaman bir Görünüm

  5. Veri Türleri XML? Bu daha önce çalışmadım ama onlara söz gördük. Eğer benim istediğim sonuç, özellikle performans veriyorlar mı emin değilim.

  6. Başka bir şey mi?

CEVAP
1 Mart 2011, Salı


Eğer performans birincil endişe ise, #6... UDF başına bir tablo (gerçekten, bu #2) çeşitlilik gösterir) ile giderdim. Bu cevap bu durum için özel olarak tasarlanmış ve veri dağıtım ve erişim desenleri açıklaması nitelendirdi.

Artıları:

  1. Bazı UDF olduğunu gösterir çünkü küçük bir bölümü için değerleri genel veri kümesi, bir ayrı tablo en iyi verecek performans bu tablo yüzünden olacak olması gereken kadar büyük UDF desteği. Aynı durum ilgili endeksleri için de geçerlidir.

  2. Ayrıca toplamalardan veya diğer dönüşümleri için işlenmesi gereken veri miktarını sınırlayarak bir hız artışı elde. Bölme veri birden fazla tablo sağlar gerçekleştirmek için bazı verileri toplar ve diğer istatistiksel analiz UDF veri, katılın bu sonuca master tablo üzerinden yabancı anahtar için elde olmayan toplu bağlıyor.

  3. Tablo/sütun adları kullanabilirsiniz veri aslında ne olduğunu yansıtmaktadır.

  4. Veri türlerini kullanmak için tam kontrole sahip kısıtlamaları, varsayılan değerler, vb kontrol edin. verileri tanımlamak için etki alanları. Performans hit on-the-fly veri türü dönüştürme kaynaklanan hafife almayın. Böyle kısıtlamaları da yardım İLİŞKİSEL sorgu doktorları daha etkili geliştirmek planları.

  5. Hiç yabancı kullanmak gerekir anahtarları, yerleşik bildirimsel başvuru dürüstlük nadiren tarafından yapılır tetikleyici tabanlı veya uygulama düzeyi kısıtlama zorlama.

Eksileri:

  1. Bu tablolar bir sürü oluşturabilir. Şema ayrımı uygulayan ve/veya adlandırma kuralı giderecektir bu.

  2. Daha fazla uygulama kodu var UDF tanımını işletmek için gereken ve yönetimi. Bu bekliyorum hala daha az kod daha gerekli orijinal seçenekleri 1, 3, & 4.

Diğer Hususlar:

  1. Eğer bu konuda bir şey varsa yapacak veri doğası bu UDF toplandığı için mantıklı, bu durum teşvik edilmeli. Bu şekilde, bu veri öğeleri kombine edilebilir tek bir tablo. Örneğin, hadi renk için,UDF var boyut ve maliyet. Bu eğilim veri bunun en örneği. veri gibi görünüyor

     'red', 'large', 45.03 
    

    yerine

     NULL, 'medium', NULL
    

    Böyle bir durumda, bir ödemeniz gerekmez tarafından fark hız cezası 1 tabloda 3 sütun birleştirme birkaç değerleri NULL olur çünkü senin 2 Daha fazla tablo yapma,önlemek 2 daha az katılır gerektiğinde 3 sütun girmeniz gerekiyor.

  2. Eğer bir performans duvardan bir vurursan UDF o yoğun nüfuslu ve sık kullanılan, o olmalı o zaman eklenmek üzere kabul Ana Tablo.

  3. Mantıklı bir masa tasarımı sizin için kayıt bazen bir an, ama sayıları gerçekten büyük, seni de alırız ne tabloya bakarak başlamak gerekir bölümleme seçenekleri seçtiğiniz VERİTABANI yönetim sistemi tarafından sağlanır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009
  • Jucyber Tutoriais

    Jucyber Tuto

    8 EYLÜL 2009
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008