EN
← กลับหน้าแรก
news 2026-04-24 · Simon Willison

🦢 Honker เปลี่ยน SQLite ให้มี Queue และ Pub/Sub แบบ Postgres ได้ในไฟล์เดียว

คุณเคยเจอปัญหานี้ไหม? — อยากให้แอปส่งงานเข้าคิว อยากให้ระบบแจ้งเตือนแบบเรียลไทม์ แต่แค่นึกถึงการติดตั้ง Redis, RabbitMQ หรือ Kafka ก็ปวดหัวแล้ว ทั้งเซิร์ฟเวอร์เพิ่ม ทั้งค่าใช้จ่าย ทั้งความซับซ้อนในการดูแล

แล้วถ้าบอกว่า... ทั้งหมดนี้ทำได้ในไฟล์ `.db` ไฟล์เดียว?


**Honker** คือส่วนขยายของ SQLite ที่เขียนด้วย Rust ออกแบบมาเพื่อนำความสามารถ NOTIFY/LISTEN แบบ PostgreSQL มาใส่ใน SQLite ทำให้ฐานข้อมูลตัวเล็กที่คุณคุ้นเคย กลายเป็นระบบจัดคิวงาน ระบบสตรีมข้อมูล และระบบแจ้งเตือนแบบ Pub/Sub ได้ในตัว โดยไม่ต้องพึ่งพาบริการภายนอกใดๆ เลย

สิ่งที่ทำให้ Honker น่าทึ่งคือวิธีการตรวจจับการเปลี่ยนแปลง — มันใช้ `PRAGMA data_version` ของ SQLite ซึ่งเป็นตัวนับที่เพิ่มขึ้นทุกครั้งที่มีการ commit ข้อมูล ระบบจะตรวจสอบค่านี้ทุก 1 มิลลิวินาที ทำให้สามารถแจ้งเตือนข้ามโปรเซสได้ภายในเสี้ยววินาที โดยแทบไม่กินทรัพยากร


**ความสามารถหลัก 3 ประการ:**

**1. Pub/Sub แบบเรียลไทม์** — ส่งและรับข้อความระหว่างส่วนต่างๆ ของแอปได้ทันที ผ่านฟังก์ชัน `notify()`

**2. สตรีมข้อมูลแบบถาวร** — คล้าย Kafka แต่ง่ายกว่ามาก มีระบบติดตามตำแหน่งการอ่านของผู้บริโภคแต่ละราย

**3. คิวงานแบบรับประกัน** — รองรับการลองใหม่อัตโนมัติ มีตารางเก็บงานที่ล้มเหลว และรับประกันว่าทุกงานจะถูกประมวลผลอย่างน้อยหนึ่งครั้ง


จุดเด่นที่สำคัญที่สุดคือ **Transactional Outbox Pattern** — คุณสามารถบันทึกข้อมูลธุรกิจและส่งงานเข้าคิวในธุรกรรมเดียวกัน ถ้าบันทึกสำเร็จ งานก็เข้าคิว ถ้าล้มเหลว ทั้งสองก็ถูกยกเลิก ไม่มีทางที่ข้อมูลจะไม่ตรงกัน

Honker รองรับภาษาโปรแกรมถึง 7 ภาษา ได้แก่ Python, Node.js, Go, Ruby, Elixir, Bun และ Rust เอง พร้อมระบบตั้งเวลาแบบ crontab ในตัว

สำหรับทีมเล็กหรือโปรเจกต์ที่ต้องการลดความซับซ้อน Honker อาจเป็นคำตอบที่คุณรอคอย — ไม่ต้องดูแลเซิร์ฟเวอร์เพิ่ม ไม่ต้องกังวลเรื่องการซิงค์ข้อมูล แค่ไฟล์ SQLite ไฟล์เดียวก็พอ

📄 แหล่งข่าว

Simon Willison
แชร์: Facebook 𝕏
← ก่อนหน้า
🐻 ไมเคิล เบอร์รี เทขายหุ้นชิป ปักหมุดใหม่ที่ไมโคร
ถัดไป →
Groq ชิปราคาถูกกว่า NVIDIA 5 เท่า — สงครามชิป AI ก