2010-02-22 36 views
8

Nếu bạn tạo một ứng dụng như twitter, bạn sẽ thiết kế hệ thống nhắn tin như thế nào?Bạn sẽ thiết kế hệ thống tin nhắn như thế nào twitter, cách thiết kế hệ thống nhắn tin?

Cụ thể tìm kiếm ý tưởng về mô hình dữ liệu cơ bản và cách bạn sẽ viết phương thức nhận tweet của người dùng rồi gửi nó cho tất cả người theo dõi?

dụ:

Tweets (tweetID, userID, message, datesend) 
User (userID, ...) 
Followers(userID, followerUserID) 

Inbox(userID, tweetID) 

là mô hình trên một điểm khởi đầu tốt?

Trước tiên, bạn có thể chèn tweet, sau đó đẩy tin nhắn vào hàng đợi không. Sau đó, một-by-một, có một tin nhắn ra khỏi hàng đợi và đẩy tin nhắn cho các thuê bao của nó?

(Tôi bỏ qua các chức năng điện thoại di động của twitter, chỉ cần tập trung vào các chức năng dựa trên web, nhưng tôi nghĩ đến việc sử dụng một hàng đợi ngay từ đầu nên người ta có thể thêm các chức năng khác sau này)

Trả lời

0

Tôi không nghĩ twitter sử dụng hàng đợi thông báo (hộp thư đến trong mô hình dữ liệu của bạn.) Tôi nghĩ rằng trong mọi thứ twitter được thực hiện qua ngày. Vì vậy, mỗi người dùng có một "ngày xem cuối cùng" và hàng đợi hộp thư đến/tin nhắn được tạo bằng cách tìm kiếm tất cả các tweet đã đăng ký sau ngày xem cuối cùng đó.

Vì vậy, để sửa đổi mô hình dữ liệu của bạn, hãy xóa hộp thư đến và thêm vào cột ngày xem cuối cùng cho người dùng.

Ngoài ra tôi hy vọng rằng thông tin người theo dõi sẽ không được lưu trữ như người theo dõi người dùng mà thay vào đó người dùng cung cấp cho người dùng đang theo dõi. Tất nhiên nó có thể được lưu trữ cả hai cách nhưng điều đó dường như có ý nghĩa hơn với tôi.

+0

hàng đợi thư và hộp thư đến là 2 thứ riêng biệt. – user275475

+1

@mrbux: Bạn đang đùa tôi phải không? Bạn cho tôi một -1 bởi vì đặc điểm kỹ thuật của bạn về vấn đề ngụ ý bạn đang nghĩ về vấn đề sai? Wow, điều đó dường như không có tinh thần SO chút nào. Chính xác thiết kế cơ sở dữ liệu của bạn là gì? Hộp thư đến làm gì? Tại sao bạn liệt kê nó trong câu hỏi của bạn? – Hogan

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