Büyük raporlama üzerinde karar vermek için yardımcı

4 Cevap php

Benim durumumda için görüş sormak istiyorum. Biz büyük bir tablo var. Ve aylık biz bu masada rapor yok. Biz PDF veya Excel dosyası olarak 20000 kayıtlarına kadar indirmek ve yazdırmak için ihtiyaç vardır. Ben gerçek zamanlı raporlar oluşturmak planlıyorum. Hiçbir peşin nesil. Benim sorunu çözmek için iyi bir yol var mı? veya u iyi bir fikrin varsa ben bunu duymak istiyorum.

Teşekkürler

4 Cevap

Ben tamamen sizin sorunuzu almıyorum; Gerçekten büyük tablolar veya birden gerçekten büyük masalarda eş zamanlı raporlama yapmak gerekiyor ama ne zaman, ne yapmak istediğim tüm toplamları önceden hesaplamak olduğunu.

Peki yerine sorguları gibi:

select count(*), sum(items) * price, datefield, type from bigtable bt join reallybigtable rbt on bt.id=rbt.rbtid where datefield between 'january 1, 2009' and 'january 31, 2009' group by type, datefield

Biz bir saklı yordam ikinci bir tabloya her gece günlük toplamları hesaplamak olacak - önceden hesaplanmış toplamları değil, sayma katılmadan ve bir ba-trilyonlarca kayıtlarını toplayarak meselesi değerinde 30 gün ekleyerek daha sonra onun sadece basit bir konu.

Bu pdf bir sürü oluşturuyor olacak eğer bağlıdır. Eğer sık ​​sık bu üreten, muhtemelen sürekli bu "büyük tabloyu" işlememek için 15 ila 30 dakika için son oluşturulan PDF önbelleğe için daha iyi bir fikirdir.

Tüm bu verileri almak için biraz zaman alacak ama gecikme sakıncası yoksa önceden bunu üretmek değil iyi bir çözüm olabilir.

Eğer PDF erişen bir sürü insan var, ve bir gecikme istemiyorum, ve veri çok hızlı değişmezse muhtemelen önceden onu üretmelidir. Sizin nesil aralığı veri bayat gider ne kadar hızlı ile tutarlı olmalıdır. Veri değişiklikleri, belki günde bir kez, bir günlük güncelleme normalde yeterli ise. Veri bir çok değişiyor Eğer her 30 dakika ya da öylesine getirici olabilir.

Yani PDF ve ne sıklıkta erişim olacak kim bağlıdır.

Eğer o büyük bir rapor üreten ediyorsanız, kullanıcıların sık güncellemeler beklediğiniz hayal etmek zor. Genel olarak, ben insanların en iyi günlük bazda tutarlı tekrarlanabilir görüşlerini indirmek mümkün olmaktan oldukça yüksek bir değer olduğunu anlamaya. Aslında, bu tutarlılık / tekrarlanma genellikle daha sık günlük daha rapor yenilemek, ve sonra sonuçları saklamak için iyi bir nedendir.

Belirli bir rapor günlük veya daha sık ihtiyaç olması pek mümkün değildir, bunu belirli bir gün için yarattığı ilk andan itibaren bir kopyasını depolayarak, tembel bir rapor oluşturma yapmak, ve belki de "RepABC_05032009.xls" gibi bir dosya adlandırma şeması şey kullanabilirsiniz belirli bir günün raporunda için bir belirteç olarak.

20000 kayıtları yüzden (bu kayıtları almak için sorgu yavaş / kompleks olmadığı sürece) kesinlikle iyi çalışacaktır "fly" üreten, gerçekten büyük değildir.

Bunu uygulamak çok daha kolaydır çünkü Excel kullanmanızı öneririz. Sadece çıkış csv veri (PHP bunun için hazır fonksiyonları vardır), ve yanıt uygun içerik başlığını gönderirler.

Yerine PDF Excel için bir diğer nedeni, kullanıcıların (özel not, vs ekleyerek, yatay / dikey düzeni, satır numaralarını değiştirmeden) yazdırmadan önce bazı küçük tweaks ve değişiklikler yapabiliyor olmasıdır.