seguimiento a my earlier question regarding GAE Datastore entity hierarchies, todavía estoy confundido acerca de cuándo utilizar grupos de entidades.Cuándo utilizar grupos de entidades en el almacén de datos de GAE
Tome este sencillo ejemplo:
- Cada
Company
tiene uno o másEmployee
entidades - Un
Employee
no se puede mover a otroCompany
, y los usuarios que tienen que ver con unaCompany
nunca puede ver losEmployee
s de otraCompany
Esto parece un caso en el que podía hacer Employee
un entidad hijo de Company
, pero ¿cuáles son las consecuencias prácticas? ¿Esto mejora la escalabilidad, perjudica la escalabilidad o no tiene ningún impacto? ¿Cuáles son otras ventajas/desventajas de usar o no una jerarquía de entidades?
(Los grupos de entidades permiten transacciones, pero asumen para este ejemplo que no necesito transacciones).
el espíritu aquí es definitivamente correcto, y puedo revisar un poco los detalles técnicos. los grupos de entidades duelen la escalabilidad porque las escrituras se serializan por grupo de entidades, no porque sus datos se almacenen juntos. (la ubicación espacial a menudo es buena para almacenar en caché y escalar, dependiendo de los detalles de implementación.) dado que no se preocupe demasiado por el volumen de datos por grupo de entidades. Lo principal de lo que preocuparse es el rendimiento de escritura.como se observa en muchos otros lugares, no puede hacer más de 1 a 10 escrituras por segundo por grupo de entidades. – ryan
Otro beneficio importante son las lecturas muy consistentes. Tal vez "permiten transacciones" implica esto, pero esto no fue inmediatamente claro para mí. – Chris
@Chris Yup, en sí mismo, un EG permite lecturas consistentes con el uso de consultas de ancestros. Las transacciones son un concepto relacionado, pero son diferentes; las transacciones están destinadas a garantizar la atomicidad para operaciones múltiples (por ejemplo, una lectura más una escritura). Por cierto, hay una forma más de lograr lecturas muy consistentes para una entidad, que es realizar una búsqueda por clave. Esto requiere que sepas cuál es la clave en primer lugar sin "preguntar" al almacén de datos. https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/ –