python - nodejs - ndb google app engine
¿Cuál es la diferencia entre un padre y una propiedad de referencia en Google App Engine? (2)
Por lo que entiendo, el atributo padre de un modelo db.Model (típicamente definido / pasado en la llamada del 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.
El único propósito de los grupos de entidades (definidos por el atributo principal) es habilitar transacciones entre diferentes entidades. Si no necesita las transacciones, no use las relaciones del grupo de entidades.
Le sugiero que vuelva a leer la sección de Llaves y grupos de entidades de los documentos, me llevó bastantes lecturas comprender la idea.
También mire estas charlas, entre otras cosas, discuten transacciones y grupos de entidades:
Hay varias diferencias:
- Todas las entidades con el mismo antecesor están 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.