Voltar ao blog
    Desempenho
    Equipe GizmoData
    15 de julho de 2025
    5 min de leitura

    Resultados do GizmoSQL no desafio de um trilhão de linhas

    O GizmoSQL concluiu o desafio de 1 trilhão de linhas! Saiba como processamos conjuntos de dados enormes usando DuckDB e Apache Arrow Flight SQL.

    GizmoSQL
    DuckDB
    Big Data
    Desempenho
    GizmoSQL no desafio de um trilhão de linhas

    O GizmoSQL concluiu o desafio de 1 trilhão de linhas! Ele utiliza DuckDB e Apache Arrow Flight SQL.

    Por que aceitamos o desafio

    Queríamos descobrir do que o GizmoSQL era realmente capaz. Quando encontramos o desafio de 1 trilhão de linhas da Coiled, vimos o benchmark ideal para levá-lo ao limite. Processar um trilhão de linhas testa desde a taxa de E/S até a otimização de consultas e o gerenciamento de memória. Estávamos confiantes de que o mecanismo colunar do DuckDB, combinado com a transferência eficiente do Arrow Flight SQL, entregaria ótimos resultados.

    Configuração da infraestrutura

    Criamos uma instância EC/2 AWS Graviton 4 (arm64) r8gd.metal-48xl (US$ 14,1082 sob demanda e US$ 2,8216 spot) na região us-east-1, usando o script launch_aws_instance.sh do arquivo zip anexo. Temos um endpoint S3 na VPC para evitar custos de saída de dados.

    Esse script chama scripts/mount_nvme_aws.sh, que cria um arranjo de armazenamento RAID 0 com os discos NVMe locais, formando um único volume com 11,4 TB de armazenamento.

    Configuração do contêiner Docker

    Iniciamos o contêiner Docker do GizmoSQL com scripts/run_gizmosql_aws.sh, que inclui os utilitários AWS S3 CLI para copiar dados e realizar outras operações.

    Preparação dos dados

    Depois copiamos os dados S3 de s3://coiled-datasets-rp/1trc/ para o volume RAID 0 NVMe local usando o script anexo scripts/copy_coiled_data_from_s3.sh. Os dados ocuparam 2,3 TB. Essa cópia levou 11 min 23,702 s, com custo de US$ 2,78 sob demanda e US$ 0,54 spot.

    Criação da view dos dados

    Em seguida, iniciamos o GizmoSQL pelas etapas posteriores à configuração Docker em scripts/run_gizmosql_aws.sh e nos conectamos remotamente do notebook pelo driver JDBC do GizmoSQL. Consulte o repositório https://github.com/gizmodata/gizmosql para detalhes. Executamos este SQL para criar uma view sobre os conjuntos Parquet:

    CREATE VIEW measurements_1trc
    AS
    SELECT *
      FROM read_parquet('data/coiled-datasets-rp/1trc/*.parquet');

    Consulta de contagem de linhas

    Primeiro, executamos uma contagem de linhas para verificar os dados:

    Resultado da consulta de contagem mostrando 1 trilhão de linhas

    A consulta do desafio

    Depois executamos a consulta de teste:

    SELECT station, min(measure), max(measure), avg(measure)
    FROM measurements_1trc
    GROUP BY station
    ORDER BY station;
    Resultados da execução da consulta do desafio

    Resultados de desempenho

    • Primeira execução (inicialização a frio): 0:02:22 (142 s) — custo EC/2 sob demanda: US$ 0,56; spot: US$ 0,11
    • Segunda execução (inicialização a quente): 0:02:09 (129 s) — custo EC/2 sob demanda: US$ 0,51; spot: US$ 0,10

    Resultados adicionais

    Resultados da consulta: 1trc_results.csv

    Scripts usados: 1trc_gizmosql.zip

    Observação: a consulta SELECT COUNT(*) FROM measurements_1trc; leva 21,8 s

    O que isso significa

    Esses resultados demonstram a capacidade do GizmoSQL de lidar com grandes conjuntos de dados com eficiência e baixo custo. Processar um trilhão de linhas em pouco mais de 2 minutos, por menos de US$ 0,60, mostra a força da combinação entre o processamento colunar do DuckDB e os protocolos eficientes de transferência do Apache Arrow Flight SQL.

    Experimente o GizmoSQL

    Pronto para experimentar análises de dados ultrarrápidas? Experimente o GizmoSQL ou consulte nosso repositório no GitHub para começar.

    Pronto para experimentar o GizmoSQL?

    Experimente análises de dados ultrarrápidas com nosso mecanismo SQL de código aberto

    Agende uma demonstração!Agendamento via Calendly