ndb how google for engine create app python-2.7 google-app-engine google-cloud-datastore app-engine-ndb

python 2.7 - how - Diseño, rendimiento y uso de GAE ndb de propiedades repetidas



ndb put (2)

En general, v1 sería mucho más barato.

En términos de costos de lectura / escritura, paga por búsqueda de entidad / escritura, por lo que desea reducir la cantidad de entidades. la versión 1 será más barata. Significativamente más barato si buscas a todos los fanáticos cada vez que tomas una foto.

Sin embargo, cada entidad está limitada a 1 MB. Si tiene 100k + ventiladores, puede alcanzar ese límite según el tamaño de su fanId. Eso no cuenta sus otros datos de imagen, por lo que podría superar ese límite de 1MB. Tendrá que agregar un código más complejo para manejar los casos de desbordamiento.

Las entidades grandes tardan más tiempo en captar que las entidades pequeñas. Si vas a buscar a todos los fans a la vez todo el tiempo, v1 será mejor. Si solo va a buscar 5 admiradores en un punto determinado, v2 podría ser más rápido (solo podría hacerlo). Si, por otro lado, tratas de atraer 100k entidades de fans ... eso llevará una eternidad.

Digamos que tengo una galería de fotos y una imagen podría tener 100k + fans. ¿Qué diseño de ndb es más eficiente?

class picture(ndb.model): fanIds = ndb.StringProperty(repeated=True) ... [other picture properties]

o

class picture(ndb.model): ... [other picture properties] class fan(ndb.model): pictureId = StringProperty() fanId = StringProperty()

¿Hay algún límite en la cantidad de elementos que puede agregar a una propiedad repetida ndb y hay algún impacto en el rendimiento al almacenar una gran cantidad de elementos en una propiedad repetida? Si es menos eficiente usar propiedades repetidas, ¿cuál es su uso previsto?


No use propiedades repetidas si tiene más de 100-1000 valores. (1000 probablemente ya lo está presionando). No fueron diseñados para tal uso.