2011-09-09 24 views
6

Tôi muốn mã ứng dụng web nơi hầu hết các phần phụ thuộc vào hồ sơ người dùng (ví dụ: danh sách việc cần làm khác nhau cho mỗi người v.v ...) Tôi rất muốn sử dụng MongoDB. Tôi đã nghĩ đến việc tạo ra khoảng 10 tài liệu nhúng cho tài liệu hồ sơ chính và giữ mọi thứ liên quan đến một người dùng bên trong tài liệu của riêng mình.MongoDB nhúng tài liệu so với tham chiếu bởi ObjectIds duy nhất cho cấu hình người dùng hệ thống

Tôi không thấy cách rõ ràng khi sử dụng khóa ngoài cho mongodb, cách duy nhất là tạo trường to_do_id với kiểu ObjectId, nhưng chúng hoàn toàn không liên quan bên trong, chỉ xảy ra để có cùng một Id mà tôi phải truy vấn.

  1. Có giới hạn về số lượng loại tài liệu được nhúng trong tài liệu cấp cao nhất có thể làm giảm hiệu suất không?
  2. Làm thế nào để các bạn giải quyết vấn đề có tài liệu hồ sơ trung tâm mà hầu hết các tài liệu liên quan đến việc trình bày chế độ xem cho mỗi người?
  3. Bạn có sử dụng các khóa bán ngoài trong MongoDb và có các trường có kiểu ObjectId sẽ có một số Id duy nhất của tài liệu khác thay vì nhúng chúng không?

Tôi không thể cảm nhận được phương pháp nên được thực hiện khi nào. Cảm ơn nhiều!

+0

+1 cho câu hỏi hay. – Adelin

Trả lời

2
  1. Không có giới hạn đặc biệt về hiệu suất. Tuy nhiên, tài liệu càng lớn thì càng mất nhiều thời gian để truyền qua dây. Toàn bộ tài liệu luôn được truy xuất.
  2. Tôi làm điều đó với tham chiếu. Bạn có thể chọn giữa các tham chiếu thủ công đơn giản và DBRef cơ sở dữ liệu theo trang này: http://www.mongodb.org/display/DOCS/Database+References
  3. Liên kết ở trên có tài liệu hướng dẫn cách tham chiếu tài liệu theo cách khóa bán ngoại. Các DBRef có thể là tốt cho những gì bạn đang cố gắng để làm, nhưng các tài liệu tham khảo hướng dẫn sử dụng đơn giản là rất hiệu quả.

Tôi không chắc chắn nguyên tắc chung của ngón tay cái tồn tại cho phương pháp tiếp cận tham chiếu nào là tốt nhất. Vì tôi sử dụng Java hoặc Groovy chủ yếu, tôi thích thực tế là tôi nhận được một đối tượng DBRef được trả về. Tôi có thể kiểm tra kiểu dữ liệu này và sử dụng nó để quyết định cách xử lý tham chiếu theo cách tổng quát.

Vì vậy, tôi có xu hướng sử dụng tham chiếu thủ công đơn giản để tham chiếu đến các tài liệu khác nhau trong cùng một bộ sưu tập và DBRef cho các tham chiếu trên các bộ sưu tập.

Tôi hy vọng điều đó sẽ hữu ích.

+0

Vì vậy, rõ ràng là không có quy tắc nào được đặt ra, chỉ là điều dễ hiểu hơn đối với mã. Điểm về trasmitting một tài liệu lớn có giá trị của nó, bởi vì tôi luôn luôn phải nói với các ứng dụng để lựa chọn chỉ các lĩnh vực được lựa chọn nếu có khoảng 10 tài liệu nhúng. Cảm ơn. –

+0

Vâng, có một số phương pháp hay nhất liên quan đến thiết kế lược đồ và một số trong số đó đề cập đến việc sử dụng các tham chiếu. Nó rất đáng xem: http://www.mongodb.org/display/DOCS/Schema+Design – dlaidlaw

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