Qual é a diferença entre um pai e uma propriedade de referência no Google App Engine?
-
03-07-2019 - |
Pergunta
Pelo que eu entendo, o atributo pai de uma db.Model (normalmente definidos / passada na chamada do construtor) permite definir hierarquias em seus modelos de dados. Como resultado, isso aumenta o tamanho do grupo de entidades. No entanto, não é muito claro para mim por que iria querer fazer isso. É este estritamente para o cumprimento ACID? Eu gostaria de ver situações em que cada um é mais adequado ou mais apropriada.
Solução
Existem várias diferenças:
- Todas as entidades com o mesmo ancestral estão no mesmo grupo de entidades. Transações só pode afetar as entidades dentro de um único grupo de entidades.
- Todas as gravações para um único grupo de entidades são serializados, então o rendimento é limitado.
- A entidade pai é definido na criação e é fixo. As referências podem ser alteradas a qualquer momento.
- Com propriedades de referência, só é possível consulta para relações diretas, mas com propriedades pai, você pode usar o filtro .ancestor () para encontrar tudo (direta ou indiretamente) descende de um determinado ancestral.
- Cada entidade tem apenas um único pai, mas pode ter várias propriedades de referência.
Outras dicas
A única finalidade de grupos de entidade (definida pelo atributo pai) é permitir transações entre diferentes entidades. Se você não precisa as transações, não use as relações grupais entidade.
Eu sugiro que você re-ler o href="http://code.google.com/appengine/docs/datastore/keysandentitygroups.html" rel="noreferrer"> seção dos docs, ele me levou muito poucos lê para entender a idéia.
assistir também estes palestras, entre outras coisas, eles discutem as transações e grupos de entidade: