Ý nghĩa hiệu suất của polymodels so với các mô hình Bigtable bình thường trong Google App Engine là gì?


12

Điều gì tạo ra hiệu suất tốt nhất trong việc sử dụng Google App Engine thông thường, polymodel hoặc mô hình "Bigtable" bình thường?

Polymelel, một cách hiệu quả, tạo một cột trong bảng cha gọi là "lớp" cung cấp theo dõi thừa kế. Trong khi một Bigtable bình thường, được kế thừa từ một lớp cha, sẽ tạo ra một cấu trúc dữ liệu mới và riêng biệt, không có khả năng truy vấn cha mẹ và tìm thấy tất cả con của tất cả các lớp được phân loại.

Câu trả lời:


3

Có thể có một sự khác biệt về hiệu suất, nhưng nó có thể khá nhỏ.

Đây là những gì tôi tìm thấy (tất cả dựa trên Google Docs cho Python ).

  1. BigTable không hỗ trợ thông tin PolyModel nguyên bản. Thay vào đó, nó được triển khai bằng cách sử dụng thuộc tính 'class'. Vì vậy, khi bạn cố gắng thực hiện tìm kiếm, ví dụ, để tìm một lớp cơ sở, bạn sẽ tìm kiếm trên thuộc tính 'lớp' này.

  2. Tất cả các truy vấn sử dụng lớp PolyModel đều có bộ lọc bổ sung được áp dụng lọc theo lớp đã cho (sử dụng thuộc tính 'lớp').

  3. Bất kỳ chỉ mục nào được tạo cho lớp PolyModel, đều phải tính đến cột 'lớp' thêm.

Về cơ bản, lớp PolyModel tự xử lý thuộc tính của 'lớp', chèn nó vào các truy vấn và sử dụng cho các truy vấn khác. Ngoài ra, nó hoạt động giống hệt với việc sử dụng BigTable tiêu chuẩn.

Vì vậy, sự khác biệt thực sự chỉ là thêm và duy trì thêm một cột.

Có một sự khác biệt hiệu suất? Vâng, có lẽ là như vậy. Mỗi cột bạn thêm vào bất kỳ hệ thống cơ sở dữ liệu nào cũng sẽ có tác động hiệu suất. Nhưng, nó có ý nghĩa? Chắc là không.

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.