Uygulamanızda sql vs hesaplamaları gerçekleştirmek için artıları ve eksileri nelerdir
3* *tablo aşağıdaki alanlar vardır:
id (bigint),amount (numeric(19,2)),createddate (timestamp)
Hadi, yukarıda tablo var diyelim. Dün kayıtlara ulaşmak istiyorum miktarı kuruş baskılı alarak bir rapor oluşturur.
Yapmanın bir yolu java uygulamam hesaplamalar ve basit bir sorgu yürütmek için
Date previousDate ;// $1 calculate in application
Date todayDate;// $2 calculate in application
select amount where createddate between $1 and $2
ve kayıtlar arasında döngü ve benim java sent miktarda dönüştürmek uygulama ve rapor oluşturun
Başka bir yolu sql hesaplamalar kendisi sorgu gibi:
select cast(amount * 100 as int) as "Cents"
from shopkeeper where createddate between date_trunc('day', now()) - interval '1 day' and date_trunc('day', now())
ve kayıtlar arasında döngü ve rapor oluşturun
Bir şekilde , tüm işleme java uygulaması yapılır ve basit bir sorgu kovuldu. Diğer durumda tüm dönüşümleri ve Hesaplamalar Sql sorgu yapılır.
Yukarıda kullanma durumu sadece bir örnek, bir tablo, benzer tarzda işlem gerektiren pek çok sütun bulunabilir gerçek bir senaryo.
Performans ve diğer yönlerden daha iyi ve bu yüzden bana söyleyebilir misiniz?
CEVAP
Faktör - ama en önemlisi: çok bağlıdır
- hesaplama karmaşıklığı (bu terazi bu yana uygulama-sunucu, karmaşık çatırdayan yapmayı tercih ederimdışarı; bunun yerine db bir server daha, hangi ölçekler)
- veri veri, db server ne çok eğer bu toplamaları dizinler içinde yapılabilir eğer bant genişliği kaydetmek ve disk ıo/toplam erişim gerekiyorsa () hacmi
- kolaylık (sql tabanlı iş; kötü hata işleme için karmaşık iş - özellikle usul iş için pek iyi değil ama çok iyi için en iyi dil değil gerçi)
Her zaman olduğu gibi, Eğeryapınveri uygulama-sunucu geri, sütunlar ve satırlar en aza getirmek sizin yararınıza olacaktır. Sorgu ayarlı ve uygun bir şekilde dizine emin olmak ya da senaryo yardımcı olacaktır.
Tekrar not:
ve sonra kayıtları döngü
Döngükayıtlarda hemen hemen her zaman sql yanlış bir hamle - tabanlı bir yazma işlemi tercih edilir.
Genel bir kural olarakBen tercih etmeye devam veritabanı bu iş için en az "mağaza bu veri, bu veri getirme" - ancak, her zaman vardır örnek senaryolar nerede zarif bir sorgu sunucu kurtarabilir çok fazla bant genişliği.
Eğer bu çok fazla hesaplama gerektiriyorsa, bir yerde önbelleğe alınabilir? da göz önünde bulundurun:
Eğer isterseniz birdoğruem "hangisi daha iyi"; ikisi kod ve karşılaştır (ilk taslak olasılığı 0 olarak ayarlanmış olduğunu belirterek). Ama faktör, normal kullanım için: eğer gerçekliğin olmak diye 5 kere (ayrı) bir kez, sonra taklit: kiyaslama sadece bir tek "1 vs 1 Bu olanlar".
Kullanıcı kimliği olarak e-posta adres...
Bir ViewModelLocator nedir ve DataTemp...
Fs artıları ve eksileri nelerdir.vs fs...
Nasıl bir gerçekleştirmek için bir SQL...
İlişkisel bir Veritabanında Hiyerarşik...