13 pontos por GN⁺ 2024-03-23 | 1 comentários | Compartilhar no WhatsApp

DuckDB surge como o novo jq

  • O projeto DuckDB é um banco de dados semelhante ao SQLite para aplicações de dados, incluindo a capacidade de importar vários formatos de dados sem dependências adicionais.
  • É possível ler e fazer parse de arquivos JSON diretamente como tabelas do banco de dados, e isso também se aplica a muitos outros formatos.
  • Ao trabalhar com JSON, normalmente usa-se jq, mas como a sintaxe complexa do jq pode ser um obstáculo, usar DuckDB é mais conveniente para quem já está acostumado com SQL.
  • Por exemplo, usando a API do GitHub para obter em JSON informações sobre os repositórios da organização golang, é possível fazer facilmente em SQL uma análise estatística sobre os tipos de licenças open source.
  • Escrever consultas SQL com DuckDB é algo que pode ser feito com facilidade mesmo sem consultar a documentação, e ele usa uma sintaxe semelhante às funções JSON do PostgreSQL.
  • DuckDB também oferece suporte à saída em JSON e, quando necessário, é possível usar jq para formatar o resultado de forma legível.
  • Além de JSON, o DuckDB pode importar diversos formatos de dados, como CSV, parquet e arquivos do Excel.
  • Quando não há necessidade de armazenar os dados de forma persistente, é possível consultá-los sem criar tabelas.
  • O DuckDB pode ler JSON diretamente não apenas de arquivos locais, mas também de URLs.

Opinião do GN⁺

  • O DuckDB pode se tornar uma ferramenta interessante para usuários que trabalham com frequência com tarefas relacionadas à análise de dados. Em especial, para quem já conhece SQL, ele pode ser uma alternativa poderosa para lidar facilmente com dados em JSON.
  • O fato de o DuckDB conseguir ler dados JSON diretamente simplifica o processo de pré-processamento e traz a vantagem de reduzir etapas separadas de transformação ao construir pipelines de dados.
  • Se o uso do DuckDB continuar se expandindo, ele pode reduzir a curva de aprendizado e aumentar a produtividade em comparação com ferramentas tradicionais mais complexas para análise e processamento de dados.
  • No entanto, se o DuckDB ainda não for amplamente conhecido ou não contar com suporte comunitário suficiente, os usuários podem ter dificuldade para encontrar soluções ao enfrentar problemas.
  • Outros projetos open source com funcionalidades semelhantes às do DuckDB incluem Apache Drill e PrestoDB, que também oferecem suporte a consultas SQL sobre grandes conjuntos de dados.

1 comentários

 
GN⁺ 2024-03-23
Comentários do Hacker News
  • Combinação de jq com ferramentas básicas de shell

    • A sintaxe e o modelo de dados do jq são muito elegantes e poderosos, mas a biblioteca padrão é limitada e há algumas estranhezas de design, o que pode tornar tarefas do dia a dia mais complexas.
    • O jq transforma bem os dados em texto linha por linha, o que facilita sua combinação com ferramentas de shell do Unix.
    • Por exemplo, extrair licenças OSS de uma lista de projetos e contar quantas vezes cada uma aparece pode ser feito de forma simples com curl ... | jq '.[].license.key' | sort | uniq -c.
  • Babashka e Clojure

    • Se você gosta de Lisp e Clojure, vale a pena conferir o Babashka.
    • Foi fornecido um exemplo de código usando Babashka para processar arquivos JSON, agrupar dados e fazer contagens.
  • CLI local do ClickHouse

    • A CLI local do ClickHouse é extremamente rápida para analisar e consultar formatos como JSON e CSV.
    • Ela é apresentada como a "ferramenta de consulta JSON mais rápida do mundo" e como uma pequena ferramenta para análise de dados sem servidor.
  • Uso de jq, DuckDB e SQL

    • O jq é ideal para tarefas como filtragem, mapeamento e concatenação.
    • Por exemplo, ele pode ser usado para encontrar links de download específicos ou extrair o KUBE_CONFIG de um cluster Kubernetes a partir do estado do Terraform.
  • Consultas no Google Sheets

    • É possível consultar dados públicos do Google Sheets de forma semelhante a SQL.
  • Logging estruturado com banco de dados SQLite

    • Eventos de log gerados diariamente podem ser armazenados como objetos JSON, com índices criados em campos específicos para permitir buscas via consultas SQL.
  • Benthos

    • O Benthos pode ser usado para transformação de dados e para mover dados para barramentos de mensagens, webhooks e bancos de dados.
  • Nushell

    • O Nushell é útil para manipulação temporária de dados e tarefas gerais de shell.
  • pq (prql-query)

    • O pq foi criado com DuckDB, DataFusion e PRQL para tornar o trabalho com dados no terminal mais fácil e divertido.
    • No momento ele está arquivado por ser difícil de manter, mas isso pode mudar se aparecer alguém para colaborar.
  • JSON e uso de linguagens de programação

    • Em comparação com tratar JSON como uma estrutura de dados como um hashmap em uma linguagem de programação, os benefícios não são muito claros.
    • Se a intenção é trabalhar de forma interativa, pode ser melhor usar um notebook ou um REPL.