MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cấu trúc tài liệu MongoDB tốt để truy vấn người dùng / người theo dõi hiệu quả nhất là gì?

Đây là một vấn đề kinh điển của người theo dõi người theo dõi và không có câu trả lời nào cho nó..Xem liên kết này:

mongo db thiết kế phần theo dõi và nguồn cấp dữ liệu, tôi nên nhúng vào đâu? Trên thực tế, tình huống này có lợi cho một lược đồ quan hệ, nếu MongoDB và máy chủ SQL là những lựa chọn duy nhất mà bạn có. Nhưng đây là một dạng vấn đề quan hệ đặc biệt, trong đó bạn có mối quan hệ hai chiều. Cơ sở dữ liệu biểu đồ có thể xử lý điều này tốt hơn:

http://forum.kohanaframework.org/discussion/10130/followers-and-following-database-design-like-twitter/p1

Vấn đề là, bạn có thể giữ người theo dõi hoặc người được theo dõi trong tài liệu Người dùng, nhưng không phải cả hai, để tránh các vấn đề xóa hai lần. Vì vậy, nếu bạn phải theo dõi MongoDB, một cách thoát ra có thể là .. (giả sử mọi người không theo dõi / hủy theo dõi bất kỳ ai đó thường xuyên),

Chỉ giữ lại những người theo dõi trong tài liệu, bởi vì khi tôi xem hồ sơ của mình, tôi sẽ quan tâm đến những người tôi theo dõi .. (đó là lý do tôi theo dõi họ ngay từ đầu, phải không?) .. Và sau đó thực hiện một truy vấn như:

db.Users.find({ user_id : { $in : followees })

Điều này sẽ cho biết tất cả những ai đang theo dõi tôi (giả sử id của tôi là 'user_id').

Một lý do khác khiến tôi không đề xuất cách khác là .. một người có thể theo dõi nhiều nhất 30-40 người, vì vậy tài liệu Người dùng lưu trữ 30-40 người theo dõi sẽ không sao giống như tài liệu Người dùng lưu trữ hàng nghìn người theo dõi! Với cách tiếp cận theo dõi trong tài liệu, bạn sẽ có được một tài liệu Người dùng có kích thước gần như đồng đều trong toàn bộ..Trong cách tiếp cận theo dõi trong tài liệu, bạn cũng sẽ có một số tài liệu rất nhỏ nhưng cũng rất cồng kềnh. Và tùy thuộc vào lượng dữ liệu người theo dõi bạn đưa vào (nếu có, ngoài follower_id), bạn có thể muốn cẩn thận về giới hạn kích thước tài liệu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Công cụ giám sát và khám phá máy chủ không được dùng nữa

  2. Lưu trữ Từ điển với các giá trị đa hình trong mongoDB bằng C #

  3. xác thực tùy chỉnh mongoose sử dụng 2 trường

  4. Node chèn dữ liệu lớn bằng mongoose

  5. MongoDB GridFS VS Trực tiếp đĩa IO