2 points par GN⁺ 2025-01-03 | 1 commentaires | Partager sur WhatsApp
  • Relever l'Advent of Code 2024 en SQL pur

  • Aperçu

    • L'auteur a décidé de résoudre l'Advent of Code de cette année uniquement en SQL.
    • L'expérience était intéressante car elle imposait une manière de penser différente aux problèmes, et j'ai réussi à résoudre tous les défis en SQL.
    • SQL s'est révélé souvent plus agréable à utiliser que prévu.
  • Exemple du Day 11

    • Une solution complète est fournie, y compris les entrées du problème.
    • L'analyse de l'entrée en SQL est un peu fastidieuse, mais ce n'est pas impossible.
    • L'algorithme est relativement court et effectue une exploration récursive des champs.
    • SQL convient bien aux petites recherches exploratoires.
  • Autres jours du challenge

    • Au Day 16, j'ai exécuté une tâche similaire pour calculer la distance minimale de parcours dans une grille.
    • C'est facile à exprimer en SQL, mais l'évaluation est inefficace.
    • Il faut conserver de nombreux états pour gérer de gros jeux de données, ce qui nécessite plus de 200 Go de mémoire.
    • Certains SGBD ne disposent pas des fonctionnalités nécessaires pour résoudre ce problème.
  • Limites du SQL récursif

    • Au Day 23, il fallait trouver le maximum clique dans un graphe clairsemé.
    • L'algorithme de Bron-Kerbosch peut être utilisé, mais son expression en SQL récursif est complexe.
    • Le SQL récursif ne permet de transmettre qu'un seul ensemble, ce qui entre en conflit avec les algorithmes qui nécessitent de maintenir plusieurs ensembles.
  • Conclusion

    • Il est possible de coder des algorithmes complexes en SQL, et le code SQL peut être étonnamment agréable.
    • Avec un mécanisme permettant de mettre à jour l'état, le SQL récursif serait plus efficace et plus confortable à utiliser.
    • En introduisant des mécanismes complexes de manipulation d'état, SQL pourrait devenir une option puissante pour exécuter des algorithmes complexes directement dans la base de données.

1 commentaires

 
GN⁺ 2025-01-03
Commentaires de Hacker News
  • La réaction à cette nouvelle entrée est un mélange d'envie, de honte et d'admiration pour la créativité humaine
  • J'ai écrit le plus de SQL de toute ma carrière, et bien que je l'aie moins utilisé ces cinq dernières années, ça m'a tout de même beaucoup plu
  • Dès qu'on arrête de raisonner de manière répétitive et qu'on commence à penser en termes d'opérations d'ensemble, ça devient naturellement très puissant
  • J'ai essayé AoC avec Google Sheets et j'ai atteint le Day 6, mais j'ai été confronté à des limites de caractères pour certaines entrées
    • Je recommande de ne pas l'ouvrir sur mobile
  • J'ai reçu auparavant, en entretien opérationnel, un sujet consistant à générer un rapport de factures sur un jeu de données massif
    • N'étant pas data scientist, j'ai eu du mal à concevoir la solution
    • J'ai expliqué que j'aurais probablement utilisé un outil de reporting comme Crystal Reports
    • J'ai résolu le problème en SQL, mais cela demandait beaucoup de techniques
  • J'ai essayé AoC en EdgeQL, et c'était une expérience intéressante
    • J'ai partagé le tweet correspondant
  • J'ai écrit un système de queueing/conteneurisation en SQL et utilisé quelques fonctionnalités supplémentaires
    • L'algorithme de base s'adaptait bien aux capacités de SQL
    • Certains aspects étaient difficiles à faire entrer dans SQL
  • Je travaille sur AoC 2024 avec Google Sheets et j'ai l'intention de le documenter
  • Travailler en SQL pur est impressionnant, et entretenir un ancien blog montre une vraie maîtrise de niche