6 คะแนน โดย abcdkh1209 2026-02-26 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ในบริษัท ผมเป็นนักพัฒนาเดี่ยวที่ดูแลหลายเซิร์ฟเวอร์/บริการ และมักจะได้รับคำถามอย่าง "ข้อมูลนี้ ณ สิ้นเดือนที่แล้วเป็นอย่างไร?" อยู่บ่อย ๆ
ทุกครั้งต้องไปหาแบ็กอัป pg_dump แล้วยก DB ชั่วคราวขึ้นมา กู้คืน รันคิวรี แล้วค่อยเก็บกวาด วนแบบนี้ซ้ำ ๆ มันยุ่งยากเกินไป เลยทำขึ้นมาใช้เองครับ
Snaplake เป็นเครื่องมือ self-hosted ที่ทำสแนปช็อตตาราง DB เป็นไฟล์ Parquet ตามช่วงเวลา และสามารถใช้ DuckDB คิวรีด้วย SQL ได้ทันทีโดยไม่ต้องกู้คืนแบ็กอัป

ฟีเจอร์หลัก

  • จับสแนปช็อต — บันทึกตาราง PostgreSQL, MySQL เป็นไฟล์ Apache Parquet รองรับสแนปช็อตอัตโนมัติแบบ Cron และนโยบายการเก็บรักษา (รายวัน/รายเดือน)
  • SQL คิวรี — ใช้ DuckDB เป็นฐาน สามารถคิวรีสแนปช็อตของช่วงเวลาใดก็ได้ทันทีด้วย SQL รองรับการ join ตาราง การ aggregate และการส่งออกเป็น CSV/JSON
  • เปรียบเทียบสแนปช็อต — วางสแนปช็อตจากสองช่วงเวลาเทียบกันแบบเคียงข้าง และดู diff ระดับแถว แยกสีแถวที่ถูกเพิ่ม/ลบ/เปลี่ยนแปลง
  • สตอเรจยืดหยุ่น — ใช้ได้ทั้ง local filesystem หรือ S3-compatible storage (AWS S3, MinIO เป็นต้น)

เทคสแตก

  • Backend: Kotlin, Spring Boot 3.4, Java 21
  • Query Engine: DuckDB (คิวรีไฟล์ Parquet โดยตรง)
  • Frontend: React 19, TypeScript, Vite
  • การจัดเก็บเมทาดาทา: SQLite
  • การยืนยันตัวตน: JWT + Argon2

เริ่มใช้งานได้ทันทีด้วย Docker เพียงบรรทัดเดียว

docker run -d --name snaplake -p 8080:8080 -v snaplake-data:/app/data abcdkh1209/snaplake:latest  

คิดว่าน่าจะมีประโยชน์สำหรับทีมหรือ solo developer ขนาดเล็กที่นำเครื่องมือสังเกตการณ์ข้อมูลราคาแพงมาใช้ได้ยาก ยินดีรับฟีดแบ็กครับ!

1 ความคิดเห็น

 
sonic0987 2026-02-27

เรียบง่ายแต่ชัดเจนดี น่าสนุกครับ!