2012-03-30 35 views

Trả lời

8

hiya thấy điều này: MongoDB normalization, foreign key and joining & & thêm http://shop.oreilly.com/product/0636920018391.do ===>http://books.google.com/books/about/Document_Design_for_MongoDB.html?id=TbIHkgEACAAJ&redir_esc=y

MongoDB không hỗ trợ phía máy chủ các mối quan hệ chính nước ngoài, bình thường cũng không được khuyến khích. Bạn nên nhúng đối tượng con của bạn trong các đối tượng cha mẹ nếu có thể, điều này sẽ làm tăng hiệu suất và làm cho các khóa lạ hoàn toàn không cần thiết. Điều đó nói rằng nó không phải là luôn luôn có thể, do đó, có một cấu trúc đặc biệt gọi là DBRef cho phép các đối tượng tham chiếu trong một bộ sưu tập khác. Điều này có thể sau đó không quá nhanh chóng vì DB phải thực hiện các truy vấn bổ sung để đọc các đối tượng nhưng cho phép loại tham chiếu khóa ngoài.

Tuy nhiên, bạn sẽ phải xử lý các tham chiếu của mình theo cách thủ công. Chỉ trong khi tìm kiếm DBRef của bạn, bạn sẽ thấy nếu nó tồn tại, DB sẽ không đi thông qua tất cả các tài liệu để tìm các tài liệu tham khảo và loại bỏ chúng nếu mục tiêu của tham chiếu không tồn tại nữa. Nhưng tôi nghĩ rằng xóa tất cả các tham chiếu sau khi xóa sách sẽ yêu cầu một truy vấn đơn cho mỗi bộ sưu tập, không còn nữa, vì vậy điều đó không thực sự khó.

Sửa cập nhật

http://levycarneiro.com/tag/mongodb/

levycarneiro.com/tag/mongodb [quote] Vì vậy, bạn tạo ra 4 bộ sưu tập: Khách hàng, nhà cung cấp, nhân viên và Danh bạ. Bạn kết nối tất cả chúng với nhau thông qua một tham chiếu db. Điều này hoạt động như một khóa ngoại. Nhưng, đây không phải là cách mongoDB để làm việc. Hiệu suất sẽ bị phạt. [unquote]

+1

Thú vị. Nó có nghĩa là gì bởi "nhúng các đối tượng con trong đối tượng cha mẹ"? Điều đó có nghĩa là nếu bạn có mối quan hệ đơn đặt hàng/chi tiết đơn hàng, bạn sẽ thêm đối tượng chi tiết đơn hàng làm thuộc tính trong tài liệu đơn đặt hàng? – McGarnagle

+1

Hiya, Thật vậy, tôi nghĩ; Bài viết thú vị ở đây - http://levycarneiro.com/tag/mongodb/ [quote] Vì vậy, bạn tạo 4 bộ sưu tập: Khách hàng, Nhà cung cấp, Nhân viên và Liên hệ. Bạn kết nối tất cả chúng với nhau thông qua một tham chiếu db. Điều này hoạt động như một khóa ngoại. Nhưng, đây không phải là cách mongoDB để làm việc. Hiệu suất sẽ bị phạt. [unquote] - :) chúc mừng –

+0

Tuyệt vời, nó thực sự hữu ích Tats. Thực ra, Mongo DB không hiệu quả lắm khi thực hiện tham chiếu giữa các đối tượng, như tôi đã hiểu. –

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