5

Çok sayıda "hesaplanmış" veya "birleştirilmiş" veri içerecek bir Rails uygulaması yapıyorum, yani kullanıcı tarafından saklanan veriler üzerinde pahalı işlemler gerçekleştirerek hesaplanan bilgiler. Bu verileri saklamak için bir yol ihtiyacım var diye düşünüyorum. A. Sürekli olarak pahalı DB işlemleri yapmıyorum, ve B. Bu nedenle, verilen öznitelikler için zaman çizelgeleri üzerinde güzel grafiklerle "raporları" tükürdüm.Toplu bilgi depolayan raylar

Bunu yapmanın en iyi yolunun ne olduğunu merak ediyorum. Verilen bir model için değerleri (sayısal) hesaplamak ve saklamak ve bunların zaman içinde nasıl değiştiğini anlamalıydım. Bunun verimli olmasını ve çoğaltılmasını ve veriden kaçınmasını istiyorum. Kayıtlar oluşturulduktan sonra hemen hemen sabit olacak, bu yüzden dikkate alınması gereken şeylerin çok fazla değişmesi konusunda endişelenmem gerekmiyor.

Bunun için en yaygın yaklaşımın ne olduğunu ve bunu bir Rails uygulamasında nasıl uygulamaya koymam gerektiğini merak ettim.

cevap

1

Benzer bir sorun üzerinde çalışıyorum ve bunu yanlış yapan uygulamalarda da çalıştım. İşte

benim en iyi uygulamaları tavsiye: en, let

  • Mağaza modelinde ham veri araması Feed
  • hesaplanmış değerleri tutan başka modele bire-bir ilişki kurma olduğunu , Örneğin FeedStats. Bu, tam davasına bağlı olarak, bire çok bir ilişki veya çoktan bire olabilir; Bazı bireysel Feed kayıtlarını bir çeşit toplamaya dönüştürebilirsiniz.
  • Tüm orijinal ham verileri saklayın. Bu, daha sonra, başka bir algoritmaya hesaplamayı değiştirmek istiyorsanız ve eski verileri yeniden derlemeniz gerekebilirse veya hesaplamada hatalar bulursanız çok yararlı olacaktır.
  • Bir arka plan görevinde hesaplamayı ayarlayın. Resque (Scheduler ile veya programsız), DelayedJob veya benzeri araçlar.

Biraz daha spesifik olabilir ve kesin sorununuza örnek olarak verebilirseniz, belki de bazı daha ayrıntılı ipuçları verebilirim. İyi şanslar.

+0

Yanıtınız için teşekkürler, her biri sayısal özelliklere sahip birkaç modelim var (bazı db sütunları, değerleri hesaplayan bazı yöntemler). Zaman içinde bu değişiklikleri değiştirmek istiyorum. Sanırım en basit yöntem, aralıktaki tüm değerleri seçip önbelleğe yerleştirilmiş rayları kullanarak bu sorguyu önbelleğe almak olurdu. Bu istatistikleri üretmek için standart bir yöntem olup olmadığını merak ettim mi? Ben doğru satırları boyunca görünüyor bu gem gördüm: https://github.com/acatighera/statistics - tekrar teşekkürler :) – Fred

+0

Ben bu genelinde koşmadım, ama ilginç görünüyor. –