2010-07-20 37 views
9

Tôi đang thực hiện một hệ thống danh tiếng Stackoverflow giống như trên trang web giải thích lời bài hát rap của tôi, Rap Genius:Cách tốt nhất để thực hiện Stackoverflow kiểu danh tiếng

  • Tốt giải thích: 10
  • Bad giải thích: -1
  • Giải thích rõ nhất về một bài hát: +30

Câu hỏi của tôi là cách triển khai thực hiện điều này. Cụ thể, tôi đang cố gắng quyết định xem tôi có nên tạo một bảng reputation_events để hỗ trợ tính toán lại danh tiếng hay không hoặc liệu tôi có nên tính toán lại từ đầu bất cứ khi nào tôi cần.

Bảng reputation_events sẽ có các cột cho:

  • tên (ví dụ, "good_explanation", "bad_explanation")
  • awarded_to_id
  • awarded_by_id
  • awarded_at

Bất cứ khi nào điều gì đó xảy ra ảnh hưởng đến danh tiếng, tôi chèn một hàng tương ứng vào reputation_events. Điều này giúp dễ dàng tính toán lại danh tiếng và tạo ra chuỗi các sự kiện có thể đọc được do con người tạo ra.

Mặt khác, mọi hành động nhất định đều có thể ảnh hưởng đến danh tiếng của nhiều người dùng. Ví dụ: giả sử người dùng A vượt qua người dùng B trên một bài hát cụ thể; dựa trên mục tiêu "Có giải thích nhiều nhất về bài hát", tôi sẽ phải nhớ xóa sự kiện "has_the_most_explanations" gốc của B (hoặc có thể tôi sẽ thêm sự kiện mới cho B?)

+1

Tôi thấy video này tuyệt vời: http://www.youtube.com/watch?v=Yn7e0J9m6rE –

+0

bản sao có thể có của [Làm cách nào để tạo hệ thống "danh tiếng" tương tự như StackOverflow bằng Rails?] (Http: // stackoverflow.com/questions/5719050/how-can-i-create-a-reputation-system-similar-to-stackoverflow-using-rails) – Hauleth

Trả lời

5

Nói chung, tôi không bao giờ thích dữ liệu tồn tại ở nhiều nơi. Có vẻ như bảng "reputation_events" của bạn sẽ chứa dữ liệu có thể được tính toán từ dữ liệu khác. Nếu vậy, tôi tính toán lại từ đầu, trừ khi tác động hiệu suất trở thành một vấn đề thực sự.

Khi bạn đã tính toán dữ liệu được lưu trữ, bạn có khả năng nó có thể không tương ứng chính xác với dữ liệu cơ bản - về cơ bản là trạng thái bị hỏng. Tại sao thậm chí làm cho nó có thể nếu bạn có thể tránh nó?

1

Tôi sẽ làm một sự kiện danh tiếng danh sách cho mục đích tính toán lại và có thể theo dõi lý do tại sao tổng giá trị đại diện là nó là gì.

Nhưng tại sao có cột "tên", tại sao không chỉ có giá trị với int dương hoặc âm?

Bảng này sẽ rất lớn, đảm bảo bộ nhớ cache của bạn.

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