2 Punkte von GN⁺ 2025-01-03 | 1 Kommentare | Auf WhatsApp teilen
  • Advent of Code 2024 in reinem SQL angehen

  • Überblick

    • Der Autor hat beschlossen, Advent of Code in diesem Jahr vollständig in reinem SQL zu lösen.
    • Diese Erfahrung war spannend, weil sie dazu zwang, die Aufgaben anders zu denken, und es gelang ihm, alle Probleme in SQL zu lösen.
    • SQL erwies sich überraschenderweise häufig als angenehm zu verwenden.
  • Day 11 Beispiel

    • Er zeigt die vollständige Lösung mit dem Problem-Input.
    • Das Parsen der Eingabe in SQL ist etwas umständlich, aber nicht unmöglich.
    • Der Algorithmus ist relativ kurz und führt eine rekursive Feldsuche durch.
    • SQL ist für kleine Suchvorgänge geeignet.
  • Herausforderungen an anderen Tagen

    • In Day 16 wurde eine ähnliche Aufgabe durchgeführt, nämlich die Berechnung der minimalen Suchdistanz im Feld.
    • Die Modellierung in SQL ist einfach, die Auswertung jedoch ineffizient.
    • Bei großen Eingaben müssen viele Zustände gehalten werden, was mehr als 200 GB Speicher benötigt.
    • Einige DBMS bieten dafür keine passenden Funktionen.
  • Grenzen rekursiven SQL

    • In Day 23 musste die maximale Clique in einem spärlichen Graphen gefunden werden.
    • Dafür wäre der Bron-Kerbosch-Algorithmus geeignet, die Umsetzung in rekursivem SQL ist jedoch komplex.
    • Rekursives SQL kann nur eine einzige Menge übergeben, was bei Algorithmen kollidiert, die mehrere Mengen verwalten müssen.
  • Fazit

    • Es ist möglich, komplexe Algorithmen in SQL zu programmieren, und SQL-Code kann überraschend angenehm sein.
    • Mit einem Mechanismus, der Zustandsupdates ermöglicht, wäre rekursives SQL effizienter und komfortabler zu nutzen.
    • Führt man komplexe Zustandsmanipulationsmechanismen ein, kann SQL eine starke Option sein, um komplexe Algorithmen innerhalb der Datenbank auszuführen.

1 Kommentare

 
GN⁺ 2025-01-03
Hacker News Kommentar
  • Die Reaktion auf den neuen Menüpunkt ist eine Mischung aus Verlangen, Verlegenheit und Bewunderung für die menschliche Kreativität.
  • Im Verlauf meiner Karriere habe ich am häufigsten SQL geschrieben; in den letzten fünf Jahren habe ich es zwar seltener genutzt, aber es hat mir trotzdem Spaß gemacht.
  • Wenn man aufhört, iterativ zu denken, und stattdessen in Mengenoperationen denkt, wird es natürlich und leistungsstark.
  • Ich habe AoC mit Google Sheets versucht und es bis Tag 6 geschafft, aber bei einigen Eingaben bin ich auf ein Zeichenlimit gestoßen.
    • Es wird empfohlen, es nicht auf dem Handy zu öffnen.
  • In einem früheren Interview wurde ich gebeten, einen Rechnungsbericht für einen großen Datensatz zu erstellen.
    • Da ich kein Datenwissenschaftler bin, hatte ich Schwierigkeiten, eine Lösung zu entwerfen.
    • Ich erklärte, dass ich stattdessen ein Reporting-Paket wie Crystal Reports genutzt hätte.
    • Ich habe das Problem mit SQL gelöst, aber es erforderte viele Techniken.
  • Ich habe AoC mit EdgeQL ausprobiert, und es war eine interessante Erfahrung.
    • Ich habe den zugehörigen Tweet geteilt.
  • Ich habe ein Queueing-/Containerisierungssystem in SQL umgesetzt und dabei einige zusätzliche Funktionen verwendet.
    • Der grundlegende Algorithmus passte gut zu den Fähigkeiten von SQL.
    • Einige Aspekte ließen sich nicht gut auf SQL abbilden.
  • Ich arbeite gerade an AoC2024 in Google Sheets und plane, das zu dokumentieren.
  • Die Arbeit mit reinem SQL ist beeindruckend, und ein altes Blog am Leben zu halten, zeigt "Nischenbeherrschung".