2 pontos por GN⁺ 2025-01-03 | 1 comentários | Compartilhar no WhatsApp
  • Desafio do Advent of Code 2024 em SQL puro

  • Visão geral

    • O autor decidiu resolver o Advent of Code deste ano usando SQL puro.
    • Essa experiência foi divertida, pois o obrigou a pensar nos problemas de um jeito diferente, e ele conseguiu resolver todos os desafios com SQL.
    • O SQL acabou sendo, em muitos casos, uma forma bastante agradável de usar.
  • Exemplo do Dia 11

    • Apresenta a solução completa com a entrada do problema incluída.
    • O parsing da entrada em SQL é um pouco trabalhoso, mas não impossível.
    • O algoritmo é relativamente curto e executa uma busca recursiva por campos.
    • SQL é adequado para buscas em pequena escala.
  • Desafios de outros dias

    • No Dia 16, é feita uma tarefa semelhante para calcular a menor distância de busca em um campo.
    • Isso é fácil de expressar em SQL, mas a avaliação é ineficiente.
    • Para entradas grandes, precisa-se manter muitos estados, exigindo mais de 200 GB de memória.
    • Alguns SGBDs não oferecem os recursos para resolver isso.
  • Limitações da recursão em SQL

    • No Dia 23, foi necessário encontrar a maior clique em um grafo esparso.
    • O algoritmo de Bron-Kerbosch resolve o problema, mas fica complexo de expressar com recursão SQL.
    • A recursão em SQL só consegue carregar um único conjunto, o que conflita com algoritmos que precisam manter vários conjuntos simultaneamente.
  • Conclusão

    • É possível codificar algoritmos complexos em SQL, e o código SQL pode ser surpreendentemente agradável.
    • Com um mecanismo que permita atualizar estados, a recursão em SQL seria mais eficiente e confortável de usar.
    • Ao adicionar mecanismos complexos de manipulação de estado, SQL pode se tornar uma escolha poderosa para executar algoritmos complexos dentro do próprio banco de dados.

1 comentários

 
GN⁺ 2025-01-03
Comentário do Hacker News
  • A reação a um novo item de menu é uma mistura de desejo, vergonha e admiração pela criatividade humana
  • Escrevi mais SQL durante minha carreira do que qualquer outra linguagem, e embora tenha usado menos nos últimos 5 anos, ainda achei divertido
  • Quando deixei de pensar de forma iterativa e comecei a pensar em termos de operações de conjunto, ficou algo natural e poderoso
  • Tentei o AoC no Google Sheets e cheguei até o Dia 6, mas encontrei um limite de caracteres em algumas entradas
    • É recomendável não abrir pelo celular
  • No passado, numa entrevista de operações, recebi um problema de montar um relatório de notas fiscais para um grande conjunto de dados
    • Como não sou cientista de dados, tive dificuldade em montar a solução
    • Expliquei que provavelmente usaria um pacote de relatório como Crystal Reports
    • Resolvi o problema com SQL, mas isso exigiu muitas técnicas
  • Tentei o AoC em EdgeQL e foi uma experiência interessante
    • Compartilhou o tweet relacionado
  • Escrevi um sistema de enfileiramento/containerização em SQL e usei alguns recursos adicionais
    • O algoritmo de base se encaixou bem nas funcionalidades do SQL
    • Alguns aspectos foram difíceis de adaptar para SQL
  • Estou fazendo AoC2024 no Google Sheets e vou documentar isso
  • Trabalhar com SQL puro é impressionante, e manter um blog antigo demonstra "especialização de nicho"