2009-06-26 5 views
5

Firmamız belirsiz ölçümleri hesaplamak raporlar sever.Hesaplama ağır sorgular için find_by_sql alternatifleri nelerdir? ruport en yakut tabanlı yetenekleri sadece çok yavaş activerecord en (find_by_sql hariç) bulma ve birlikte hesaplanamaz ölçümleri -

veritabanı katmanında büyük hesaplamaları yapacak bir eklenti veya orada mücevher veya db adaptörü var mı? Karmaşık raporlar oluşturmak için çözümünüz nedir?

+0

Birçok insanın bu soruyu görüntülediğini görüyorum, ancak kimse ısırmak istemiyor. İnsanların bıçaklamadan mı yoksa ikiye mi girmesini yasaklayan bir şey var mı? – btelles

+0

Sorunun biraz muğlak olduğunu düşünüyorum .. konsept çok eğlenceli geliyor .. ama sizin özel senaryonuz yeterince açıklanmayabilir. –

+0

Bence, raporlarınızı almak için SQL kullanarak yanlış bir şey var. Yüzde 80-20 kuralını hatırlayın: ActiveRecord, CRUD sorununuzu çözmenizi kolaylaştırırken, diğer yüzde 20'si size kalmış. Ayrıca, deneyim raporlarımda uygulamanızda kullandığınız modellerle ilgili bir şey yok. – Igor

cevap

0

ActiveRecord'un karmaşık sorgular için gereksinim duyduğunuz eksiğinden yoksun olduğunu düşünüyorsanız, ORT'niz için DataMapper veya Sequel'u kullanarak bakmak isteyebilirsiniz. ActiveRecord'dan uzaklaşmak büyük olasılıkla bir karar olmayacaktır, ancak en azından araştırmaya değer olabilir. senin tablolar normalize edilebilir sanki

+0

Şu an bu projede bunu yapmak için biraz geç olsa da, bu seçimimizin ilerleyeceğine inanıyorum. DataMapper'a fazla bakmadım, ama bu konuda çok güzel hikayeler duydum. Teşekkürler Pete! – btelles

1

Thoughtbot en Sincap eklentisi, çok katmanlı Koşullamalar ile ActiveRecord en bulmak yöntemine Yakut-imsi işlevselliği bir sürü ekler aralıkları ve iç içe modeli dernekler:

www.thoughtbot.com/projects/squirrel/

+0

Mükemmel fikir! "Nerede" ifadelerini daha etkili bir şekilde üretmek için arama ve sincara baktık ama karşılaştığımız problem, bir sorguda birden fazla alan arasındaki değerleri hesaplamaktır. Bu özel kullanımda bunların yararlı olup olmayacağından emin değilim. vaka. Ama yaparlarsa haberim olsun! – btelles

1

Raporlarınızda SQL görünümü veya saklı yordam kullanımını engelleyen herhangi bir özellik var mı? Belirli bir projede

, sık sık yararlı buluyorum bir tekniktir veritabanında adlandırılmış görünüm olarak SQL sorgusu (oldukça karmaşık olabilir) oluşturun ve sonra geri çekmek için

YourModel.connection.select_all(query) 

kullanmaktır veri. Bu optimal bir yaklaşım değil; Geliştirmeleri keşfetmeye hevesliyim. Eğer önerildiği gibi

yazık ki, raylar içinde bilgisayar karmaşık veritabanı bazlı raporlar yapmak için destek oldukça sınırlı görünmektedir.

+0

Evet, mağazamızın bu seçeneği gerçekten beğenecek bir SQL gurusu var. Ve pragmatik bir yaklaşım gibi görünüyor ... Ben bir sorunum yok, bir tane kurtarmak ... bir veritabanı tipine özgü saklı yordamları içeren geçişler oluştururken db agnosticism sürdürmek biraz zor. Görüntüleme kesinlikle kapmak için kesinlikle! Giriş için teşekkürler ve geç cevap için özür dilerim! – btelles

2

değil veritabanı agnostik olmasına rağmen, bizim çözüm Ruby ve ActiveRecord kullanmak gerçekten yavaş olur plpgsql işlevleri.

+0

Evet, gerçekten db agnostik bir şeyle uğraşmaya çalışıyoruz. Girdi için teşekkürler! – btelles

1

geliyor. Çalıştığım bir yerde, yaptığımız normalleştirme miktarı raporlama ihtiyaçlarımızı etkiliyordu, bu yüzden bir grup toplam veri içeren gölge tabloları oluşturduk ve buna karşı bir rapor hazırladık.

Ben soru biraz muğlak olduğunu Neil N'in yorum katılıyorum, ama belki de bu doğru yönde ilerlediğini alacak?

+0

Evet, soru kesinlikle belirsiz. Ancak, veri normalizasyonu biraz farklı bir problemi çözecek ve verilerimizi normalleştirecek olursak, muhtemelen sorgular biraz daha yavaşlar. Yine de katkıda bulunduğunuz için teşekkürler! – btelles

+0

Demek istediğim, raporlama amacıyla normalleştirmeyi düşünmüyordu. –