In deze post bekijken we hoe we de runtime-omgeving van Node.js gebruiken om ons te helpen werken met datastromen die naar onze applicatie komen.

 

Node.js staat bekend om zijn asynchrone aard en heeft vele modules die we dagelijks in onze code gebruiken, maar krijgt altijd de kans om dieper in te duiken. Een van deze kernmodules zijn streams.

Met streams kunnen we de gegevensstroom asynchroon verwerken. Er zijn twee benaderingen voor gegevensverwerking in Nod.js.

 

  1. Gebufferde benadering: de gebufferde benadering zegt dat een ontvanger de gegevens alleen kan lezen als de hele gegevensset naar de buffer is geschreven.
  2. Streams-benadering: in de streambenaanpak komen gegevens in brokken binnen en kunnen ze in delen worden gelezen; dit kan een enkel deel van de gegevens zijn.

 

Typen streams beschikbaar:

  1. Laten we experimenteren door een groot bestand te maken:

We hebben een bestand gemaakt met behulp van de Writable Stream. De fs-module in Node.js kan worden gebruikt om te lezen van en te schrijven naar bestanden met behulp van een Stream-interface. Het uitvoeren van de bovenstaande code genereert een bestand dat ongeveer ~ 400 MB is.

 

  1. Laten we hetzelfde grote bestand lezen met behulp van de leesstream:

Dan maak ik verbinding met de server. Let op wat er met het verbruikte geheugen gebeurde:

 

Geoptimaliseerde oplossing voor gegevenstransformatie

Tijd efficientie

Voor een betere efficiëntie kunnen we een geweldig gedrag gebruiken dat wordt geleverd met streams in Node: piping. In principe kunt u twee streams pipen waarbij de uitvoer van de ene stream een ​​input is voor de andere.

Wat er gebeurt is dat de “data” (brok) aankomt bij “stream 1” die “doorgesluisd wordt naar stream 2” die verder naar andere streams kan worden doorgestuurd,

Met ‘pipes’:

Op deze manier kunnen we meerdere fasen parallel maken die een gegevensblok kan doormaken. Deze strategie wordt pipelining genoemd. Met Node.js kunnen we onze taken pijplijnen met behulp van streams. Node.js kan op één thread werken, maar dit betekent niet dat we niet twee taken of processen tegelijkertijd kunnen uitvoeren. Dit kan worden gedaan via onderliggende processen in Node.js