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

Làm cách nào để tạo nguồn cấp dữ liệu tệp từ những người mà người dùng đang theo dõi?

Đây là vấn đề fan-in và fan-out. Tôi khuyên bạn nên thử fan-out:

Giữ một feed bộ sưu tập cho người dùng của bạn. Khi người dùng tải lên một tài liệu, hãy chèn một mục nguồn cấp dữ liệu mới vào mỗi bộ sưu tập mục nguồn cấp dữ liệu của bạn bè cô ấy. Bộ sưu tập có thể trông như thế này:

{
    "_id": (some id)
    "UserId": (id of the user who 'owns', i.e. reads this feed)
    "FriendId": (if of the friend who posted the file)
    "FriendName": "John Doe" (name of the fried, denormalized)
    "Timestamp": ...
}

Sử dụng chỉ mục kết hợp {UserId, Timestamp} .

Cách tiếp cận này khá nặng nề:Nếu Jane có hàng trăm bạn bè, hàng trăm lượt chèn này sẽ làm mất thời gian của họ. Mặt khác, dù sao thì việc tải lên một tệp cũng mất rất nhiều thời gian, do đó chi phí không đáng kể và việc đọc của bạn sẽ đơn giản đến mức nực cười.

Tất nhiên, điều này có thể được tối ưu hóa thêm với nhiều nỗ lực hơn, nhưng nó sẽ ổn đối với lưu lượng truy cập khá lớn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ tháng

  2. Giới hạn kích thước tài liệu đơn MongoDB là 16MB

  3. Spring Data Mongo - Thực hiện Khác biệt, nhưng không muốn kéo các tài liệu nhúng vào kết quả

  4. làm cách nào để tạo truy vấn mongodb của tôi dựa trên đầu vào từ người dùng trong node.js?

  5. tạo giản đồ mongoose