Quali sono le implicazioni in termini di prestazioni dei polimeri rispetto ai normali modelli Bigtable in Google App Engine?


12

Che cosa produce le migliori prestazioni nell'uso regolare di Google App Engine, un polimero o un normale modello "Bigtable"?

Il polimero, in effetti, crea una colonna nella tabella padre denominata "class" che fornisce il tracciamento dell'ereditarietà. Considerando che un normale Bigtable, ereditato da una classe genitore, crea una nuova e separata struttura di dati, senza la possibilità di interrogare il genitore e trovare tutti i figli di tutte le classi sottotipate.

Risposte:


3

Probabilmente c'è una differenza di prestazioni, ma è probabilmente piuttosto piccola.

Ecco cosa ho trovato (tutto basato su Google Docs for Python ).

  1. BigTable non supporta le informazioni PolyModel in modo nativo. Invece, è implementato usando una proprietà 'class'. Quindi, quando si tenta di eseguire una ricerca, ad esempio, per trovare una classe base, si cercherà su questa proprietà 'class'.

  2. Tutte le query che utilizzano la classe PolyModel hanno un filtro aggiuntivo applicato che filtra per la classe data (usando la proprietà 'class').

  3. Tutti gli indici creati per una classe PolyModel devono tenere conto della colonna "class" aggiuntiva.

In sostanza, la classe PolyModel si occupa da sola della proprietà 'class', inserendola nelle query e utilizzandola per altre query. Oltre a ciò, funziona in modo identico all'utilizzo standard di BigTable.

Quindi, la differenza è in realtà solo l'aggiunta e il mantenimento di una colonna aggiuntiva.

C'è una differenza di prestazioni? Sì, probabilmente è così. Ogni colonna che aggiungi a qualsiasi sistema di database avrà un impatto sulle prestazioni. Ma è significativo? Probabilmente no.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.