5

Tôi đang tạo ứng dụng Rails sẽ có rất nhiều dữ liệu "được tính toán" hoặc "tổng hợp", tức là thông tin được tính bằng cách thực hiện các hoạt động tốn kém trên dữ liệu do người dùng lưu trữ. Tôi nghĩ rằng tôi cần một số cách để lưu trữ dữ liệu này để A. Tôi không liên tục thực hiện các hoạt động DB đắt tiền, và B. Vì vậy, tôi có thể nhổ ra "báo cáo" với đồ thị đẹp theo thời gian vv cho các thuộc tính nhất định.Đường ray lưu trữ thông tin tổng hợp

Tôi tự hỏi cách tốt nhất để thực hiện điều này là gì? Tôi cần phải tính toán và lưu trữ các giá trị (số) cho một mô hình cụ thể và cách chúng thay đổi theo thời gian. Tôi muốn điều này có hiệu quả và tránh trùng lặp và dữ liệu. Các hồ sơ sẽ được sửa chữa khá nhiều khi được tạo ra, vì vậy tôi không cần phải lo lắng về những thứ được thay đổi quá nhiều, mặc dù nó cần phải được xem xét.

Tôi chỉ tự hỏi phương pháp phổ biến nhất cho điều này là gì và cách tôi nên thực hiện điều này trong ứng dụng Rails?

Trả lời

1

Tôi đã làm việc trên một vấn đề tương tự và tôi cũng đã làm việc trên các ứng dụng đã làm điều này một cách sai lầm.

Đây là thực hành tốt nhất đề nghị của tôi:

  • Store dữ liệu thô trong mô hình, chúng ta hãy gọi là Feed
  • Thiết lập một hiệp hội một ngày-một đến một mô hình chứa các giá trị tính toán , ví dụ FeedStats. Điều này cũng có thể là một liên kết một-nhiều hoặc nhiều-một, tùy thuộc vào trường hợp chính xác; bạn có thể cuộn lên một số bản ghi Feed riêng lẻ thành một số loại tổng hợp, v.v.
  • Giữ tất cả dữ liệu thô ban đầu. Điều này sẽ cực kỳ hữu ích nếu sau này bạn muốn chuyển đổi tính toán sang một số thuật toán khác và bạn có thể cần phải tính lại dữ liệu cũ hoặc nếu bạn phát hiện lỗi trong tính toán, v.v.
  • Thiết lập tính toán trên nền, sử dụng các công cụ như Resque (có hoặc không có Scheduler), DelayedJob hoặc tương tự.

Nếu bạn có thể cụ thể hơn một chút và đưa ra một số ví dụ về vấn đề chính xác của bạn, tôi có thể cung cấp một số mẹo cụ thể hơn. Chúc may mắn.

+0

Cảm ơn bạn đã trả lời, tôi có một vài mô hình với các thuộc tính số (một số cột db, một số phương pháp tính giá trị). Tôi muốn vẽ đồ thị những thay đổi trong những thời gian này. Tôi đoán phương pháp đơn giản nhất là chỉ cần chọn tất cả các giá trị trong phạm vi và lưu truy vấn này bằng cách sử dụng các đường ray được tạo trong bộ nhớ cache. Tôi chỉ tự hỏi nếu có một phương pháp tiêu chuẩn để sản xuất số liệu thống kê như vậy? Tôi đã nhìn thấy đá quý này trông dọc theo dòng bên phải: https://github.com/acatighera/statistics - Cảm ơn một lần nữa :) – Fred

+0

Tôi đã không chạy qua này, nhưng có vẻ thú vị. –

Các vấn đề liên quan