Mối quan hệ một đối một mongodb
Các quan hệ của mongodb là các NoSQL tương đương với các liên kết trong cơ sở dữ liệu quan hệ. Tuy họ đều thực hiện các mục đích tương tự nhau, xuất hiện ở những trường hợp tương tự nhau nhưng bản chất về hành vi xử lý của họ hoàn toàn khác nhau Show Mối quan hệ NoSQL so với các hiệp hội RDBMSCác Relation (quan hệ) liên kết dữ liệu từ mô hình này với mô hình khác. Sâu hơn nữa thì đây chính là những gì dành cho các RDBMS liên kết. Tùy ý, cái cách mà dữ liệu được liên kết trong NoSQL lại hoàn toàn khác. Trong cơ sở dữ liệu quan hệ truyền thống, các quan hệ được sử dụng để liên kết giữa bảng này với các bảng khác. MongoDB và các nền tảng NoSQL tương đương nhau là "hướng tài liệu" (tức là không có bảng nào cả mà chỉ là những bản ghi thôi). Do đó, các liên kết được vẽ nằm giữa các "bản ghi" ActiveRecord
Mongoid (tham khảo)
Mongoid (nhúng)
Tất cả những lớp trên về cơ bản đều thực hiện liên kết giữa 1 tác giả có nhiều bài đăng, 1 bài đăng lại có nhiều bình luận. Nhìn vào đoạn mã trên ta có thể thấy embeds_many <=> has_many embeds_in <=> belongs_to Nhưng điều này đã làm đơn giản hóa nó đi ActiveRecordCơ sở dữ liệu quan hệ sẽ xử lý các liên kết thông qua khóa ngoại trừ tham chiếu tới 1 hàng duy nhất của bảng khác. Ví dụ. một bài viết sẽ có một tác giả tham khảo ID của bản ghi trong bảng tác giả mà nó thuộc về. Nếu một tác giả có nhiều bài viết, nhiều bản viết bài sẽ có cùng tác giả. tác giả không có post_ids Lược đồ cơ sở dữ liệu quan hệ Tài liệu tham khảo MongoidCó một cách cơ sở dữ liệu NoQuery xử lý một số mối quan hệ là thông qua các mối quan hệ. Tham chiếu tương tự như các hiệp hội trong cơ sở dữ liệu quan hệ hơn là nhúng (phần này sẽ được giải thích ở bên dưới). Mối quan hệ cũng sử dụng các từ khóa ngoại vi, tuy nhiên chúng ta trỏ từ tài liệu này sang tài liệu khác, thay vì một bản ghi trong một bảng này đến một bản ghi trong một bảng khác
Mongoid nhúngMột cách khác để xây dựng cơ sở dữ liệu NoQuery xử lý các mối quan hệ này với nhiều mối quan hệ là thông qua việc nhúng các tài liệu. Một tài liệu được nhúng trong một tài liệu khác, dẫn đến cơ bản là một hàm băm (hàm băm) với. Ví dụ. tác giả sẽ nhúng nhiều tài liệu bài đăng và mỗi tài liệu bài đăng sẽ nhúng nhiều bình luận. Mỗi tác giả là một hàm băm chứa một mảng các bài đăng, mỗi tài liệu chứa một mảng các bình luận
Nhúng so với tham chiếuTại sao Mongo cần có nhiều cách để xác định cùng một mối quan hệ với nhiều mối quan hệ khi các ORM như ActiveRecord chỉ yêu cầu một? . Có một số điều cần được xem xét trước khi đưa ra quyết định Dữ liệu của bạn sẽ được kết nối từ nhiều điểm? . Nếu dữ liệu của bạn chỉ hữu ích liên quan đến tài liệu gốc của nó, thì Nhúng là cách để đi. Cũng quan trọng để xem xét tính nhất quán dữ liệu và kích thước tài liệu. Tài liệu MongoDB có thể bị giới hạn ở kích thước tối đa 4 MB, tuy nhiên, rất khó có thể đây là vấn đề bạn sẽ gặp phải sớm |