Por lo que entiendo, el atributo padre de un modelo db.Model (típicamente definido/pasado en la llamada al constructor) le permite definir jerarquías en sus modelos de datos. Como resultado, esto aumenta el tamaño del grupo de entidades. Sin embargo, no tengo muy claro por qué querríamos hacer eso. ¿Esto es estrictamente para el cumplimiento de ACID? Me gustaría ver escenarios donde cada uno sea más adecuado o más apropiado.¿Cuál es la diferencia entre un padre y una propiedad de referencia en Google App Engine?
10
A
Respuesta
15
hay varias diferencias:
- Todas las entidades con el mismo ancestro está en el mismo grupo de entidades. Las transacciones solo pueden afectar entidades dentro de un solo grupo de entidades.
- Todas las escrituras en un solo grupo de entidades están serializadas, por lo que el rendimiento es limitado.
- La entidad principal está configurada en la creación y es fija. Las referencias se pueden cambiar en cualquier momento.
- Con las propiedades de referencia, solo puede consultar relaciones directas, pero con las propiedades principales puede usar el filtro .ancestor() para encontrar todo (directa o indirectamente) descendiente de un antecesor determinado.
- Cada entidad solo tiene un único padre, pero puede tener múltiples propiedades de referencia.
8
El único propósito de los grupos de entidades (definidos por el atributo principal) es habilitar transacciones entre entidades diferentes. Si no necesita las transacciones, no use las relaciones del grupo de entidades.
Le sugiero que vuelva a leer la sección Keys and Entity Groups de los documentos, me tomó bastantes lecturas para captar la idea.
reloj también estas conversaciones, entre otras cosas se discuten las transacciones y los grupos de entidades:
+0
Gracias por los enlaces. – JamesC
Cuestiones relacionadas
- 1. En Google App Engine, ¿cuál es la diferencia entre Model.get (clave) y Model.get_by_key_name (key_names)?
- 2. ¿Cuál es la diferencia principal entre Java para Google App Engine y Java EE?
- 3. Google App Engine
- 4. Google App Engine: ¿Cuál es su RDBMS?
- 5. ¿Cuál es la diferencia entre Django, Ruby on Rails, Google App Engine, etc.?
- 6. ¿cuál es la diferencia entre/system/app y/data/app?
- 7. Google App Engine: ¿quién es un administrador?
- 8. Cuál es la diferencia entre Propiedad y Propiedad de Dependencia
- 9. ¿Cuál es la diferencia entre key_id y key_name en App Engine Datastore?
- 10. ¿Cuál es la diferencia entre una referencia __weak y __block?
- 11. Google App Engine y dos.xml
- 12. ¿Usa antepasados o propiedades de referencia en Google App Engine?
- 13. Google App Engine y CORS
- 14. ¿Cuál es la diferencia entre una propiedad de dependencia y una propiedad adjunta en WPF?
- 15. Google App Engine Locking
- 16. Google Maps y Google App Engine
- 17. ¿Cuál es la diferencia entre ImmutableList de Google y Collections.unmodifiableList()?
- 18. ¿Cuál es la diferencia entre una propiedad de lectura y una propiedad de asignación no atómica?
- 19. ¿Google App Engine es adecuado para mí?
- 20. Google App Engine en Google Apps Domain
- 21. ¿cuál es la diferencia entre propiedad estática y singleton?
- 22. ¿Cuál es la diferencia entre una referencia web y una referencia de servicio?
- 23. Google App Engine Geohashing
- 24. ¡Juego! 2.0 y Google App Engine
- 25. Google App Engine y nombre de dominio
- 26. Google-app-engine NDB
- 27. app-engine-patch está muerto. Ahora, ¿cuál es la mejor forma de usar Django en Google App Engine?
- 28. ¿Cuál es la diferencia exacta entre la propiedad currentTarget y la propiedad de destino en javascript
- 29. Diferencia entre una relación propiedad de uno a muchos y propiedad de uno a muchos relación bidireccional (Google App Engine Java Api)
- 30. ¿Qué tan rápido es Google App Engine?
Merece la pena también señalar que puede crear entidades con la misma clave principal, incluso si ese padre no existe realmente, por lo que puede colocar cosas en el mismo grupo incluso sin especificar que una de ellas sea la principal. ¡No puedo decir que pueda pensar en una buena razón para hacer esto! –