Tôi tự hỏi điều gì sẽ là cách tốt nhất để thiết kế một ứng dụng xã hội nơi các thành viên thực hiện các hoạt động và theo dõi các hoạt động của thành viên khác bằng cách sử dụng Google AppEngine.Bạn sẽ thiết kế kho dữ liệu AppEngine cho một trang xã hội như Twitter như thế nào?
Để có nhiều cụ cho phép giả sử chúng ta có các thực thể:
- Người dùng người có bạn bè
- hoạt động mà đại diện cho hành động thực hiện bởi người dùng (cho phép nói mỗi người đều có một thông điệp chuỗi và một ReferenceProperty cho người dùng chủ sở hữu hoặc có thể sử dụng liên kết gốc thông qua khóa của appengine)
Phần khó khăn là theo dõi hoạt động của bạn bè, có nghĩa là tổng hợp các hoạt động mới nhất từ tất cả bạn bè của bạn. Thông thường, đó sẽ là sự kết hợp giữa bảng Hoạt động và danh sách bạn bè của bạn nhưng đó không phải là thiết kế khả thi trên appengine vì không có tham gia mô phỏng nó sẽ yêu cầu kích hoạt N truy vấn (trong đó N là số bạn bè) và sau đó hợp nhất trong bộ nhớ - rất tốn kém và có thể sẽ vượt quá thời hạn yêu cầu ...)
Tôi hiện đang nghĩ đến việc triển khai điều này bằng cách sử dụng hàng đợi trong hộp thư đến nơi tạo Hoạt động mới sẽ kích hoạt quy trình nền sẽ đặt khóa của hoạt động mới vào "hộp thư đến "của mỗi người dùng sau:
- Bắt 'Tất cả những người dùng theo dõi X' là một truy vấn appengine thể
- Không phải là một đầu vào hàng loạt rất tốn kém vào một thực thể "Hộp thư đến" mới về cơ bản lưu trữ các bộ (User, Activity Key).
tôi sẽ được hạnh phúc để suy nghĩ nghe trên thiết kế này hoặc gợi ý thay thế, vv
Tôi đã xem xét cùng một vấn đề và tìm thấy bản trình bày tuyệt vời (!) Này từ AppEngine, mà họ đã cung cấp tại Google I/O: http://www.scribd.com/doc/16952419/Building-scalable-complex -apps-on-App-Engine Tôi hy vọng bạn cũng sẽ thấy nó hữu ích. –