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

Làm thế nào để chuyển đổi SQL dạng quan hệ nhiều-nhiều thành đối tượng mongoDB?

Tôi thấy nhiều giải pháp cho vấn đề của bạn:

Ít khi cập nhật

Để tránh các phép nối phải được thực hiện ở phía máy khách trong cơ sở dữ liệu NoSQL, hãy đặt mọi thứ vào một bộ sưu tập. Nếu bạn không cập nhật thường xuyên, bạn có thể làm

{
   _id,
   LastAccessDate,
   HasException,
   Account : {
        AccountID,
        UserName,
        Email },
   Device : {
        DeviceID,
        DeviceCode }
}

Điều này dẫn đến dữ liệu trùng lặp, nhưng nếu hiệu suất (không có liên kết) đi trước hiệu quả của bộ nhớ, thì đó có thể là một giải pháp phù hợp cho bạn. Vì dữ liệu được lưu trữ nhiều lần nên các bản cập nhật sẽ đòi hỏi nhiều hơn đối với máy chủ. I E. cập nhật địa chỉ Email sẽ trông như thế nào

db.myColl.update({"Account.UserName" : "User ToUpdate"}, {"$set" : {"Account.Email" : "[email protected]"} });

Vì bạn không cần AccountID và DeviceID để tham gia nữa, bạn cũng có thể bỏ hai trường này.

Cập nhật thường xuyên

Khi bạn có các bản cập nhật thường xuyên, thay vì nhúng, bạn có thể sử dụng Tài liệu tham khảo. Tôi nghĩ bạn phải giải quyết chúng ở phía khách hàng. Sau đó, bạn có ba bộ sưu tập:

Tài khoản:

{
  _id,
  UserName,
  Email
}

Thiết bị:

{
  _id,
  DeviceCode
}

Liên kết:

{
  _id,
  account : {
        "$ref" : "Account",
        "$id" : ... }
  device : {
        "$ref" : "Device",
        "$id" : ... }
}

Bạn không có bất kỳ sự trùng lặp nào theo cách này, nhưng bạn phải xử lý các tham chiếu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách chính xác để truy vấn MongoDB cho _id bằng cách sử dụng chuỗi bằng Python là gì?

  2. Định dạng một số dưới dạng tiền tệ trong SQL

  3. Ứng dụng hoạt động trong quá trình phát triển nhưng không hoạt động khi được triển khai cho heroku

  4. Con trỏ chuột.skip () trên các phím được lập chỉ mục có luôn nhanh hơn không?

  5. Cách đẩy các mục mới vào một mảng bên trong một đối tượng