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

Procedure consigliate per aggiornare i dati duplicati in modo asincrono in mongodb

Fondamentalmente hai 3 opzioni:

  1. Basta memorizzare l'userId e quindi recuperare l'utente separatamente. In questo modo ottieni sempre i risultati ottimali in termini di dati aggiornati. Ma ovviamente è più lento. Questo è fondamentalmente ciò che fa un database relazionale. Un DB SQL darà solo un'occhiata alla chiave esterna e recupererà i dati per id.

  2. Vivi con dati scaduti. Memorizza un duplicato del nome utente all'interno dei commenti. A volte questo è un comportamento desiderato, perché in questo modo puoi rappresentare i dati esattamente come erano quando sono stati archiviati. Ciò significa:se John crea un commento e successivamente il suo nome utente viene aggiornato a Paul, puoi ancora vedere che è stato creato come John. (Ciò è particolarmente utile per le fatture, ad esempio, quando si fa riferimento a una persona e l'indirizzo cambia, quindi non si desidera aggiornare l'indirizzo di una vecchia fattura)

  3. Aggiorna tutto ciò che contiene un nome utente, quando il nome utente viene aggiornato. Anche questo non è male, perché un nome utente normalmente non dovrebbe mai cambiare. Quindi le letture saranno sempre veloci, perché il nome è memorizzato all'interno del commento. E se il nome cambia, devi aggiornare tutto ciò che riguarda l'utente. Questo è un compito lento ovviamente, ma poiché non dovrebbe accadere ogni minuto, è tollerabile.

    3.1 Potresti ottimizzare le cose:se il nome utente cambia, questo viene archiviato da qualche parte e applicato a mezzanotte. In questo modo puoi raccogliere più cambi di nome e aggiornare tutto contemporaneamente.

Come puoi vedere:NoSQL riguarda la scelta . Puoi fare le cose che si adattano meglio ai tuoi dati. Ovviamente è sempre un compromesso:più lento/più veloce, più/meno codice da scrivere, più facile/più difficile da mantenere.

Riassunto è:

  1. Scritture veloci, dati coerenti, letture lente
  2. Scritture veloci, dati incoerenti, letture veloci
  3. Scritture veloci, letture veloci, i dati diventano coerenti dopo il processo di aggiornamento che potrebbe richiedere del tempo. E il processo di aggiornamento ovviamente è lento.