O que é streaming de dados?
O streaming de dados é o processo de transmissão de um fluxo contínuo de dados (também conhecido como stream) que normalmente é enviado a um software de processamento de fluxo para gerar informações valiosas. Um fluxo de dados consiste em uma série de elementos de dados ordenados no tempo. Os dados representam um “evento” ou uma mudança de estado que ocorreu na empresa e são úteis para a empresa conhecer e analisar, geralmente em tempo real. Alguns exemplos de fluxos de dados incluem dados de sensores, logs de atividades de navegadores da Web e logs de transações financeiras. Um fluxo de dados pode ser visualizado como uma esteira transportadora sem fim, transportando elementos de dados e enviando-os continuamente para um processador de dados.
Com o crescimento da Internet das Coisas (IoT) e das expectativas dos clientes, a importância do streaming de dados e do processamento de fluxo aumentou. Monitores de saúde pessoal e sistemas de segurança doméstica são dois exemplos de fontes de streaming de dados. Um sistema de segurança residencial inclui vários sensores de movimento para monitorar diferentes áreas da casa. Esses sensores geram um fluxo de dados transmitido continuamente para uma infraestrutura de processamento que monitora qualquer atividade inesperada em tempo real ou salva os dados para analisar posteriormente os padrões mais difíceis de detectar. Monitores de saúde são outro exemplo de fontes de streaming de dados, incluindo monitores de batimentos cardíacos, pressão arterial ou oxigênio. Esses dispositivos geram dados continuamente. A análise oportuna desses dados é essencial, pois a segurança da pessoa pode depender disso.
Quais são as características gerais dos fluxos de dados?
Os dados de streaming de sensores, navegadores da Web e outros sistemas de monitoramento têm certas características que os diferenciam dos dados históricos tradicionais. A seguir estão algumas características principais dos dados de streaming:
Sensíveis ao tempo
Cada elemento em um fluxo de dados carrega um carimbo de data/hora. Os fluxos de dados são sensíveis ao tempo e perdem significado após um determinado tempo. Por exemplo, os dados de um sistema de segurança residencial que indicam um movimento suspeito devem ser analisados e tratados em um curto período de tempo para permanecerem relevantes.
Contínuos
Não há início ou fim para dados de streaming. Os fluxos são contínuos e acontecem em tempo real, mas nem sempre geram ações imediatamente, dependendo dos requisitos do sistema.
Heterogêneos
Os dados de streaming geralmente se originam de milhares de fontes diferentes, que podem estar geograficamente distantes. Devido à disparidade nas fontes, os dados de streaming podem ser uma mistura de formatos diferentes.
Imperfeitos
Devido à variedade de suas fontes e aos diferentes mecanismos de transmissão de dados, um fluxo de dados pode ter elementos de dados ausentes ou danificados. Além disso, os elementos de dados em um fluxo podem chegar fora de ordem.
Voláteis e irrepetíveis
Como o streaming de dados acontece em tempo real, a transmissão repetida de um stream é bastante difícil. Embora existam disposições para retransmissão, os novos dados podem não ser os mesmos que os anteriores. Isso torna os fluxos de dados altamente voláteis. No entanto, muitos sistemas modernos mantêm um registro de seus fluxos de dados; portanto, mesmo que você não possa acessá-los no momento, ainda poderá analisá-los mais tarde.

Qual é a importância do streaming de dados para os negócios?
Dados no formato de fluxos são altamente significativos no mundo de hoje. Inúmeros dispositivos IoT e usuários da Internet geram grandes volumes de dados contínuos e em tempo real a cada segundo. Processar esses dados em tempo real é um desafio e uma oportunidade para as organizações.
A natureza mutável dos dados
Tradicionalmente, as organizações coletam dados ao longo do tempo, armazenam-nos em data warehouses e os processam em lotes. Isso economiza poder de computação escasso. Nos últimos anos, a estrutura de dados e as tecnologias de processamento mudaram muito. A IoT introduziu uma ampla gama de sensores que geram dados de streaming. Cartões de crédito e transações financeiras online também geram dados em tempo real que precisam ser analisados e verificados. Os navegadores da Web geram transações online e logs de atividades. O streaming de dados e o processamento de fluxo são essenciais para lidar com esses tipos de dados.
Grandes volumes de dados
A quantidade de dados gerada a cada segundo é muito grande para ser armazenada em qualquer data warehouse. Portanto, os dados de streaming geralmente são avaliados no momento para determinar se são uma peça-chave de dados em tempo real ou se são desnecessários. Como resultado, os sistemas podem transmitir dados e analisá-los imediatamente para decidir o que é armazenado e o que não é, ajudando as organizações a reduzir o armazenamento e a perda de dados e a economizar em custos de infraestrutura.
Exemplos de streaming de dados
Internet das Coisas: a IoT inclui um grande número de dispositivos que coletam dados usando sensores e os transmitem em tempo real para um processador de dados. Os dados de IoT geram dados de streaming. Monitores de saúde vestíveis, como relógios, sistemas de segurança doméstica, sistemas de monitoramento de tráfego, scanners biométricos, eletrodomésticos conectados, segurança cibernética e sistemas de privacidade geram e transmitem dados em tempo real.
Monitores do mercado de ações em tempo real: os dados financeiros em tempo real são frequentemente transmitidos em um formato de fluxo. Processar e analisar dados financeiros (como preços de ações e tendências de mercado) ajuda as organizações a tomar decisões cruciais rapidamente.
Logs de atividades e transações: a Internet também é uma importante fonte de dados de streaming em tempo real. Quando as pessoas visitam sites ou clicam em links, os navegadores da web geram registros de atividades. As transações financeiras on-line, como compras com cartão de crédito, também geram dados de tempo crítico que podem ser transmitidos e processados para ações em tempo real.
Monitores de processo: toda empresa gera bilhões de pontos de dados de seus sistemas internos. Ao transmitir esses dados e processá-los em tempo real, as empresas podem monitorar a integridade do sistema e agir antes que as coisas piorem. Por exemplo, as empresas de manufatura costumam ter dispositivos para monitorar a integridade da linha de montagem e detectar falhas para avaliar os riscos na produção. Esses dispositivos também podem transmitir dados de tempo crítico para monitorar interrupções e até mesmo evitá-las.
O que é o processamento de fluxo? Como funciona?
Para processar dados de streaming ou dados ao vivo, você precisa de um processo bem diferente do processamento em lote tradicional. Um processador de fluxo coleta, analisa e visualiza um fluxo contínuo de dados. E, claro, para processar, você precisa começar com o streaming de dados. O streaming de dados está no início do processamento de fluxo. O processamento de fluxo é usado para receber os fluxos de dados e gerar insights com eles, geralmente em tempo real. Devido à natureza exclusiva dos dados de streaming, um processador de fluxo precisa atender aos seguintes requisitos:
Baixa latência
Um processador de fluxo deve funcionar rapidamente em fluxos contínuos de dados. A velocidade de processamento é uma preocupação crucial devido a duas razões. Primeiro, os dados chegam como um fluxo contínuo e, se o processador for lento e perder dados, ele não poderá voltar. Em segundo lugar, os dados de streaming perdem sua relevância em pouco tempo. Qualquer atraso no processamento causa deterioração do valor dos dados.
Escalabilidade
Os dados de streaming nem sempre têm o mesmo volume. Por exemplo, os sensores geralmente podem gerar baixos volumes de dados, mas, ocasionalmente, pode haver um pico nos dados. Como o volume de dados é imprevisível, o processador deve ser dimensionado para lidar com grandes volumes de dados, se necessário.
Disponibilidade
Um processador de fluxo não pode suportar longos períodos de inatividade. Os dados de streaming são contínuos e chegam em tempo real. Um processador deve ser tolerante a falhas, o que significa que deve continuar funcionando mesmo que alguns de seus componentes falhem. Um processador de fluxo também deve ser capaz de coletar, processar e passar as informações para uma camada superior imediatamente para apresentação.
Quais são os principais componentes de um processador de fluxo?
Em geral, existem dois casos de uso no processamento de fluxo:
Gerenciamento de fluxo de dados
No gerenciamento de fluxo de dados, o objetivo do processamento de fluxo é criar um resumo dos dados recebidos ou construir modelos. Por exemplo, a partir de um fluxo contínuo de dados faciais, um processador de fluxo pode criar uma lista de recursos faciais. Outro exemplo desse caso de uso são os logs de atividade da Internet. A partir do fluxo constante de dados de cliques do usuário, o processador de fluxo tenta calcular as preferências e gostos do usuário.
Processamento de eventos complexos
O processamento de eventos complexos é o caso de uso que se aplica à maioria dos fluxos de dados de IoT. Nesse caso de uso, o fluxo de dados consiste em fluxos de eventos. O trabalho do processador de fluxo é extrair eventos significativos, obter informações significativas e passar rapidamente as informações para uma camada superior para que uma ação imediata possa ser executada em tempo real.
Alguns dos processadores de fluxo lidam apenas com um dos casos de uso acima, enquanto alguns processadores avançados lidam com ambos. Independentemente do caso de uso, uma arquitetura de ponta a ponta do processador de fluxo deve ter as seguintes funcionalidades:
Geração de dados
O sistema de geração de dados denota as várias fontes de dados brutos, como sensores, monitores de transações e navegadores da web. Eles produzem dados continuamente para o sistema de processamento de fluxo consumir.
Coleta e agregação de dados
Cada uma das fontes de geração de dados acima está associada a um cliente, que recebe dados da fonte. Estes são conhecidos como clientes de fonte. Um agregador agrupa os dados de vários clientes de fonte, enviando os dados em movimento para um buffer de dados centralizado.
Buffer de mensagens
Os buffers de mensagens pegam os dados de streaming de um agente de agregação e os armazenam temporariamente antes de enviá-los para um processador lógico. Existem dois tipos principais de buffers de mensagens: baseados em tópicos e baseados em filas. Nos buffers baseados em tópicos, os dados de entrada são armazenados na forma de registros chamados tópicos. Um ou mais produtores de dados podem contribuir para um tópico. O buffer de mensagens baseado em fila é mais um sistema de buffer ponto a ponto, lendo dados de um único produtor e entregando dados a um único consumidor de dados.
Message broker
Juntos, os sistemas de coleta de dados, agregação e buffer de mensagens formam um sistema de broker de mensagens. A funcionalidade do broker de mensagens é agregar os dados de streaming de várias fontes, formatá-los e passá-los para um sistema de processamento lógico contínuo.
Processamento lógico contínuo
Este é o núcleo da arquitetura de processamento de fluxo. O subsistema de processamento lógico contínuo executa várias consultas predefinidas nos fluxos de dados de entrada para obter informações úteis. As consultas podem ser tão simples quanto aquelas armazenadas em um arquivo XML. Essas consultas são executadas continuamente nos dados de entrada. Este subsistema pode definir uma linguagem de comando declarativa para que os usuários criem facilmente essas consultas. O sistema de processamento lógico contínuo geralmente é executado em máquinas distribuídas para proporcionar escalabilidade e tolerância a falhas. Ao longo dos anos, o sistema de processamento lógico evoluiu para oferecer suporte à modificação dinâmica de consultas e a APIs de programação para facilitar as consultas.
Armazenamento e apresentação
Estes são dois sistemas de suporte no processamento de fluxo. O sistema de armazenamento mantém um resumo do fluxo de dados de entrada e pode ser usado para referências futuras. Ele também armazena os resultados das consultas executadas no fluxo de dados contínuo. O sistema de apresentação é usado para exibir os dados para os consumidores. O sistema de apresentação pode incluir um nível mais alto de sistema analítico ou alertas para os usuários finais.
Processamento de fluxo vs. processamento em lote
Tradicionalmente, as organizações coletam dados de várias fontes, como registros de vendas, interações com clientes e avaliações, e os armazenam em um data warehouse. Esses dados são então processados em lotes em um sistema de análise de dados. O processamento em lote geralmente funciona com dados históricos, que não são críticos em termos de tempo. Embora os dados históricos sejam importantes, eles não fornecem os insights em tempo real que muitas organizações buscam hoje. O processamento de fluxo disponibiliza informações sobre dados em tempo real e precisa ser processado rapidamente.
Com o processamento em lote, há flexibilidade para armazenar e processar os dados conforme sua conveniência, enquanto o processamento de fluxo requer ação em tempo real ou quase real. O processamento em lote lida com dados que não são críticos em termos de tempo e não precisa ser tão rápido quanto o processamento de fluxo. Comparado ao processamento de fluxo, o processamento em lote geralmente requer uma infraestrutura maior para armazenar dados que aguardam análise. No entanto, a maioria das organizações precisa de uma combinação de processamento em fluxo e em lote para ter sucesso no mercado atual.

Benefícios do streaming e do processamento de dados
Processamento de fluxo e altos retornos
As organizações podem obter imenso valor dos dados em geral. As técnicas de processamento de fluxo em tempo real ajudam as organizações a obter vantagem analisando dados sensíveis ao tempo para que possam reagir e responder rapidamente a possíveis problemas. Por exemplo, a análise de fluxos ajuda organizações financeiras a monitorar os preços das ações em tempo real e tomar decisões críticas. Isso os ajuda a se informar sobre as tendências do mercado em tempo real. Sistemas robustos de visualização juntamente com uma infraestrutura de processamento de fluxo em tempo real, permitem que as organizações melhorem seu tempo de resposta a eventos cruciais.
Reduzir o custo de infraestrutura
No processamento de dados tradicional, os dados geralmente são armazenados em grandes volumes em data warehouses. O custo desses sistemas de armazenamento e hardware geralmente é um fardo para as organizações. Com o processamento de fluxo, os dados não são armazenados em grandes volumes; portanto, os sistemas de processamento têm custos de hardware menores.
Reduzir perdas evitáveis
Fluxos de dados em tempo real permitem que as organizações monitorem seu ecossistema de negócios continuamente. As organizações ficam informadas sobre possíveis violações de segurança, problemas de fabricação, insatisfação do cliente, colapsos financeiros ou um comprometimento iminente de sua imagem social. Com o streaming e processamento de dados contínuos, as organizações podem evitar esses problemas.
Aumentar a competitividade e a satisfação do cliente
Com o processamento de dados em tempo real, as organizações podem resolver proativamente possíveis problemas antes que eles se materializem. Isso lhes dá tempo e vantagem sobre os concorrentes. O streaming e o processamento de dados também aumentam a satisfação do cliente, pois seus problemas podem ser resolvidos em tempo real. Com o processamento de dados contínuo e em tempo real, não há atrasos causados pelo armazenamento dos dados.
Desafios para o streaming e processamento de dados
Os sistemas de streaming e processamento de dados lidam com dados altamente voláteis, em tempo real e contínuos. Os dados de streaming geralmente são heterogêneos e incompletos. A própria natureza dos dados de streaming apresenta muitos desafios ao streaming e ao processamento de dados.
Volume de dados e diversidade
O streaming de dados lida com grandes volumes de dados contínuos em tempo real. Perda de dados e pacotes de dados danificados são desafios comuns no streaming de dados. Os dados de streaming geralmente são heterogêneos, originados de diversas localizações geográficas e aplicativos. É um desafio para aplicativos de streaming e processamento de dados lidar com esses dados devido à sua própria natureza.
Pontualidade
A relevância dos dados de streaming diminui com o tempo. O sistema de streaming e processamento de dados deve ser rápido o suficiente para analisar os dados enquanto ainda são relevantes. Essa natureza de tempo crítico dos dados de streaming exige um sistema de alto desempenho e tolerante a falhas.
Elasticidade
O volume de dados de streaming está aumentando a cada dia. Para manter um certo nível de qualidade de serviço, os sistemas de processamento de fluxo precisam se adaptar dinamicamente à carga. As fontes de dados de streaming nem sempre podem transmitir grandes volumes de dados. Nesses casos, os sistemas de processamento devem usar apenas recursos mínimos. Quando a demanda aumenta, o sistema deve alocar dinamicamente mais recursos. Essa necessidade de elasticidade é outro desafio dos sistemas de processamento de fluxo.
Tolerância a erros
O processamento de fluxo acontece continuamente em tempo real. Os dados transmitidos não podem ser repetidos ou retransmitidos perfeitamente. Como resultado, os sistemas de processamento de fluxo não podem suportar tempo de inatividade. Ao contrário dos sistemas tradicionais de processamento em lote, não há muito tempo entre a coleta de dados e o seu processamento. Os sistemas devem estar disponíveis o tempo todo e devem funcionar o tempo todo. Se alguma parte do sistema falhar, isso não deve afetar o restante do sistema de processamento.