ความท้าทาย Advent of Code 2024 ด้วย SQL ล้วน
(databasearchitects.blogspot.com)-
ความท้าทาย Advent of Code 2024 ด้วย SQL ล้วน
-
ภาพรวม
- ผู้เขียนตัดสินใจที่จะลองแก้ปัญหา Advent of Code ในปีนี้ด้วย SQL ล้วน
- ประสบการณ์นี้น่าตื่นเต้นเพราะช่วยให้คิดปัญหาได้ในมุมมองที่ต่างออกไป และสามารถแก้ได้ทุกปัญหาด้วย SQL
- SQL กลับเป็นตัวเลือกที่ใช้งานได้อย่างราบรื่นมากกว่าที่คาด
-
ตัวอย่าง Day 11
- นำเสนอวิธีแก้ปัญหาฉบับสมบูรณ์รวมถึงข้อมูลนำเข้าของปัญหา
- การ parse ข้อมูลใน SQL ค่อนข้างยุ่งยากเล็กน้อย แต่ไม่ใช่ว่าทำไม่ได้
- อัลกอริทึมค่อนข้างสั้น และทำการค้นหาเชิงซ้ำของฟิลด์
- SQL เหมาะกับงานค้นหาขนาดเล็ก
-
ความท้าทายในวันอื่น
- ใน Day 16 ได้ทำงานคล้ายกันในการคำนวณระยะทางการค้นหาแบบน้อยที่สุดในฟิลด์
- สามารถเขียนด้วย SQL ได้ง่าย แต่การประมวลผลค่อนข้างไม่มีประสิทธิภาพ
- เมื่อจัดการอินพุตขนาดใหญ่ จำเป็นต้องคงสถานะจำนวนมาก และต้องใช้หน่วยความจำมากกว่า 200GB
- DBMS บางตัวไม่มีฟีเจอร์ที่สามารถแก้ปัญหานี้ได้
-
ข้อจำกัดของ Recursive SQL
- ใน Day 23 ต้องหาคลิกที่ใหญ่ที่สุดในกราฟแบบ sparse
- แม้จะใช้ได้ด้วยอัลกอริทึม Bron-Kerbosch แต่การใช้ Recursive SQL แสดงอัลกอริทึมนี้ค่อนข้างซับซ้อน
- Recursive SQL สามารถส่งผ่านได้เพียงชุดข้อมูลเดียว ซึ่งขัดแย้งกับอัลกอริทึมที่ต้องคงหลายชุดข้อมูล
-
บทสรุป
- เป็นไปได้ที่จะเขียนอัลกอริทึมที่ซับซ้อนด้วย SQL และโค้ด SQL ก็อาจราบรื่นเกินคาด
- หากมีกลไกที่อนุญาตให้อัปเดตสถานะได้ Recursive SQL จะมีประสิทธิภาพและใช้สะดวกมากขึ้น
- หากนำกลไกจัดการสถานะที่ซับซ้อนเข้ามาใช้ SQL อาจกลายเป็นตัวเลือกที่ทรงพลังในการรันอัลกอริทึมที่ซับซ้อนภายในฐานข้อมูล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News