Trong Google App Engine, mô hình nhiều người tham gia hiệu quả nhất là gì?


9

Các BigTable thiết kế từ chối rất nhiều các triết lý của mô hình quan hệ tiêu chuẩn, thích một cách rõ ràng denormalization đến một máy chủ lớn của bảng nhỏ.

Một trong những lĩnh vực lớn hơn mà đây là một vấn đề nằm trong mô hình của nhiều người tham gia.

Một cách để mô hình hóa các phép nối này là vi phạm hình thức bình thường đầu tiên và đưa tất cả dữ liệu thú vị vào db.ListProperty (). Mặc dù điều này có khả năng tìm kiếm được từ một truy vấn, tôi vẫn chưa khám phá ý nghĩa hiệu suất của việc tìm kiếm danh sách so với việc kéo một bảng khác.

Như tham gia là không thể, nó có thể để bảng liên kết thông qua RelationshipProperties. Do đó, với đủ nỗ lực, có thể tạo bảng giao cắt tiêu chuẩn (một bảng có khóa chính chung tham chiếu cả hai bảng cha). Có ai khám phá các hit hiệu suất của các triển khai khác nhau?

-Biên tập-

Mặc dù Danh sách các khóa được đề xuất trong tài liệu thực sự là một cách để làm điều đó, tôi quan tâm đến hiệu suất và tỷ lệ bất thường của việc đó và các triển khai khác. Có tiện ích trong việc tạo danh sách các khóa lẫn nhau? Là nỗ lực liên quan đến việc lặp đi lặp lại có đáng giá? Có cách nào tốt hơn để làm điều đó?

Câu trả lời:


3

Tôi cũng đang làm việc với kho dữ liệu GAE ngay bây giờ, bạn nên kiểm tra bài viết này nếu bạn chưa có. Nếu bạn đã tìm thấy một cái gì đó hữu ích, xin vui lòng cập nhật câu hỏi của bạn.

BIÊN TẬP:

Tôi tìm thấy điều này ngày hôm nay, kiểm tra xem nó ra.


0

Theo kinh nghiệm của tôi về GAE, bạn nên sử dụng các truy vấn bảng một cách tiết kiệm. Thêm một bảng "tham gia" sẽ làm mọi thứ chậm hơn nữa. Ví dụ: nếu bạn có các bảng A và B có chung mối quan hệ nhiều-nhiều và bạn tạo bảng "tham gia" với các trường Mối quan hệ với cả A và B, bạn sẽ phải truy vấn J mỗi khi bạn muốn tìm hồ sơ liên quan (thực thể).

Sẽ nhanh hơn nhiều khi có Danh sách các khóa trong A hoặc B (hoặc cả hai nếu cần thiết) vì chúng sẽ được đưa vào khi bạn tìm nạp bản ghi / thực thể đó. Miễn là bạn không có quá nhiều khóa trong danh sách (nghĩa là thực thể không quá lớn), đây là cách để đi.

Tôi đã bắt đầu sử dụng ndb trên các ứng dụng của mình và có một số lợi ích đáng kể khi sử dụng khóa khi tìm nạp các thực thể. Nếu thực thể đã được lưu trữ, nó sẽ kéo nó ra khỏi bộ nhớ hoặc memcache trước. Vì vậy, nếu có sự trùng lặp đáng kể trong Danh sách khóa của bạn, việc tìm nạp sẽ nhanh hơn nhiều đối với những thực thể đã được tìm nạp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.