Quando perguntamos pela última vez, “O que diabos é???”, estávamos olhando para a plataforma de streaming de dados compatível com o protocolo __ Apache Kafka __®
O Flink foi inicialmente aceito como um projeto Apache em dezembro de 2014, então ele já existe há algum tempo. O crescimento do processamento de fluxo levou a um interesse e uso acelerados nos últimos anos. O Flink é um sistema um tanto desafiador de se levantar e usar internamente, exigindo talento de engenharia dedicado. Até mesmo o
Vou pegar emprestado da página da web do Apache Flink aqui. O Apache Flink é um framework e mecanismo de processamento distribuído para computações com estado em fluxos de dados ilimitados e limitados. O Flink foi projetado para rodar em todos os ambientes de cluster comuns e executar computações em velocidade na memória e em qualquer escala. Não quero replicar mais do que está no site deles, então se você não tem certeza sobre o Flink, dê uma olhada.
Em seu nível mais básico, o DeltaStream oferece a você o poder do Flink sem ter que lidar com o Flink. De forma alguma. Para meu teste, usei o deles
Ao se inscrever, você ganha um teste gratuito de 14 dias. Um cluster Kafka de amostra chamado “trial_store” é criado e você pode usar em vez dos seus próprios dados para testar. A demonstração contém vários tópicos para brincar. Os ícones em AÇÕES permitem que você exclua um tópico ou visualize detalhes e conteúdo sobre e no tópico.
Aqui estão os detalhes do tópico pageviews para referência, que usaremos mais tarde.
Certo, temos um cluster Kafka em andamento e tópicos nele. Agora, vamos fazer algo interessante. Como mencionado na introdução, a coisa mais interessante que posso fazer é enriquecer e/ou filtrar dados enquanto eles estão em voo antes de pousarem em seu destino final, como um banco de dados/warehouse/lake. Para esses propósitos, vamos para o Workspace.
Esta parte levou um tempo para se acostumar. Um banco de dados e um esquema no DeltaStream são apenas pastas organizacionais. Você pode criar 'n' número de bancos de dados e, dentro de um banco de dados, você pode ter 'n' número de esquemas. Os esquemas manterão o layout de definição dos seus objetos DeltaStream conhecidos como STREAM, CHANGELOG, MATERIALIZED VIEW e TABLE. Uma tabela se relaciona a uma tabela de banco de dados em algo como PostgreSQL, e a Materialized View é uma maneira de persistir os dados em um conjunto de resultados sem colocá-los em algum lugar específico. Não farei nada com nenhum deles neste blog; vou me concentrar em Stream e Changelog.
Estou criando um Stream do tópico pageviews no cluster Kafka na captura de tela a seguir. Penso nisso como criar uma definição de tabela do tópico. Atribuímos os nomes dos campos e informamos a eles qual tópico usar e qual é o formato dos dados. Não precisamos justificar totalmente o cluster trial_store, pois ele é definido como padrão na caixa de combinação na parte superior. Depois que esse comando for executado, ele será exibido em TestDB.public. Posso consultá-lo com algo como SELECT * FROM PAGEVIEWS e começarei a ver os dados no painel de resultados na parte inferior.
Em seguida, declaro um changelog apoiado pelo tópico do usuário e ordenado por UserID. Um changelog é semelhante a um stream, mas permite que você interprete eventos em um tópico como eventos UPSERT. Eventos exigem uma chave primária; DeltaStream interpreta cada evento como uma inserção ou atualização para a chave primária fornecida. Nesse caso, o changelog reflete detalhes específicos por usuário, como gênero e interesses.
É aqui que começamos a nos divertir. Vou criar um novo fluxo que enriquece o fluxo de pageviews com dados do changelog users_log usando o userid como o valor-chave para ingressar. Isso agora me dá um tópico exclusivo no cluster com dados de dois tópicos diferentes. A partir daqui, posso filtrá-lo usando algo como regionid e gravar os resultados dessa consulta em um destino final, como um banco de dados, warehouse ou lake. Isso me permitiu enriquecer e filtrar dados em andamento antes de pousá-los, melhorando assim a latência e reduzindo os custos de computação e armazenamento.
Então, o que diabos é DeltaStream? É uma maneira muito simples de usar o Apache Flink sem saber nada sobre ele ou fazer algo diretamente com ele. Você viu no meu exemplo o quão direto foi conectar-se ao Apache Kafka e então ler, juntar e filtrar os dados. Outras conexões atualmente suportadas são Kinesis, PostgreSQL, Snowflake e Databricks, e me disseram que ClickHouse e Iceberg estarão disponíveis em breve.
Por fim, o DeltaStream dá a você o poder do Apache Flink sem ter que lidar com o Apache Flink, e você pode fazer isso usando SQL em vez de Java. Se você está lidando com dados de streaming ou procurando implementá-los, esta é definitivamente uma solução muito inteligente e conveniente.
Confira meus outros artigos What the Heck is… nos links abaixo:
**