6

İşimde, django modellerimde sıklıkla iki tablo var ve bunları örneğin csv olarak döndürmek için bunları birbirine bağlamak zorundayım. Bu veriler yabancı bir anahtarla bağlı değildir, ancak bunları bağlamak için bir tanımlayıcıları vardır. Bu, bu verileri iki farklı kaynaktan aldığımızdan ve bazen de karşı tarafın eksik olmasından kaynaklanmaktadır, bu yüzden girişi oluştururken onu bağlayamıyorum.Django modellerinde veri bağlantısı için Performans Optimizasyonu

Sorum şu: Bu verileri çoğunlukla bu verileri iade etmek zorunda olduğumu düşünürseniz performans açısından bu verileri bağlamanın en iyi yolu nedir?

  1. Yol: Veriyi (m2m gibi) veya üst sınıfı her ikisine de bağlı olan tanıtıcıya bağlayan yeni bir model oluşturun.
class OrderInvoiceConnector(models.Model): 
    order_data = models.ForeignKey(Order, related_name="invoice") 
    invoice_data = models.ForeignKey(Invoice, related_name="order") 
  1. Yolu: csv ihracat için gerekli olan yalnızca verileri kaydeder yeni bir model oluşturun. Bir şey gibi: Eğer katılmadan pahalı olacağını belirtildiği gibi
class ConnectedData(models.Model): 
    invoice_id = models.CharField(max_length=255) 
    country_iso = models.CharField(max_length=255) 
    invoice_date = models.CharField(max_length=255) 
    tax = models.FloatField(max_length=255) 
    price = models.FloatField() 
+0

Aşağıda doğru bir cevap vermek zor ama ne yapacağım hakkında yorum yapmaya çalışacağım ve belki yararlı olabilir ama birkaç şeye bağlı. Eğer kullanıcı bir CSV dosyasını indirmeyi bekliyorsa muhtemelen 2 seçeneğiyle devam ediyorum ama bu, verilerin ne sıklıkta değiştiğine ve ne kadar sürede üretileceğine bağlıdır. Küçük miktarlarda veri ile günde birkaç kez Tamam. Ayrıca bu CSV, kullanıcı tarafından django projesinde özelleştirilemezse, kullanıcı isteğinde bulunmadan önce CSV'yi oluşturmayı düşünürdüm. Aksi halde ilk seçeneğiniz. Bunu söyleyerek, bu bir çok şeye bağlı. –

+0

Performans sorununun ne olduğuna biraz daha bilgi verebilir misiniz? DB bir kaç saniye/dakika/saat sürer. Kullanıcı bunun için bekliyor mu? Veri ne sıklıkla değişiyor? –

+0

Veri, günde bir kez doğru değişiyor. Kullanıcı, csv'yi normal bir web sitesinden, filtreleme seçenekleriyle (ör. Tarihe göre filtreleme) indirebilir. Birleşme her bir sitede 150.000 veri seti için 2 saat alır. –

cevap

1

Ben, ikinci varyantı ile gider ve veri değişiklikleri günlük olarak üretilmektedir. Salt okunur bir model oluşturursanız, tek bir tablo sorgusunda kullanıcı tüketimi için gereken tüm verileri paketlersiniz. Verileri bazı otomatik işlerle doldurmanız gerekir, ancak söz konusu senaryoda kabul edilebilir görünüyor.

İlgili konular