9

Tôi đã thấy nhiều bài viết và câu hỏi về cách triển khai ràng buộc duy nhất trong appengine, nhưng tôi thực sự không tìm thấy bất kỳ lời giải thích nào về lý do tại sao tính năng này không có mặt.Tại sao không có ràng buộc duy nhất trong Google Appengine?

Nếu các nhà phát triển appengine coi tốt hơn là không triển khai tính năng như vậy, tôi tin rằng họ có lý do chính đáng, nhưng tôi muốn hiểu tại sao họ quyết định như vậy.

Quyết định này có được hướng dẫn bởi các mối quan tâm về hiệu suất không? Tại sao?

Bất kỳ giải thích chi tiết nào về điều này sẽ được đánh giá cao.

Trả lời

10

Khi bài đăng đó được liên kết tại đây http://code.google.com/p/googleappengine/issues/detail?id=178#c14 nói, bản chất phân tán của kho dữ liệu khiến việc thực thi ràng buộc duy nhất trở nên khó khăn. Nếu hai trường hợp ứng dụng đồng thời cố gắng tạo một thực thể, mỗi đối tượng có một thuộc tính nên là duy nhất, cách duy nhất để thực thi điều này sẽ yêu cầu một số loại phối hợp trong tất cả các máy trong kho dữ liệu.

Hãy tưởng tượng một căn phòng có 26 người với mỗi tờ giấy, nói với một bảng vật nuôi và chủ sở hữu của chúng. Mỗi người kiểm soát mọi vật nuôi bằng một chữ cái khác của bảng chữ cái, ví dụ: người 1 làm mọi thứ bắt đầu bằng chữ A, người thứ 2 làm tất cả mọi thứ bắt đầu bằng chữ cái B, và cứ thế.

Nếu bạn muốn đảm bảo rằng một con vật cưng có tên là găng tay duy nhất trong toàn bộ kho dữ liệu, điều này rất dễ dàng vì chỉ một người trong phòng sẽ tham gia và họ có thể kiểm tra mảnh giấy của họ đảm bảo rằng găng tay không có ở đó.

Nếu bạn muốn yêu cầu chủ sở hữu cũng phải là duy nhất, bạn có thể tưởng tượng mỗi khi ai đó muốn viết bài trong bảng của họ, họ cần phải kiểm tra với/mọi người khác/để đảm bảo rằng không ai khác có tên chủ sở hữu đã sử dụng. Đây là lý do cơ bản mà kho dữ liệu của công cụ ứng dụng không cho phép các ràng buộc duy nhất về bất kỳ điều gì ngoại trừ các khóa thực thể. Nó sẽ chỉ đơn giản là không thể làm điều đó khi kho dữ liệu chứa hàng ngàn máy chủ.

Hy vọng rằng bạn có thể thấy tại sao hạn chế này tồn tại, và hy vọng của tôi đêm khuya gõ không phải là quá khó khăn để đọc: D

+0

Cảm ơn bạn đã trả lời tuyệt vời này (với một ví dụ tốt đẹp), tôi hiểu rõ hơn bây giờ! – MatToufoutu

3

Bạn có thể thấy phản hồi từ Google về việc thêm các ràng buộc duy nhất trên issue list for GAE của họ.

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