Skift streams (tilgængelig i MongoDB v3.6+) er en funktion, der giver dig adgang til dataændringer i realtid uden kompleksiteten og risikoen for at følge oplog . Vigtigste fordele ved forandringsstrømme over efter oploggen er:
-
Brug den indbyggede MongoDB rollebaseret adgangskontrol . Programmer kan kun åbne ændringsstrømme mod samlinger, de har læst adgang til. Forfinet og specifik autorisation.
-
Giv en veldefineret API, der er pålidelig. ændringsbegivenheder output, der returneres af ændringsstrømme, er veldokumenterede. Også alle de officielle MongoDB-drivere følg de samme specifikationer ved implementering af interface til ændringsstrømme.
-
Ændringshændelser, der returneres som en del af ændringsstrømme, er i det mindste forpligtet til størstedelen af replikasættet. Det betyder, at de ændringshændelser, der sendes til klienten, er holdbare. Applikationer behøver ikke at håndtere data rollback i tilfælde af failover.
-
Giv en samlet rækkefølge af ændringer på tværs af shards ved at bruge et globalt logisk ur. MongoDB garanterer, at ændringsrækkefølgen bevares, og ændringsbegivenheder kan sikkert fortolkes i den modtaget rækkefølge. For eksempel returnerer en ændringsstrømmarkør, der åbnes mod en 3-shard shard-klynge, ændringshændelser, der respekterer den samlede rækkefølge af disse ændringer på tværs af alle tre shards.
-
På grund af bestillingskarakteristikken kan ændringsstrømme også i sagens natur genoptages.
_id
af ændre hændelsesoutput er et CV-token. MongoDBs officielle drivere cacherer automatisk dette CV-token, og i tilfælde af en kortvarig netværksfejl vil driveren prøve igen én gang. Derudover kan applikationer også genoptages manuelt ved at bruge parameterenresume_after
. Se også Genoptag en ændringsstream . -
Brug MongoDB aggregeringspipeline . Applikationer kan ændre output for ændringshændelser. I øjeblikket er der fem pipeline-trin tilgængelige til at ændre hændelsesoutput. For eksempel kan ændringshændelsesoutput filtreres fra (serversiden), før de sendes ud ved hjælp af $kampfase . Se Rediger ændring af streamoutput for mere information.
Hvis din MongoDB-implementering er version 3.6+, vil jeg anbefale at bruge MongoDB Change Streams i stedet for at hale oploggen.
Du kan også finde Change Streams Production Recommendations en nyttig ressource.