MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Molti a molti aggiornano in MongoDB senza transazioni

@Gareth , hai diversi modi legittimi per farlo. Quindi la loro preoccupazione principale è come prevedi di eseguire query per i dati, (ad esempio:quali query devono essere veloci )

Ecco un paio di metodi.

Metodo n. 1:la raccolta dei "link"

Potresti creare una raccolta che contenga semplicemente mappature tra le raccolte.

Pro:

  • Supporta gli aggiornamenti atomici in modo che i dati non vengano persi

Contro:

  • Richiesta aggiuntiva quando si tenta di spostarsi tra le raccolte

Metodo n. 2:archivia copie di mappature più piccole in una raccolta più ampia

Ad esempio:hai milioni di Products , ma solo un centinaio di Categories . Quindi memorizzeresti le Categories come matrice all'interno di ogni Product .

Pro:

  • Ingombro minimo
  • Solo un aggiornamento

Contro:

  • Domanda aggiuntiva se hai sbagliato strada

Metodo n. 3:archivia copie di tutte le mappature in entrambe le raccolte

(cosa stai suggerendo)

Pro:

  • Accesso a una singola query per spostarsi tra una delle due raccolte

Contro:

  • Indici potenzialmente grandi
  • Richiede transazioni (?)

Parliamo di "transazioni di bisogni". Esistono diversi modi per effettuare transazioni e dipende molto dal tipo di sicurezza di cui hai bisogno.

Puoi sicuramente farlo. Dovrai chiederti, qual è la cosa peggiore che succede se solo uno dei salvataggi fallisce?

Metodo n. 4:accoda la modifica

Non so se hai mai lavorato con le code, ma se hai un margine di manovra puoi creare una coda semplice e avere diversi lavori che aggiornano le rispettive raccolte.

Questa è una soluzione molto più avanzata. Tenderei a scegliere il n. 2 o il n. 3.