sql >> Database >  >> NoSQL >> MongoDB

Wat is het verschil tussen een changeStream en een staartbare cursor in MongoDB?

Streams wijzigen (beschikbaar in MongoDB v3.6+) is een functie waarmee u toegang hebt tot realtime gegevenswijzigingen zonder de complexiteit en het risico van het volgen van de oplog . Belangrijkste voordelen van veranderingsstromen over die de oplog volgen zijn:

  1. Gebruik de ingebouwde MongoDB Role-Based Access Control . Applicaties kunnen alleen wijzigingsstromen openen voor collecties die ze hebben gelezen toegang tot. Verfijnde en specifieke autorisatie.

  2. Zorg voor een goed gedefinieerde API die betrouwbaar is. De gebeurtenissen wijzigen output die wordt geretourneerd door wijzigingsstromen zijn goed gedocumenteerd. Ook alle officiële MongoDB-stuurprogramma's volg dezelfde specificaties bij het implementeren van de interface voor wijzigingsstromen.

  3. Wijzigingsgebeurtenissen die worden geretourneerd als onderdeel van wijzigingsstromen, worden ten minste vastgelegd voor het grootste deel van de replicaset. Dit betekent dat de wijzigingsgebeurtenissen die naar de klant worden verzonden, duurzaam zijn. Toepassingen hoeven geen gegevensherstel af te handelen in het geval van een failover.

  4. Zorg voor een totale volgorde van wijzigingen over shards door gebruik te maken van een globale logische klok. MongoDB garandeert dat de volgorde van wijzigingen behouden blijft en dat wijzigingsgebeurtenissen veilig kunnen worden geïnterpreteerd in de ontvangen volgorde. Een wijzigingsstroomcursor die bijvoorbeeld is geopend tegen een shardcluster met 3 shards, retourneert wijzigingsgebeurtenissen met inachtneming van de totale volgorde van die wijzigingen voor alle drie de shards.

  5. Door het ordeningskenmerk zijn ook wijzigingsstromen inherent hervatbaar. De _id van gebeurtenisuitvoer wijzigen is een cv-token. Officiële MongoDB-stuurprogramma's cachen dit hervattingstoken automatisch in de cache en in het geval van een tijdelijke netwerkfout zal het stuurprogramma het eenmaal opnieuw proberen. Bovendien kunnen applicaties ook handmatig worden hervat door gebruik te maken van parameter resume_after . Zie ook Een wijzigingsstroom hervatten .

  6. Gebruik MongoDB-aggregatiepijplijn . Toepassingen kunnen de uitvoer van wijzigingsgebeurtenissen wijzigen. Momenteel zijn er vijf pijplijnfasen beschikbaar om de gebeurtenisuitvoer te wijzigen. Uitvoer van wijzigingsgebeurtenissen kan bijvoorbeeld worden uitgefilterd (serverzijde) voordat ze worden verzonden met behulp van $match-fase . Zie Wijzig stream-uitvoer wijzigen voor meer informatie.

Als uw MongoDB-implementatie versie 3.6+ is, zou ik aanraden om MongoDB Change Streams te gebruiken in plaats van de oplog te volgen.

Mogelijk vindt u ook Aanbevelingen voor het wijzigen van streams een nuttige bron.



  1. een verzameling in zichzelf dupliceren

  2. Waarom kost een 500 MB Redis dump.rdb-bestand ongeveer 5,0 GB geheugen?

  3. Hoe te controleren of het geselecteerde e-mailadres en de naam al bestaan ​​in MongoDB

  4. pymongo:naam 'ISODate' is niet gedefinieerd