sql >> Base de Datos >  >> NoSQL >> MongoDB

Las mejores prácticas para actualizar datos duplicados de forma asíncrona en mongodb

Básicamente tienes 3 opciones:

  1. Simplemente almacene el userId y luego buscar al usuario por separado. De esta manera, siempre obtiene los resultados óptimos en términos de datos actualizados. Pero, por supuesto, es más lento. Eso es básicamente lo que hace una base de datos relacional. Una base de datos SQL solo echará un vistazo a la clave externa y obtendrá los datos por id.

  2. Vive con datos desactualizados. Guarde un duplicado del nombre de usuario dentro de los comentarios. A veces, este es el comportamiento deseado, porque de esta manera puede representar los datos exactamente como estaban cuando se almacenaron. Esto significa:si John crea un comentario y luego su nombre de usuario se actualiza a Paul, aún puede ver que se ha creado como John. (Esto es especialmente útil para, por ejemplo, facturas, cuando hace referencia a una persona allí y la dirección cambia, entonces no desea actualizar la dirección de una factura anterior)

  3. Actualice todo lo que contenga un nombre de usuario, cuando se actualice el nombre de usuario. Esto tampoco es malo, porque un nombre de usuario normalmente nunca debería cambiar. Entonces, las lecturas siempre serán rápidas, porque el nombre se almacena dentro del comentario. Y si el nombre cambia, debe actualizar todo lo que involucra al usuario. Esta es una tarea lenta, por supuesto, pero debido a que no debería suceder cada minuto, es tolerable.

    3.1 Podría optimizar las cosas:si el nombre de usuario cambia, esto se almacena en algún lugar y se aplica a la medianoche. De esta forma, puede recopilar varios cambios de nombre y actualizar todo al mismo tiempo.

Como puede ver:NoSQL se trata de elegir . Puede hacer las cosas que mejor se adapten a sus datos. Por supuesto, siempre hay una compensación:más lento/más rápido, más/menos código para escribir, más fácil/difícil de mantener.

Resumido es:

  1. Escrituras rápidas, datos consistentes, lecturas lentas
  2. Escrituras rápidas, datos inconsistentes, lecturas rápidas
  3. Escrituras rápidas, lecturas rápidas, los datos se vuelven consistentes después del proceso de actualización, lo que puede llevar algún tiempo. Y el proceso de actualización, por supuesto, es lento.