โซลูชันแคชใหม่ที่เรียกว่า Pogocache ได้เปิดตัวแล้ว โดยสัญญาว่าจะมีเวลาตอบสนองที่ต่ำมากและประสิทธิภาพสูงสำหรับแอปพลิเคชันที่ต้องการการเข้าถึงข้อมูลอย่างรวดเร็ว โปรเจกต์นี้มาจาก Josh Tidwall ซึ่งเป็นที่รู้จักจากการสร้างเครื่องมือโอเพนซอร์สที่โดดเด่นอื่นๆ เช่น Tile38 และแพ็กเกจ gjson ของ Go
![]() |
---|
หน้าเว็บ repository ของ GitHub ของ Pogocache ที่นักพัฒนาสามารถค้นหาข้อมูลและทรัพยากรที่เกี่ยวข้องกับโซลูชันแคชใหม่นี้ |
การรองรับหลายโปรโตคอลทำให้แตกต่าง
สิ่งที่ทำให้ Pogocache น่าสนใจเป็นพิเศษคือความสามารถในการทำงานกับหลายโปรโตคอลพร้อมกัน ผู้ใช้สามารถเชื่อมต่อโดยใช้ HTTP requests, คำสั่ง Redis หรือแม้แต่การเชื่อมต่อไคลเอนต์ PostgreSQL ไปยังอินสแตนซ์แคชเดียวกัน ความยืดหยุ่นนี้หมายความว่านักพัฒนาไม่จำเป็นต้องเปลี่ยนโค้ดไคลเอนต์ที่มีอยู่หรือเรียนรู้ API ใหม่ - พวกเขาสามารถใช้โปรโตคอลใดก็ได้ที่พวกเขาคุ้นเคยอยู่แล้ว
แนวทางหลายโปรโตคอลยังเปิดโอกาสให้เกิดความเป็นไปได้ที่สร้างสรรค์ ตัวอย่างเช่น เว็บแอปพลิเคชันสามารถใช้การเรียก HTTP ในขณะที่บริการแบ็กเอนด์ใช้คำสั่ง Redis โดยทั้งหมดเข้าถึงข้อมูลแคชเดียวกัน
โปรโตคอลที่รองรับ:
- HTTP 1.1 พร้อม REST-style endpoints
- คำสั่งโปรโตคอล Redis (set, get, delete, incr, decr และอื่นๆ)
- โปรโตคอลไคลเอนต์ PostgreSQL
- ความเข้ากันได้กับโปรโตคอล Memcache
ประสิทธิภาพผ่านการปรับแต่งด้วยมือ
เมื่อถูกถามเกี่ยวกับการอ้างสิทธิ์ด้านประสิทธิภาพ นักพัฒนาอธิบายว่า Pogocache บรรลุความเร็วผ่านการปรับแต่งด้วยมืออย่างระมัดระวัง แทนที่จะพึ่งพาเทคนิคก้าวล้ำใดๆ เพียงอย่างเดียว โดยมุ่งเน้นไปที่การลดการแข่งขันผ่านเทคนิคต่างๆ เช่น sharded hashmaps และเลเยอร์เครือข่ายที่สร้างขึ้นอย่างพิถีพิถัน
โปรเจกต์นี้เขียนด้วย ANSI C และออกแบบมาเฉพาะสำหรับแพลตฟอร์ม Linux และ macOS แนวทางระดับต่ำนี้ช่วยให้สามารถควบคุมการจัดสรรหน่วยความจำและทรัพยากรระบบได้อย่างเข้มงวด ซึ่งมีส่วนทำให้ได้ประสิทธิภาพที่ดีขึ้น
คุณสมบัติทางเทคนิคหลัก:
- เขียนด้วย ANSI C สำหรับ Linux / macOS
- สถาปัตยกรรม sharded hashmap เพื่อลดการแย่งชิงทรัพยากร
- การจัดสรรหน่วยความจำต่ำผ่านการแบ่งปัน RAM ที่ได้รับการปรับปรุง
- ตัวเลือกไลบรารีแบบฝังตัวสำหรับการรวมเข้าด้วยกันโดยตรง
- รองรับ TLS / HTTPS เพื่อการเชื่อมต่อที่ปลอดภัย
- กลไกการยืนยันตัวตนที่สามารถกำหนดค่าได้
การออกแบบไลบรารีที่ฝังได้
ต่างจากเซิร์ฟเวอร์แคชหลายตัวที่ทำงานเป็นกระบวนการแยกต่างหาก Pogocache ยังสามารถฝังตัวเข้าไปในแอปพลิเคชันโดยตรงในฐานะไลบรารี C แนวทางนี้ช่วยขจัดโอเวอร์เฮดของเครือข่ายสำหรับแอปพลิเคชันที่สามารถรวมแคชเข้ากับพื้นที่กระบวนการของตัวเองได้โดยตรง
การออกแบบที่ฝังได้รวมถึง API ของ C ที่เรียบง่ายพร้อมฟังก์ชันสำหรับการดำเนินการพื้นฐาน เช่น get, set, delete และการดำเนินการ increment ทำให้สามารถเข้าถึงได้สำหรับแอปพลิเคชันที่เขียนด้วย C หรือภาษาที่สามารถเรียกไลบรารี C ได้
ฟังก์ชัน Core C API หลัก:
pogocache_create()
- เริ่มต้นอินสแตนซ์แคชpogocache_add()
- จัดเก็บข้อมูลพร้อมคีย์pogocache_get()
- ดึงข้อมูลตามคีย์pogocache_delete()
- ลบข้อมูลตามคีย์pogocache_incr()
- เพิ่มค่าตัวเลขpogocache_free()
- ล้างทรัพยากร
แผนการรวมฐานข้อมูลในอนาคต
สมาชิกชุมชนแสดงความสนใจเป็นพิเศษในแผนการรวมฐานข้อมูลของโปรเจกต์ นักพัฒนาชี้แจงว่าแทนที่จะกลายเป็นฐานข้อมูล SQL เต็มรูปแบบ Pogocache มีเป้าหมายที่จะทำงานร่วมกับฐานข้อมูลที่มีอยู่ เช่น SQLite, DuckDB และ PostgreSQL ในฐานะเลเยอร์แคชที่โปร่งใสสำหรับการดำเนินการอ่าน
ไม่ได้ตั้งใจจะทำให้ pogocache กลายเป็นฐานข้อมูล sql ฉันชอบที่จะให้มันเป็นแคช มากกว่าจะสำรวจวิธีการทำงานกับฐานข้อมูลที่มีอยู่ เช่น sqlite, duckdb, postgres เหมือนกับการให้การดำเนินการแบบ proxy ที่แคชการอ่าน sql อย่างโปร่งใส
แนวทางนี้สามารถให้ประโยชน์ด้านประสิทธิภาพที่สำคัญสำหรับแอปพลิเคชันที่มีปริมาณงานการอ่านหนัก ในขณะที่แยกความซับซ้อนของระบบฐานข้อมูลเต็มรูปแบบออกไป
ความปลอดภัยและการตรวจสอบสิทธิ์
เวอร์ชันปัจจุบันรวมถึงการตรวจสอบสิทธิ์พื้นฐานผ่านพารามิเตอร์รหัสผ่านบรรทัดคำสั่ง แม้ว่าข้อเสนอแนะจากชุมชนจะแสดงให้เห็นความสนใจในวิธีการเพิ่มเติม เช่น ตัวแปรสภาพแวดล้อมหรือการตรวจสอบสิทธิ์แบบไฟล์ โปรเจกต์ยังรองรับ TLS/HTTPS สำหรับการเชื่อมต่อที่ปลอดภัย
Pogocache เป็นตัวเพิ่มที่น่าสนใจในภูมิทัศน์ของแคช โดยเฉพาะสำหรับนักพัฒนาที่ต้องการความยืดหยุ่นของการรองรับหลายโปรโตคอลโดยไม่สูญเสียประสิทธิภาพ ลักษณะที่ฝังได้และคุณสมบัติการรวมฐานข้อมูลที่วางแผนไว้อาจทำให้น่าสนใจสำหรับแอปพลิเคชันที่ต้องการทั้งประสิทธิภาพสูงและความยืดหยุ่นในการปรับใช้
อ้างอิง: pogocache