2012-06-11 27 views
7

Tôi đang bỏ qua một dự án nơi cần tạo nguồn cấp dữ liệu hoạt động của người dùng. Nếu người dùng A theo dõi người dùng B và người dùng B thực hiện một số người dùng hoạt động A, hãy xem nó trên trang chủ của mình.Giải pháp DB cho nguồn cấp dữ liệu hoạt động của người dùng

Bây giờ tôi đang tìm giải pháp DB để duy trì nguồn cấp dữ liệu người dùng. Khi người dùng B cam kết một số hành động, tất cả người dùng theo dõi người dùng B sẽ nhận được bản ghi. Tôi nghĩ rằng việc lưu một tài liệu mongodb cho một người dùng với một danh sách các tham chiếu đối tượng sẽ tốt hơn là lưu một tài liệu cho mỗi bản ghi nguồn cấp dữ liệu.

Mặt khác, sẽ có nhiều lần viết và thậm chí nhiều lần đọc hơn và mongodb có khóa trên bộ sưu tập. Có lẽ đây có thể là một vấn đề. Hoặc có thể Redis có thể được sử dụng cho việc này. Và redis có một cái gì đó với đồng thời. Tôi không có nhiều kinh nghiệm trong cả hai.

Câu hỏi tóm tắt là những gì sẽ tốt hơn để sử dụng cho tác vụ này: Mongo, Redis hoặc cái gì khác?

Cảm ơn bạn!

+0

Có vẻ như nền tảng cơ sở dữ liệu chưa được chọn? (Nếu không, khi đọc lần đầu, ban đầu nó nghe giống như bạn có một cơ sở dữ liệu hiện có và muốn một số loại thông báo sự kiện thay đổi dữ liệu, như trình kích hoạt hoặc thứ gì đó.) Nếu đây là giai đoạn phân tích ban đầu, và công nghệ cơ sở dữ liệu thực tế không được chỉ định cho bạn (bạn may mắn), sau đó tôi sẽ đưa ra kiến ​​trúc/thiết kế tổng thể (và các yêu cầu) trước khi cam kết với một công nghệ cơ sở dữ liệu cụ thể (và fwiw, Mongo và Redis là khá khác nhau: một là bộ nhớ trong bộ nhớ, khác là một cửa hàng liên tục.) – michael

+0

bạn sẽ sử dụng ngôn ngữ lập trình nào? – brycemcd

+0

@Bryce Tôi đang sử dụng python. –

Trả lời

2

Đảm bảo đánh giá neo4j. Nó được tạo ra cho nhiều trường hợp sử dụng giống nhau mà bạn mô tả.

+1

Db dựa trên đồ thị thực sự tỏa sáng khi tính toán nội dung liên quan đến 'bạn bè của bạn bè', nghĩa là: duyệt qua hơn 1 cạnh trong biểu đồ. Điều đó dường như không đúng ở đây –

2

Cassandra là lựa chọn đã được chứng minh cho nguồn cấp dữ liệu hoạt động tự lưu trữ mặc dù thường được coi là phức tạp để chạy và hoạt động.

Hiện tại, có các tùy chọn của bên thứ 3/được lưu trữ như GetStream.ioDynamoDB.

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