13 pontos por GN⁺ 2025-04-25 | 2 comentários | Compartilhar no WhatsApp
  • Instant SQL é uma ferramenta que mostra uma prévia dos resultados em tempo real enquanto você escreve consultas SQL, acelerando a criação e a depuração de queries
  • Permite decompor e analisar com facilidade CTEs complexos e expressões de colunas, além de oferecer sugestões de edição com IA com prévia imediata, tornando a escrita e a modificação de queries mais eficientes
  • Está disponível no MotherDuck e na DuckDB Local UI, e permite explorar em tempo real até mesmo várias fontes de dados externas com base no DuckDB
  • Isso foi possível graças à combinação de tecnologias avançadas, como o design local-first do DuckDB, otimização de desempenho, estratégias de cache e mapeamento de cursor baseado em AST
  • MotherDuck é um serviço gerenciado de nuvem do DuckDB que oferece diversas ferramentas para análise de dados

Apresentando o Instant SQL

  • Instant SQL é um novo recurso que atualiza os resultados de consultas SQL em tempo real, no exato momento em que você digita
  • Sem botão de execução separado, é possível visualizar previamente os resultados com latência zero (zero-latency)
  • Atualmente, está disponível na plataforma MotherDuck e na DuckDB Local UI

Por que o Instant SQL é necessário

  • Ao escrever SQL, o essencial não é a sintaxe, mas entender os dados e formular perguntas
  • Antes, era inevitável repetir um fluxo lento: escrever a query em um editor de texto, clicar no botão de executar e esperar pelos resultados
  • O Instant SQL transforma esse processo em um fluxo de exploração imediato e natural

Principais recursos

  • Prévia dos resultados em tempo real enquanto você escreve

    • A cada digitação na consulta SQL, a prévia do conjunto de resultados é atualizada em tempo real
    • Desde transformações simples até agregações complexas, é possível avançar na exploração de dados sem interrupções
  • Depuração em tempo real de CTEs (expressões de tabela comuns)

    • É possível clicar em uma CTE para visualizá-la imediatamente
    • As alterações são refletidas instantaneamente em todos os nós dependentes, tornando a depuração de CTEs muito mais fácil
  • Decomposição de expressões complexas de colunas

    • Para encontrar rapidamente erros em expressões de colunas, é possível decompor a expressão a partir da tabela de resultados
    • Isso permite identificar imediatamente problemas de lógica da expressão ou de dados
  • Suporte a várias fontes de dados

    • É possível fazer prévia de todas as fontes compatíveis com o DuckDB (tabelas DuckDB, arquivos parquet no S3, Postgres, SQLite, MySQL, Iceberg, Delta etc.)
    • A modelagem e a exploração de dados externos ficam muito mais rápidas
  • Validação rápida da query antes da execução final

    • Depois de refinar a query com a prévia, se estiver satisfeito, é possível fazer a execução final
    • Isso encurta de forma revolucionária o ciclo escrever-executar-esperar em SQL
  • Integração com recursos de IA

    • Ao inserir um comando em linguagem natural para o texto selecionado, a IA oferece sugestões de modificação
    • Como o resultado sugerido pode ser visualizado imediatamente, é possível aceitar mudanças sem risco de erro

Como isso foi possível

  • Tecnologia de execução de queries com latência ultrabaixa

    • Graças ao design local-first do DuckDB, é possível obter resultados rápidos diretamente no PC
    • A arquitetura de execução dupla do MotherDuck também oferece suporte a grandes volumes de dados com baixa latência
  • Tecnologia de reescrita de queries

    • Aproveita a extensão JSON do DuckDB para extrair e utilizar a AST (árvore de sintaxe) de consultas SELECT
    • Ao substituir partes da query por dados de amostra em cache local, torna-se possível gerar prévias rapidamente
  • Sistema de cache inteligente

    • Usa cache de dados previsto antecipadamente para renderizar resultados no mesmo instante de cada tecla pressionada
    • Com várias estratégias de cache, os resultados aparecem antes mesmo de o usuário tirar os dedos do teclado
  • Mapeamento entre cursor e árvore sintática

    • Foi desenvolvida uma função que mapeia com precisão a posição do cursor do usuário para um nó SELECT específico na AST
    • Mesmo em queries complexas, é possível selecionar e mostrar a prévia apenas da instrução SELECT em que o usuário está trabalhando

Como usar o Instant SQL

  • Disponível como preview pública no MotherDuck e na DuckDB Local UI
  • O novo recurso de modificação baseado em prompt também está disponível para usuários do MotherDuck

2 comentários

 
aer0700 2025-04-26

Isso é realmente muito incrível.

 
GN⁺ 2025-04-25
Comentários do Hacker News
  • Vi o autor deste recurso e do post do blog apresentando no DataCouncil, e dava para perceber quanto artesanato, criatividade e cuidado entraram na construção disso. Parabéns ao Hamilton e à equipe da MotherDuck pelo excelente lançamento
  • Há um vídeo muito legal na UI do DuckDB e no MotherDuck
  • Seria ainda melhor se SQL tivesse sintaxe de pipe. SQL é excelente, mas a ordem não é intuitiva, e CTEs são a única forma realmente confiável de visualizar resultados intermediários. Com pipes, cada etapa poderia mostrar claramente a saída intermediária
    • Exemplo:
      • FROM orders
      • WHERE order_date >= '2024-01-01'
      • AGGREGATE SUM(order_amount) AS total_spent GROUP BY customer_id
      • WHERE total_spent > 1000
      • INNER JOIN customers USING(customer_id)
      • CALL ENRICH.APOLLO(EMAIL > customers.email)
      • AGGREGATE COUNT(*) high_value_customer GROUP BY company.country
  • Se houver algum engenheiro do DuckDB por aqui, quero dizer que a ferramenta de vocês tem sido uma ajuda enorme no meu trabalho em bioinformática/biotecnologia. Ela tem a flexibilidade e a simplicidade que dados biológicos — complexos e em constante mudança — exigem
  • O fato de o DuckDB não ter uma sintaxe de pipe, como a do kusto ou a sintaxe de consultas com pipe do Google, é a ausência de um recurso fatal
    • Por que é um recurso fatal? Primeiro, LLMs completam texto da esquerda para a direita. Só isso já o torna um recurso fatal
    • Mas, para nós humanos com menos poder computacional, a sintaxe de pipe permite uma conclusão de código muito melhor
    • A sintaxe de pipe é prazerosa de usar, e voltar para SQL é realmente um momento decepcionante
  • Espero que isso não funcione com consultas DELETE
  • Gosto muito de explorar os notebooks do DuckDB, e esse recurso os deixa ainda mais legais. Mas o fato de não ser possível compartilhar, exportar ou fazer commit em um repositório git é muito limitante. Parece que tudo é salvo no banco de dados DuckDB, inclusive versões históricas, mas na prática não dá para fazer nada com isso
  • A inspeção de CTE é uma maravilha. Eu gasto tempo demais fazendo isso manualmente
  • Ferramenta muito legal, e fica ainda melhor quando usada junto com o projeto manifold para SQL. Ele é type-safe e oferece ótimo suporte à sintaxe nativa do DuckDB
  • Parece ótimo, mas eu queria ver a tabela inteira que pretendo consultar. Eu quase sempre começo uma query rodando rapidamente select * from table limit 10; e depois vou adicionando colunas e joins