paint-brush
O que diabos é próton?by@ProgRockRec
1,307
1,307

O que diabos é próton?

Shawn Gordon4m2023/12/31
Read on Terminal Reader

Proton é um projeto de código aberto licenciado pelo Apache 2.0, patrocinado pela [Timeplus]. Escrito em C++ e desenvolvido pela [ClickHouse], ele acomoda dados históricos e de streaming. Com um único executável, a instalação é simples. O Proton possui muitos recursos interessantes, incluindo a capacidade de criar uma visualização materializada para salvar eventos específicos.
featured image - O que diabos é próton?
Shawn Gordon HackerNoon profile picture
0-item
1-item

Esta série de artigos foi muito divertida para mim, pois aprendi e explorei novas tecnologias. Também é divertido ver o que está acontecendo desde que o descobri. Meu último artigo sobre Apache Paimon foi incrivelmente popular, para minha surpresa, mas parece que não fui o único interessado no que diabos era. Graças a esse artigo, encontrei o projeto licenciado de código aberto Apache 2.0, Proton , patrocinado pela Timeplus . É um banco de dados SQL que acomoda dados históricos e de streaming. Escrito em C++ e desenvolvido por ClickHouse , o foco está na simplicidade e no desempenho. Com um único executável, a instalação é simples.


Uma tendência que tenho observado é que cada vez mais aplicações analíticas em tempo real estão sendo construídas, mas você não quer construí-las duas vezes. Uma vez para streaming e uma vez para preenchimento histórico. Haveria vantagens definitivas em ter uma plataforma única que pudesse consultar em modo lote ou streaming ou até mesmo em modo híbrido, onde você une dados históricos a um fluxo de dados recebidos. Parece que o Proton foi construído para fazer exatamente isso.

Visão geral do próton

Resumindo, temos um banco de dados ClickHouse e o Timeplus adicionou suporte para serviços de streaming. Isso deve proporcionar a você um mecanismo de consulta semelhante ao Flink e armazenamento de streaming semelhante ao Kafka com o banco de dados ClickHouse. Então, como é isso?


Arquitetura de prótons


A linha pontilhada é onde entra o Proton. Sugiro a leitura da documentação de arquitetura para ter uma boa noção do que é possível.


Para criar um fluxo aleatório de dados e consultá-lo com Proton, podemos fazer algo assim:

 -- Create a stream with random data. CREATE RANDOM STREAM devices(device string default 'device'||to_string(rand()%4), temperature float default rand()%1000/10); -- Run the long-running stream query. SELECT device, count(*), min(temperature), max(temperature) FROM devices GROUP BY device; ┌─device──┬─count()─┬─min(temperature)─┬─max(temperature)─┐ │ device0 │ 2256 │ 0 │ 99.6 │ │ device1 │ 2260 │ 0.1 │ 99.7 │ │ device3 │ 2259 │ 0.3 │ 99.9 │ │ device2 │ 2225 │ 0.2 │ 99.8 │ └─────────┴─────────┴──────────────────┴──────────────────┘


Recursos de prótons

O Proton tem muitos recursos interessantes; um que me impressionou imediatamente foi a capacidade de criar uma visão materializada para salvar eventos específicos no Proton. Tomando emprestado a documentação, digamos que você tenha um fluxo Kafka relatando eventos da web e queira salvar os relatórios de links quebrados para poder consultá-los mais tarde, mesmo com o Kafka desativado ou os eventos removidos. Seria algo assim:

 create materialized view mv_broken_links as select raw:requestedUrl as url,raw:method as method, raw:ipAddress as ip, raw:response.statusCode as statusCode, domain(raw:headers.referrer) as referrer from frontend_events where raw:response.statusCode<>'200';


Então, se você quiser consultar diretamente a visão materializada e fazer um gráfico de barras a partir dos dados, ficaria assim:

 -- streaming query select * from mv_broken_links; -- historical query select method, count() as cnt, bar(cnt,0,40,5) as bar from table(mv_broken_links) group by method order by cnt desc; ┌─method─┬─cnt─┬─bar─┐ │ GET │ 25 │ ███ │ │ DELETE │ 20 │ ██▌ │ │ HEAD │ 17 │ ██ │ │ POST │ 17 │ ██ │ │ PUT │ 17 │ ██ │ │ PATCH │ 17 │ ██ │ └────────┴─────┴─────┘


Algumas dessas funcionalidades me lembram a Upsolver , empresa em que trabalhei há alguns anos.


Drivers para outras linguagens estão disponíveis para Java, Go e Python. Usar o Proton com algo como Redpanda seria um espaço mínimo para streaming de dados históricos.


Existem muitos outros recursos disponíveis, mas isso não pretende ser um tutorial. Quero fazer uma explicação leve e chamar a atenção para algumas características. Os documentos são concisos e, em geral, bem escritos, certamente melhores do que muitos projetos de código aberto.

Resumo

Embora eu pessoalmente não precise desse tipo de acordo no momento, certamente já estive em lugares e vi empresas onde seria muito, muito legal ter isso. Tão legal quanto esse cara?

Mongol com leopardo da neve


Provavelmente não, mas, novamente, nada é :). Deixando de lado a frivolidade, a equipe do Proton fez um excelente trabalho documentando o projeto e tornando-o o mais simples possível de instalação e uso. Adoro esses projetos binários únicos que não precisam de um vasto ecossistema Java com toneladas de dependências. Não se engane, porém, o Timeplus tem uma versão comercial que oferece mais capacidade do que o lançamento padrão do Proton. No entanto, eles parecem apoiar muito o Proton e acolher a comunidade.


Confira meus outros artigos What the Heck is… nos links abaixo: