2008-10-18 17 views
10

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?

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.
+0

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! –

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