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

Qual è la differenza tra un changeStream e un cursore tailable in MongoDB

Cambia stream (disponibile in MongoDB v3.6+) è una funzionalità che consente di accedere alle modifiche dei dati in tempo reale senza la complessità e il rischio di pedinare il oplog . Principali vantaggi dei flussi di cambiamento oltre in coda all'oplog sono:

  1. Utilizza il MongoDB Role-Based Access Control integrato . Le applicazioni possono aprire flussi di modifiche solo rispetto alle raccolte che hanno letto accesso a. Raffinata e specifica autorizzazione.

  2. Fornire un'API ben definita che sia affidabile. Gli eventi di modifica l'output restituito dai flussi di modifiche è ben documentato. Inoltre, tutti i driver MongoDB ufficiali segui le stesse specifiche quando si implementa l'interfaccia dei flussi di modifiche.

  3. Gli eventi di modifica restituiti come parte dei flussi di modifiche sono almeno impegnati nella maggior parte del set di repliche. Ciò significa che gli eventi di modifica inviati al client sono durevoli. Le applicazioni non devono gestire il rollback dei dati in caso di failover.

  4. Fornisci un ordinamento totale delle modifiche tra gli shard utilizzando un orologio logico globale. MongoDB garantisce che l'ordine delle modifiche venga mantenuto e che gli eventi di modifica possano essere interpretati in modo sicuro nell'ordine ricevuto. Ad esempio, un cursore del flusso di modifiche aperto su un cluster partizionato da 3 frammenti restituisce gli eventi di modifica rispettando l'ordine totale di tali modifiche su tutti e tre gli shard.

  5. A causa della caratteristica di ordinamento, anche i flussi di modifiche sono intrinsecamente ripristinabili. Il _id di output dell'evento di modifica è un token di ripristino. I driver ufficiali MongoDB memorizzano automaticamente nella cache questo token di ripristino e, in caso di errore transitorio di rete, il driver riproverà una volta. Inoltre, le applicazioni possono anche riprendere manualmente utilizzando il parametro resume_after . Vedi anche Riprendi un flusso di modifiche .

  6. Utilizza pipeline di aggregazione MongoDB . Le applicazioni possono modificare l'output degli eventi di modifica. Attualmente sono disponibili cinque fasi della pipeline per modificare l'output dell'evento. Ad esempio, gli output degli eventi di modifica possono essere filtrati (lato server) prima di essere inviati utilizzando Fase $match . Vedi Modifica output flusso di modifiche per maggiori informazioni.

Se la tua distribuzione di MongoDB è la versione 3.6+, consiglierei di utilizzare MongoDB Change Streams oltre a pedinare l'oplog.

Puoi anche trovare Consigli per la produzione di Change Streams una risorsa utile.