2 puntos por GN⁺ 2025-01-03 | 1 comentarios | Compartir por WhatsApp
  • Reto de Advent of Code 2024 con SQL puro

  • Resumen

    • El autor decidió resolver el Advent of Code de este año íntegramente en SQL.
    • Esta experiencia resultó interesante porque obligaba a pensar los problemas de otra manera, y logró resolver todos los retos con SQL.
    • SQL resultó ser más cómodo de usar de lo esperado en muchos casos.
  • Ejemplo del Día 11

    • Presenta la solución completa, incluyendo la entrada del problema.
    • Parsear la entrada en SQL es algo engorroso, pero no imposible.
    • El algoritmo es relativamente corto y realiza una exploración recursiva de campos.
    • SQL es adecuado para tareas de exploración de pequeña escala.
  • Retos de otros días

    • En el Día 16 se hace un trabajo similar al calcular la distancia mínima de recorrido en una cuadrícula.
    • Es fácil de expresar en SQL, pero su evaluación es ineficiente.
    • Con entradas grandes hay que mantener mucha cantidad de estado y se requiere más de 200 GB de memoria.
    • Algunos DBMS no ofrecen funciones para resolver este caso.
  • Límites de SQL recursivo

    • En el Día 23 había que encontrar la clique máxima en un grafo disperso.
    • Se puede usar el algoritmo de Bron-Kerbosch, aunque es complicado expresarlo en SQL recursivo.
    • La SQL recursiva solo permite pasar un único conjunto, lo que choca con algoritmos que deben mantener varios conjuntos.
  • Conclusión

    • Es posible codificar algoritmos complejos en SQL, y el código SQL puede resultar, de forma sorprendente, bastante cómodo.
    • Si existiera un mecanismo para actualizar estados, SQL recursivo sería más eficiente y más cómodo de usar.
    • Al introducir mecanismos complejos de manipulación de estado, SQL podría convertirse en una opción potente para ejecutar algoritmos complejos dentro de una base de datos.

1 comentarios

 
GN⁺ 2025-01-03
Comentarios de Hacker News
  • La reacción a la nueva entrada del menú es una mezcla de deseo, vergüenza y asombro por la creatividad humana
  • Es donde más SQL escribí durante mi carrera; en los últimos 5 años lo usé menos, pero todavía me ha gustado mucho
  • Cuando dejas de pensar de forma iterativa y comienzas a razonar con operaciones de conjuntos, se vuelve algo muy natural y poderoso
  • Probé AoC con Google Sheets y llegué hasta el Día 6, pero me topé con el límite de caracteres en algunas entradas
    • Recomiendo no abrirlo en el celular
  • En una entrevista de operaciones en el pasado, me dieron un ejercicio para crear un reporte de facturas para un conjunto de datos masivo
    • Como no era científico de datos, tuve dificultades para armar la solución
    • Les dije que probablemente habría usado un paquete de reportes como Crystal Reports
    • Lo resolví con SQL, pero requiere muchas habilidades técnicas
  • También intenté AoC con EdgeQL y fue una experiencia interesante
    • Compartió el tuit correspondiente
  • Escribí un sistema de encolado/contenedores en SQL y usé algunas funcionalidades adicionales
    • El algoritmo base encajó muy bien con las capacidades de SQL
    • Algunos aspectos fueron difíciles de adaptar a SQL
  • Estoy trabajando en AoC2024 con Google Sheets y planeo documentarlo
  • Resolver en SQL puro es impresionante, y mantener un blog antiguo muestra una especie de "maestría de nicho"