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

Muchas a muchas actualizaciones en MongoDB sin transacciones

@Gareth , tienes varias formas legítimas de hacerlo. Por lo tanto, la principal preocupación es cómo planea consultar los datos (es decir, qué consultas deben ser rápidas )

Aquí hay un par de métodos.

Método #1:la colección de "enlaces"

Podría crear una colección que simplemente contenga asignaciones entre las colecciones.

Pros:

  • Admite actualizaciones atómicas para que los datos no se pierdan

Desventajas:

  • Consulta adicional al intentar moverse entre colecciones

Método n.° 2:almacenar copias de asignaciones más pequeñas en una colección más grande

Por ejemplo:tienes millones de Products , pero solo cien Categories . Entonces almacenarías las Categories como una matriz dentro de cada Product .

Pros:

  • Huella más pequeña
  • Solo necesita una actualización

Desventajas:

  • Consulta adicional si va por el "camino equivocado"

Método #3:almacenar copias de todas las asignaciones en ambas colecciones

(lo que estás sugiriendo)

Pros:

  • Acceso de consulta única para moverse entre cualquiera de las colecciones

Desventajas:

  • Índices potencialmente grandes
  • Necesita transacciones (?)

Hablemos de "transacciones de necesidades". Hay varias formas de realizar transacciones y realmente depende del tipo de seguridad que necesite.

Definitivamente puedes hacer esto. Tendrás que preguntarte, ¿qué es lo peor que sucede si solo falla uno de los guardados?

Método #4:poner en cola el cambio

No sé si alguna vez has trabajado con colas, pero si tienes un margen de maniobra puedes construir una cola simple y tener diferentes trabajos que actualicen sus respectivas colecciones.

Esta es una solución mucho más avanzada. Me inclinaría por el n.° 2 o el n.° 3.