2010-08-22 41 views
9

Tôi có một ứng dụng mà thực thể chính là Story và người dùng có thể bỏ phiếu cho mỗi câu chuyện. Mỗi phiếu bầu tăng vote_count cho câu chuyện.Cách sắp xếp theo bộ đếm khi sử dụng bộ đếm được phân loại

Tôi lo ngại về việc viết tranh chấp về câu chuyện nên tôi định sử dụng sharded counter cho mỗi câu chuyện để theo dõi phiếu bầu.

Bây giờ câu hỏi của tôi: làm thế nào tôi có thể nhận được một danh sách các câu chuyện được sắp xếp theo số phiếu bầu? Ví dụ: hiển thị 50 câu chuyện có số phiếu bầu cao nhất.

Suy nghĩ ban đầu của tôi là chạy tác vụ định kỳ đọc giá trị bộ đếm và cập nhật thuộc tính trên câu chuyện thực tế. Nó sẽ là OK rằng kết quả của các truy vấn bằng cách bỏ phiếu đã hơi lạc hậu.

Trả lời

2

Có vẻ như bạn có thể đang thực hiện một chút tối ưu hóa sớm. Tôi sẽ bỏ qua các quầy giao dịch cho đến khi nó trở nên rõ ràng rằng bạn cần chúng. Nếu bạn khá chắc chắn bạn sẽ, sau đó bằng mọi cách, bắt đầu với họ. Đối với việc chạy một tác vụ định kỳ và bộ nhớ đệm dẫn đến một thuộc tính cho mỗi câu chuyện, đó có thể là một tối ưu hóa sớm khác.

Tôi không có kinh nghiệm trực tiếp với công cụ ứng dụng của Google để hy vọng ai đó sẽ có một số thông tin để chia sẻ.

+1

Re tối ưu hóa sớm: Tôi đồng ý rằng nó có thể là quá mức cần thiết cho một ứng dụng mới mà không cần phải tranh luận, nhưng xem xét đây là một câu hỏi học tập và giả định ứng dụng sẽ nhận được 10 lần viết/giây. – cope360

+0

Đó là một câu hỏi thú vị. Tôi chưa bao giờ nghe nói về các quầy đã được giải quyết trước đây nên tôi mong đợi nhiều phản hồi hơn. –

+0

Tôi đã thêm một liên kết cho câu hỏi nếu bạn muốn xem cách chúng hoạt động. – cope360

1

Định kỳ thêm dữ liệu có thể là một chiến lược tốt để chống lại sự phân tán của bộ đếm.

Bạn cũng có thể thử các chiến lược khác để đếm vẫn không mảnh, như đã được mô tả ở những nơi khác:

http://blog.notdot.net/2010/04/High-concurrency-counters-without-sharding

(có bạn giữ truy cập của bạn trong memcache, và định kỳ tuôn ra những giá trị tích lũy cho kho dữ liệu)

Ứng dụng của bạn có tính đến các lỗi tính nhẹ không?

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