14

tratto dal Python NDB Overview:Quali sono i confronti di velocità tra NDB e DB (su archivio dati ad alta replicazione)?

Quando l'applicazione legge un soggetto, che entità è automaticamente memorizzati nella cache; fornisce letture veloci (e poco costose) per le entità di lettura frequente.

...

La funzione NDB che scrive i dati (ad esempio, mettere()) restituisce dopo l'invalidazione della cache; la fase Apply si verifica in modo asincrono.

Nel guardare su Youtube, Google I/O 2011: More 9s Please: Under The Covers of the High Replication Datastore, alle 13: 11-ish, le latenze medie sono:

Master/Slave:

  • Leggi: 15ms
  • Scrivere: 20 ms

Alta replica:

  • Leggi: 15ms
  • scrittura: 45ms

Come significativamente fa NDB influenzano queste velocità, dalle app di Perspect io ho?

Modifica: Specificamente curioso sulle statistiche di temporizzazione (in millisecondi).

Credit Extra: Ho sentito anche Nick Johnson riferisco alle domande prendendo in giro 160ms ciascuna (nel 2009) [link] Vuol NDB offrono tutti i benefici di velocità sulle query?

risposta

10

L'uso di NDB fa apparire le chiamate del datastore, dal punto di vista dell'app, in modo significativamente più veloce.

LETTURA: scenario migliore, le letture vengono eseguite dalla cache di istanza o memcache. Nella maggior parte dei casi, questo sarà molto più veloce della lettura da datastore.

WRITE: il metodo put/write NDB viene restituito subito dopo l'annullamento della cache. Questo è molto più veloce di una normale scrittura. Quindi dal punto di vista della tua app, è abbastanza veloce. La scrittura effettiva, tuttavia, viene eseguita in modo asincrono.

NDB vs DB (alta replica): in termini di velocità dal punto di vista dell'app, NDB dovrebbe essere una chiara vittoria.

+0

Grazie per la rapida risposta! Sono specificamente interessato ai tempi, in millisecondi. Modifica il post per riflettere questo ora. :) – wTyeRogers

+0

@wTyeRogers Se vuoi conoscere cifre esatte, dovrai fare i tuoi benchmark. –

+0

@NickJohnson, fantastico; Grazie! Dato che questo è il mio primo post di Stack Overflow, ho una domanda riguardante l'etichetta che non è presente nelle FAQ: modifico il post di Albert per includere le statistiche, oppure pubblico la mia risposta individuale? (Mi sembra un po 'strano pubblicare una risposta alla mia stessa domanda ..) – wTyeRogers

18

Dovrai fare il punto di riferimento per te stesso - i tempi dipendono da molti fattori, come la dimensione e la complessità dell'entità: più proprietà o più elementi in proprietà ripetute -> più complesse.

I numeri che citate sono molto vecchi e probabilmente non riflettono più la realtà; l'esperienza della maggior parte degli utenti è che l'HRD non è più lento di M/S, in media (in parte perché l'M/S ha una variabilità molto più alta).

Ci sono stati alcuni benchmark NDB eseguiti qui: http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 - ma non confronta i numeri con il vecchio db.

È possibile utilizzare Appstats per eseguire rapidamente i tempi delle operazioni in un'app reale.

+4

Buono a sapersi per il mio primo post di Stack Overflow! Speravo segretamente che tu eri uno dei risponditori, data la tua profonda conoscenza del NDB e la tua capacità di analizzare le statistiche fino alla morte con la tua visione a raggi X di Python - una combinazione mortale per questa domanda. _Grazie_ per evidenziare alcuni dei punti di complessità e il collegamento è molto utile. – wTyeRogers

Problemi correlati