2012-06-13 43 views
5

Chúng tôi đang phát triển một ứng dụng được đọc nặng và có thể có hàng triệu tài liệu. Chúng tôi cần tham khảo thông tin người dùng trong hầu hết mọi bộ sưu tập. Thông tin người dùng có một số thuộc tính có thể thay đổi theo thời gian.Chúng ta nên sử dụng tài liệu dbref hoặc nhúng trong một ứng dụng đọc nặng

Chúng tôi có nên sử dụng DBref hoặc nhúng thông tin người dùng trong tất cả các bộ sưu tập không?

Hiệu suất DBref tồi tệ như thế nào trong ứng dụng đọc nhiều?

Nếu chúng tôi không sử dụng DBref, làm cách nào chúng tôi có thể cập nhật từng tài liệu, nếu thông tin người dùng thay đổi định kỳ?

Trong Mongodb, có cách nào khác cho DBref và tài liệu được nhúng cho loại trường hợp sử dụng này không?

Trả lời

6

DBref không phải là bất kỳ thứ gì giống như khóa ngoại trong các hệ thống quan hệ truyền thống. Nó chỉ là một quy ước mà dễ dàng nói với một người lái xe (những người có khả năng) để tự động tải những tài liệu được giới thiệu. Vui lòng xem DBRef để biết thêm thông tin về điều này.
Tùy thuộc vào trình điều khiển được sử dụng, bạn có thể tải các tham chiếu đó tự động chỉ khi bạn cần chúng (lười), vì vậy chi phí thực hiện sẽ rất nhỏ. Nhưng chi phí lưu trữ cao hơn một chút so với _id tham chiếu đơn giản của một tài liệu khác. Về cơ bản tôi sẽ nói rằng bạn chỉ nên sử dụng những DBrefs nếu tài liệu được liên kết có thể có kiểu biến. Nếu tĩnh của nó bị mắc kẹt với các tham chiếu _id và có thể là chức năng loader lười biếng của riêng bạn, do đó bạn không lặp lại chính mình.
Không lặp lại chính bạn (hoặc sao chép dữ liệu trong thuật ngữ cơ sở dữ liệu) cũng áp dụng trong ngữ cảnh của bạn, như MongoDB khuyến nghị, vì vậy tôi cũng vậy, chỉ là link your documents. Khác bạn sẽ có mức sử dụng bộ nhớ cao hơn và cập nhật chạy hơi lâu, chỉ cập nhật một thực thể lôgic (thường xuyên được sao chép về mặt vật lý).

Với trình tải xuống tùy chỉnh được đề cập trước đây, bạn có thể thêm một số bộ nhớ đệm để không phải mọi lần tra cứu thực tế dẫn đến tra cứu mongodb. Nhiều khả năng bạn sẽ cần phải chăm sóc tính nhất quán dữ liệu giữa bộ nhớ cache và db.

+0

Cảm ơn bạn đã trả lời. Nó thực sự hữu ích. – atandon

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