Apa implikasi kinerja polimodel dibandingkan model Bigtable normal di Google App Engine?

12

Apa yang menghasilkan kinerja terbaik dalam penggunaan Google App Engine biasa, model polim atau model "Bigtable" yang normal?

Polymodel, secara efektif, membuat kolom di tabel induk yang disebut "kelas" yang menyediakan pelacakan warisan. Sedangkan Bigtable normal, yang diwarisi dari kelas induk, membuat struktur data baru dan terpisah, tanpa kemampuan untuk menanyakan induk dan menemukan semua anak dari semua kelas subtipe.

Brian Ballsun-Stanton
sumber

Jawaban:

3

Mungkin ada perbedaan kinerja, tetapi mungkin cukup kecil.

Inilah yang saya temukan (semua berdasarkan Google Documents untuk Python ).

  1. BigTable tidak mendukung informasi PolyModel secara asli. Alih-alih, ini diterapkan menggunakan properti 'kelas'. Jadi, ketika Anda mencoba melakukan pencarian, misalnya, untuk menemukan kelas dasar, Anda akan mencari di properti 'kelas' ini.

  2. Semua kueri yang menggunakan kelas PolyModel memiliki filter tambahan yang diterapkan yang memfilter oleh kelas yang diberikan (menggunakan properti 'kelas').

  3. Setiap indeks yang dibuat untuk kelas PolyModel, harus memperhitungkan kolom 'kelas' tambahan.

Pada dasarnya, kelas PolyModel menangani sendiri properti 'kelas', memasukkannya ke dalam kueri dan memanfaatkannya untuk kueri lain. Selain itu, ia bekerja identik dengan penggunaan BigTable standar.

Jadi, perbedaannya hanyalah menambah dan memelihara satu kolom tambahan.

Apakah ada perbedaan kinerja? Ya, mungkin juga begitu. Setiap kolom yang Anda tambahkan ke sistem basis data apa pun akan memiliki dampak kinerja. Tetapi, apakah ini penting? Mungkin tidak.

Richard
sumber