Processamento de Fluxo de Dados

Um fluxo de dados (do inglês, data stream) representa um conjunto, possivelmente infinito, de dados que precisam ser processados.

Por ser potencialmente infinito, não é viável utilizar as estruturas de dados clássicas (arrays, listas, filas, etc) para representar fluxos. Um fluxo é, por assim dizer, "um array armazenado ao longo do tempo e não do espaço de memória".

Em um fluxo, os dados:

  1. Possuem uma origem, onde vão sendo gerados ao longo do tempo.

  2. Passam por uma sequência de transformações. Cada transformação faz nascer um outro fluxo, sem destruir o fluxo original.

  3. Possuem um destino, onde vão sendo destruídos/consumidos/armazenados.

    O conceito de fluxo de dados pode ser usado tanto no lado servidor como no lado cliente de uma aplicação para web. O framework Cycle.js, por exemplo, permite que o lado cliente seja todo concebido com base no conceito de fluxo de dados.

Em aplicações do tipo big data, o usuário ou algum dispositivo IoT (Internet das Coisas) pode ser a origem dos dados. A medida que os dados vão sendo gerados, pela ação do dispositivo ou do usuário (via teclado, mouse ou toque na tela) eles são processados e podem ter seu destino atualizando parte da tela (por exemplo, um contador de cliques).

Talvez o principal benefício da abordagem de fluxo de dados para implementar o lado cliente de uma aplicação para web é que ela oferece um estilo mais declarativo de programação, onde os fluxos de dados são representados explicitamente.

A biblioteca ReactiveX (http://reactivex.io/intro.html) é uma das mais populares em se tratando de programação que incorpora o conceito de fluxo de dados.

Leitura Obrigatória
Slides: Everything is a stream
Rx Marbles
Post: An Animated Intro to RxJS
Framework Cycle.js

results matching ""

    No results matching ""