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

các lựa chọn thay thế mongoDB cho các ràng buộc khóa ngoại

MongoDB không có xóa xếp tầng. Khi ứng dụng của bạn xóa dữ liệu, nó cũng có trách nhiệm xóa bản thân mọi đối tượng được tham chiếu và mọi tham chiếu đến tài liệu đã xóa. Nhưng thông thường khi bạn sử dụng on delete trong cơ sở dữ liệu quan hệ, bạn có trường hợp thành phần trong đó một đối tượng mẹ sở hữu một hoặc nhiều đối tượng con và các đối tượng con là vô nghĩa nếu không có đối tượng mẹ. Trong trường hợp đó, MongoDB khuyến khích nhúng thay vì tham chiếu . Điều đó có nghĩa là bạn tạo một mảng trong đối tượng mẹ và đặt các tài liệu con hoàn chỉnh vào mảng đó thay vì giữ chúng trong một bộ sưu tập riêng. Bằng cách đó, chúng sẽ bị xóa cùng với phụ huynh vì chúng là một phần của nó.

Mặc dù giữ nhiều hơn một giá trị trong một trường là điều tuyệt đối không được phép sử dụng trong SQL, nhưng không có gì sai với điều đó trong MongoDB. Đó là bởi vì ngôn ngữ truy vấn MongoDB có thể dễ dàng làm việc với các mảng và các đối tượng nhúng. Bạn thậm chí có thể tạo chỉ mục trên các trường tài liệu con trong mảng, vì vậy bạn có thể dễ dàng tìm kiếm các đối tượng được nhúng trong các đối tượng khác.

Khi bạn vẫn muốn tham chiếu đến các đối tượng từ một bộ sưu tập khác, bạn có thể sử dụng DBRef hoặc bạn cũng có thể sử dụng bất kỳ số nhận dạng duy nhất nào khác (tính duy nhất là một trong số ít những thứ có thể được thực thi bởi MongoDB. Để làm như vậy, tạo chỉ mục duy nhất bằng lệnh createIndex ). Nhưng MongoDB không thực thi tính nhất quán trong trường hợp này. Bạn có thể tạo các DBRef trỏ đến các ObjectIds không tồn tại và khi tài liệu mà DBRef trỏ đến bị xóa, sẽ không có gì xảy ra. Ứng dụng có trách nhiệm đảm bảo rằng khi xóa tài liệu, tất cả các tài liệu tham chiếu đến nó đều được cập nhật.

Các ràng buộc cũng không thể được thực thi bởi MongoDB. Nó thậm chí không thể thực thi một kiểu cụ thể cho một trường, do bản chất không có bảng điều khiển của MongoDB. Một lần nữa, ứng dụng của bạn có trách nhiệm đảm bảo rằng dữ liệu mà nó đưa vào mongodb tuân theo các thông số kỹ thuật cụ thể. Khi bạn muốn tự động hóa việc này, có sẵn các khuôn khổ ánh xạ quan hệ đối tượng cho MongoDB cho nhiều ngôn ngữ lập trình.

Để kết thúc tất cả: MongoDB không "thông minh" như cơ sở dữ liệu SQL. Nó không tự làm được gì nhiều. Nó thực hiện những gì nó được ứng dụng yêu cầu, không hơn không kém. Nhưng đó là lý do tại sao nó rất nhanh (không cần kiểm tra tính nhất quán đắt tiền) và linh hoạt (không cần sửa đổi cơ sở dữ liệu để triển khai các tính năng mới).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bản sao MongoDB không có thiết lập chính, cần thiết lập bản sao chính mới

  2. tiêu chí mongoid rails tìm theo hiệp hội

  3. sắp xếp mongodb và truy vấn regex theo cách hiệu quả

  4. Hàm MapReduce trong MongoDB - Nhóm tài liệu theo ID

  5. Tương đương với xóa theo tầng được đề xuất trong MongoDB cho mối quan hệ N:M là gì?