2008-10-18 31 views
10

Từ những gì tôi hiểu, thuộc tính cha mẹ của một db.Model (thường được định nghĩa/được truyền trong lời gọi hàm tạo) cho phép bạn xác định các cấu trúc phân cấp trong các mô hình dữ liệu của bạn. Kết quả là, điều này làm tăng kích thước của nhóm thực thể. Tuy nhiên, nó không phải là rất rõ ràng với tôi tại sao chúng tôi muốn làm điều đó. Điều này có đúng với việc tuân thủ ACID không? Tôi muốn xem các tình huống trong đó mỗi trường hợp phù hợp nhất hoặc phù hợp hơn.Sự khác biệt giữa phụ huynh và thuộc tính tham chiếu trong Google App Engine là gì?

Trả lời

15

Có một số khác biệt:

  • Tất cả các đơn vị với cùng một tổ tiên nằm trong cùng một nhóm thực thể. Giao dịch chỉ có thể ảnh hưởng đến các thực thể bên trong một nhóm thực thể duy nhất.
  • Tất cả ghi vào một nhóm thực thể duy nhất được đăng theo thứ tự, do đó thông lượng bị giới hạn.
  • Thực thể cha mẹ được đặt khi tạo và được sửa. Tài liệu tham khảo có thể được thay đổi bất cứ lúc nào.
  • Với thuộc tính tham chiếu, bạn chỉ có thể truy vấn mối quan hệ trực tiếp, nhưng với thuộc tính cha mẹ, bạn có thể sử dụng bộ lọc .ancestor() để tìm mọi thứ (trực tiếp hoặc gián tiếp) từ một tổ tiên cụ thể.
  • Mỗi thực thể chỉ có một phụ huynh duy nhất, nhưng có thể có nhiều thuộc tính tham chiếu.
+0

Đáng lưu ý rằng bạn có thể tạo các thực thể có cùng khóa cha, ngay cả khi cha mẹ đó không thực sự tồn tại, vì vậy bạn có thể đặt mọi thứ trong cùng một nhóm ngay cả khi không chỉ định một trong số chúng làm cha mẹ. Tôi không thể nói rằng tôi có thể nghĩ ra một lý do tốt để làm điều này mặc dù! –

8

Mục đích duy nhất của các nhóm thực thể (được xác định bởi thuộc tính cha mẹ) là cho phép các giao dịch giữa các thực thể khác nhau. Nếu bạn không cần giao dịch, không sử dụng các mối quan hệ nhóm thực thể.

Tôi đề nghị bạn đọc lại phần Keys and Entity Groups của tài liệu, nó đã cho tôi một vài lần đọc để nắm bắt ý tưởng.

Cũng xem những cuộc đàm phán, trong số những thứ khác mà họ thảo luận về các giao dịch và các nhóm đối tượng:

+0

Cảm ơn các liên kết. – JamesC

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