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

Hvad er forskellen mellem en changeStream og tailable cursor i MongoDB

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:

  1. Brug den indbyggede MongoDB rollebaseret adgangskontrol . Programmer kan kun åbne ændringsstrømme mod samlinger, de har læst adgang til. Forfinet og specifik autorisation.

  2. 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.

  3. Æ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.

  4. 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.

  5. 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 parameteren resume_after . Se også Genoptag en ændringsstream .

  6. 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.



  1. Brug af Cloudera Data Engineering til at analysere dataene i lønsedlens beskyttelsesprogram

  2. Spring RedisTemplate :Serialiser flere modelklasser til JSON. Skal du bruge flere RedisTemplates?

  3. FieldPath-feltnavne må ikke indeholde '.' i $gruppe

  4. håndtering af navnerumsændringer under deserialisering af JSON String