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:
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 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.