14

tomada de la Python NDB Overview:¿Cuáles son las comparaciones de velocidad de NDB vs DB (en Datastore de alta replicación)?

Cuando la aplicación lee una entidad, esa entidad es en caché de forma automática; esto proporciona lecturas rápidas (y económicas) para entidades de lectura frecuente.

...

La función NDB que escribe los datos (por ejemplo, poner()) devuelve después de la invalidación de caché; la fase Aplicar ocurre de forma asíncrona.

En viendo en Youtube, Google I/O 2011: More 9s Please: Under The Covers of the High Replication Datastore, a las 13: 11-ish, las latencias medias son:

maestro/esclavo:

  • Leer: 15ms
  • escribir: 20ms

replicación con alta disponibilidad:

  • Leer: 15ms
  • Comentario: 45ms

Cómo significativamente Cómo afecta NDB estas velocidades, desde la década de aplicaciones perspectiva ¿he?

Editar: Especialmente curioso sobre las estadísticas de tiempos (en milisegundos).

Crédito extra: He también escucharon Nick Johnson refiero a las preguntas teniendo alrededor de 160 ms cada uno (en 2009) [link] ¿Se NDB proporcione beneficios de velocidad en las consultas?

Respuesta

10

El uso de NDB hace que las llamadas a su almacén de datos aparezcan, desde la perspectiva de su aplicación, significativamente más rápido.

LEER: El mejor de los casos, las lecturas se realizan desde caché de instancia o memcache. En la mayoría de los casos, esto será significativamente más rápido que leer desde el almacén de datos.

ESCRIBIR: El método de escritura/envío de NDB vuelve inmediatamente después de la invalidación de la memoria caché. Esto es mucho más rápido que una escritura normal. Entonces, desde la perspectiva de su aplicación, es bastante más rápido. La escritura real, sin embargo, se realiza de forma asíncrona.

NDB vs DB (Alta Replicación): En términos de velocidad desde la perspectiva de su aplicación, NDB debería ser una clara victoria.

+0

Gracias por la pronta respuesta! Estoy específicamente interesado en el tiempo, en milisegundos. Editando la publicación para reflejar eso ahora. :) – wTyeRogers

+0

@wTyeRogers Si quiere saber las cifras exactas, tendrá que hacer sus propios puntos de referencia. –

+0

@NickJohnson, increíble; ¡Gracias! Como esta es mi primera publicación de Stack Overflow, tengo una pregunta relacionada con la etiqueta que no está en las Preguntas frecuentes: ¿Edito la publicación de Albert para incluir las estadísticas o publico mi propia respuesta individual? (Me parece un poco raro publicar una respuesta a mi pregunta ...) – wTyeRogers

18

Tendrá que establecer un punto de referencia para usted: los tiempos dependen de muchos factores, como el tamaño y la complejidad de la entidad: más propiedades o más elementos en propiedades repetidas,> más complejos.

Los números que cita son realmente antiguos y probablemente ya no reflejen la realidad; la experiencia de la mayoría de los usuarios es que HRD no es más lento que M/S, en promedio (en parte porque M/S tiene una variabilidad mucho más alta).

Hubo algunos puntos de referencia NDB hechos aquí: http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 - pero no se comparan los números con el antiguo db.

Puede utilizar Appstats para realizar operaciones de sincronización rápidamente en una aplicación real.

+4

¡Es bueno saberlo para mi primera publicación de Stack Overflow! Esperaba secretamente que tú fueras uno de los que respondieron, dado tu conocimiento íntimo de NDB y tu capacidad para analizar las estadísticas hasta la muerte con tu visión de rayos X de Python, una combinación mortal para esta pregunta. _Gracias_ por destacar algunos de los puntos de complejidad, y el enlace es muy útil. – wTyeRogers

Cuestiones relacionadas