En el Datastore de alta replicación (estoy usando NDB), la coherencia es eventual. Para obtener un conjunto completo garantizado, se pueden usar consultas de ancestros. Las consultas de ancestros también proporcionan una excelente manera de obtener todos los "hijos" de un ancestro en particular con consultas sin bondad. En resumen, ser capaz de aprovechar el modelo ancestro es de gran utilidad en GAE.¿Cómo cambiar el antecesor de un registro NDB?
El problema que parece tener es bastante simplista. Digamos que tengo un registro de contacto y un registro de mensaje. Un registro de contacto determinado se trata como el ancestro de cada mensaje. Sin embargo, es posible que se creen dos contactos para la misma persona (error de usuario, diferentes puntos de datos, lo que sea). Esta situación produce dos registros de contacto, que tienen mensajes relacionados con ellos.
Necesito poder "fusionar" los dos registros, y poner todos los mensajes en una pila grande. Idealmente, podría modificar el antecesor para uno de los hijos del registro.
La única forma en que puedo pensar en hacer esto, es crear una asignación y hacer que mi aplicación verifique si el registro se ha fusionado. Si es así, mira las asignaciones para encontrar uno o más registros relacionados y realiza consultas contra ellos. Esto parece muy ineficiente. ¿Hay más de la manera "por el libro" de manejar este caso de uso?
me parece que dependerá de cómo se vea tu modelo de datos. ¿cómo se decide si se deben fusionar 2 registros? – aschmid00
Buena pregunta, ya que esto está en una etapa de reflexión, supongamos que el usuario ingresó. – Sologoub
así que si desea fusionar en función de un campo específico de la entrada de usuario (digamos correo), consulte primero el almacén de datos y vea si ya existe un registro con ese correo electrónico y continúe desde allí. si la aplicación es nueva y no tiene registros, entonces le sugiero que cree el registro con el nombre de clave/ID basado en el correo electrónico para poder consultar por identificación. – aschmid00