sql >> Databasteknik >  >> NoSQL >> MongoDB

Vad är skillnaden mellan en changeStream och tailable cursor i MongoDB

Ändra strömmar (tillgänglig i MongoDB v3.6+) är en funktion som låter dig komma åt dataändringar i realtid utan komplexiteten och risken att tappa oplog . Viktiga fördelar med förändringsströmmar över efter oploggen är:

  1. Använd den inbyggda MongoDB rollbaserad åtkomstkontroll . Appar kan bara öppna ändringsströmmar mot samlingar som de har läst tillgång till. Förfinad och specifik auktorisation.

  2. Ge ett väldefinierat API som är tillförlitligt. ändringshändelser output som returneras av förändringsströmmar är väl dokumenterade. Alla officiella MongoDB-drivrutiner följ samma specifikationer vid implementering av gränssnitt för förändringsströmmar.

  3. Ändringshändelser som returneras som en del av ändringsströmmar är åtminstone förpliktade till majoriteten av replikuppsättningen. Detta innebär att förändringshändelserna som skickas till klienten är hållbara. Applikationer behöver inte hantera dataåterställning i händelse av failover.

  4. Ge en total ordning av ändringar över skärvor genom att använda en global logisk klocka. MongoDB garanterar att ändringarnas ordning bevaras och att förändringshändelser säkert kan tolkas i den mottagna ordningen. Till exempel returnerar en ändringsströmmarkör som öppnas mot ett 3-sharded kluster förändringshändelser som respekterar den totala ordningen för dessa ändringar över alla tre shards.

  5. På grund av ordningsegenskapen är förändringsströmmar också i sig återupptagbara. _id av ändra händelseutdata är ett CV-token. MongoDB officiella drivrutiner cachelagrar automatiskt detta CV-token, och i fallet med övergående nätverksfel kommer drivrutinen att försöka igen en gång. Dessutom kan applikationer även återupptas manuellt genom att använda parametern resume_after . Se även Återuppta en förändringsström .

  6. Använd MongoDB-aggregationspipeline . Applikationer kan ändra utdata för förändringshändelser. För närvarande finns det fem pipeline-steg tillgängliga för att ändra händelseutdata. Ändringshändelseutgångar kan till exempel filtreras bort (serversidan) innan de skickas ut med $matchsteg . Se Ändra ändra strömutgång för mer information.

Om din MongoDB-distribution är version 3.6+, skulle jag rekommendera att använda MongoDB Change Streams över att avsluta oploggen.

Du kan också hitta Rekommendationer för produktion av ändra strömmar en användbar resurs.



  1. Problem med Redis install cc:Kommandot hittades inte

  2. Mongodb Aggregera komplexa dokument med kapslade sökningar

  3. Flera databaser (mongodb[mongoengine] och sql ) med django 1.8

  4. Bästa sättet att organisera underdokument i Mongo?