Uma startup moderna de indexação de blockchain enfrenta diversos desafios, como:
Com a adoção crescente da tecnologia blockchain, o volume de dados armazenados aumentou. Isso ocorre porque mais usuários aderem à tecnologia e cada transação adiciona novos dados. Além disso, o uso da blockchain evoluiu de simples transferências financeiras, como no Bitcoin, para aplicações complexas que implementam lógica de negócios em smart contracts. Esses contratos inteligentes geram grandes volumes de dados, aumentando a complexidade e o tamanho da blockchain. Com o tempo, isso resultou em blockchains cada vez maiores e mais complexas.
Neste artigo, analisamos a evolução da arquitetura tecnológica da Footprint Analytics, em etapas, como um estudo de caso para explorar como o stack Iceberg-Trino enfrenta os desafios dos dados on-chain.
A Footprint Analytics já indexou cerca de 22 blockchains públicas, 17 marketplaces de NFT, 1.900 projetos GameFi e mais de 100.000 coleções de NFT em uma camada semântica de abstração de dados. Trata-se da solução de data warehouse de blockchain mais abrangente do mundo.
Os dados de blockchain, que incluem mais de 20 bilhões de linhas de registros de transações financeiras frequentemente consultados por analistas, são diferentes dos logs de ingresso dos data warehouses tradicionais.
Nos últimos meses, passamos por três grandes atualizações para atender às crescentes demandas de negócios:
No início da Footprint Analytics, utilizávamos o Google Bigquery como nosso mecanismo de armazenamento e consulta. O Bigquery é extremamente rápido, fácil de usar e oferece poder computacional dinâmico e uma sintaxe UDF flexível, o que nos ajudava a entregar resultados rapidamente.
No entanto, o Bigquery apresenta algumas limitações.
Por isso, optamos por explorar outras arquiteturas.
Ficamos atentos ao surgimento de produtos OLAP que ganharam popularidade. A principal vantagem do OLAP é o tempo de resposta: normalmente, retorna resultados em subsegundos para grandes volumes de dados e suporta milhares de consultas simultâneas.
Escolhemos o Doris, um dos melhores bancos de dados OLAP, para testar. O desempenho foi bom, mas logo surgiram outros desafios:
Dessa forma, não era possível usar o Doris em todo o pipeline de produção. Tentamos utilizá-lo como banco OLAP para resolver parte do problema, atuando como engine de consulta e fornecendo alto desempenho e concorrência.
Infelizmente, não conseguimos substituir o Bigquery pelo Doris. Precisávamos sincronizar periodicamente os dados do Bigquery para o Doris, limitando o uso deste último apenas como engine de consulta. O processo de sincronização apresentava problemas, como o acúmulo de escritas de atualização quando o OLAP estava ocupado atendendo consultas do front-end. Isso reduzia a velocidade das gravações, prolongava a sincronização e, por vezes, impossibilitava sua conclusão.
Percebemos que o OLAP resolvia alguns gargalos, mas não era a solução definitiva para a Footprint Analytics, especialmente para o pipeline de processamento de dados. Nosso desafio era maior e mais complexo; o OLAP, apenas como engine de consulta, não era suficiente.
Apresentamos a arquitetura 3.0 da Footprint Analytics, uma reformulação completa da base tecnológica. Redesenhamos a arquitetura do zero, separando armazenamento, processamento e consulta de dados em três camadas. Aproveitamos as lições das versões anteriores e de projetos de big data bem-sucedidos como Uber, Netflix e Databricks.
Voltamos nosso foco ao data lake, um novo modelo de armazenamento para dados estruturados e não estruturados. O data lake é ideal para dados on-chain, já que os formatos variam de dados brutos não estruturados a abstrações estruturadas, como na Footprint Analytics. Esperávamos que o data lake resolvesse o desafio de armazenamento e, idealmente, suportasse engines como Spark e Flink, facilitando a integração com diferentes tipos de processamento à medida que a Footprint Analytics evolui.
O Iceberg integra-se perfeitamente com Spark, Flink, Trino e outros engines, permitindo selecionar o processamento ideal para cada métrica. Por exemplo:
Com o Iceberg solucionando armazenamento e processamento, era preciso escolher o engine de consulta. As opções consideradas foram:
O critério principal era a compatibilidade com a arquitetura atual.
Diante disso, escolhemos o Trino, que oferece excelente integração com Iceberg e uma equipe extremamente ágil: relatamos um bug, solucionado no dia seguinte e liberado na versão mais recente na semana seguinte. Foi a melhor escolha para a Footprint, que exige alta agilidade na implementação.
Após definir o caminho, realizamos testes de performance na combinação Trino + Iceberg para avaliar se atenderia às nossas necessidades. Para nossa surpresa, as consultas foram extremamente rápidas.
Sabendo que Presto + Hive sempre foi referência negativa no universo OLAP, a combinação Trino + Iceberg superou todas as expectativas.
Veja os resultados dos testes:
caso 1: join de grandes volumes
Uma tabela de 800 GB faz join com outra de 50 GB e realiza cálculos de negócios complexos
caso 2: consulta distinct em uma grande tabela
SQL de teste: select distinct(address) from table group by day

A combinação Trino+Iceberg foi cerca de 3 vezes mais rápida que o Doris na mesma configuração.
Além disso, o Iceberg pode utilizar formatos como Parquet e ORC, que comprimem e armazenam os dados. O armazenamento de tabelas no Iceberg ocupa cerca de 1/5 do espaço dos outros data warehouses. Veja o tamanho da mesma tabela nos três bancos:

Observação: Os testes acima são exemplos reais de produção e servem apenas como referência.
・Efeito do upgrade
Os relatórios de performance nos deram confiança e, em cerca de dois meses, a equipe concluiu a migração. Veja o diagrama da arquitetura após o upgrade:

Desde agosto de 2021, a equipe Footprint Analytics realizou três upgrades arquiteturais em menos de um ano e meio, graças à determinação em levar o melhor da tecnologia de bancos de dados ao público cripto e à execução sólida na implementação e atualização da infraestrutura.
O upgrade arquitetural 3.0 da Footprint Analytics trouxe uma nova experiência aos usuários, permitindo que pessoas de diferentes perfis obtenham insights em usos e aplicações mais diversos: