- ฐานข้อมูลคีย์-แวลูประสิทธิภาพสูงที่พัฒนาด้วย Go รองรับอินเทอร์เฟซ C และสะท้อน หลักการออกแบบฐานข้อมูลสมัยใหม่ เช่น LSM tree, MVCC และโครงสร้างแบบ lock-free
- รับประกัน ความสอดคล้องทันทีและความทนทานของข้อมูล บนพื้นฐาน WAL (Write Ahead Logging) พร้อมการ flush/compaction เบื้องหลัง และการประมวลผลขนานแบบ lock-free เพื่อมอบประสิทธิภาพการเขียน/อ่านที่สูง
- เป็นสถาปัตยกรรมแบบ embedded single-node มุ่งเน้นการจัดเก็บข้อมูลที่ เบาและรวดเร็ว โดยไม่ต้องพึ่งพาเครือข่ายหรือระบบกระจาย
คุณสมบัติหลักของ Wildcat
- ใช้ LSM tree เป็นพื้นฐาน ปรับให้เหมาะกับเวิร์กโหลดที่เน้นการเขียน
- ใช้ MVCC (การควบคุมการทำงานพร้อมกันหลายเวอร์ชัน) และโครงสร้างข้อมูลแบบ lock-free เพื่อให้เส้นทางหลักทำงานได้โดยไม่ต้องล็อก
- WAL logging: บันทึกสถานะทั้งหมดของทรานแซกชันและรองรับการกู้คืน
- skip list ที่รับรู้เวอร์ชัน เพื่อเร่ง MVCC ในหน่วยความจำ
- การเขียนแบบ thread-safe/lock-free และการจัดการแคช/หน่วยความจำแบบ atomic
- SSTable ใช้โครงสร้าง BTree แบบ immutable รองรับการแยกคีย์-แวลูและการปรับแต่ง Bloom filter
- รับประกัน ACID ของทรานแซกชัน และเลือกระดับความทนทานได้ (Full/Partial/None)
- Crash recovery กู้คืนได้ทั้งทรานแซกชันที่ commit แล้วและที่ยังไม่เสร็จสมบูรณ์
- batch/iterator: รองรับการวนซ้ำแบบช่วง, prefix และสองทิศทาง
- มีการออกแบบสมัยใหม่ เช่น Bloom Filter, การแยก key-value (
.klog, .vlog), compaction ที่รับรู้ tombstone/เวอร์ชัน
- สถิติ/ล็อกกิง/มอนิเตอร์ริง: มีอินเทอร์เฟซสำหรับวินิจฉัยและสถิติหลากหลาย เช่น Stats(), LogChannel
- การบิลด์เป็นไลบรารี C และ API: บิลด์เป็น Go shared library และเรียกใช้ได้โดยตรงจากหลายภาษา
- รองรับ Go 1.24+ และ Linux/macOS/Windows (64 บิต)
ทำไมจึงสำคัญ? (จุดต่างจาก embedded KV อื่น ๆ)
- แม้มีโครงสร้าง LSM+MVCC คล้าย RocksDB, Badger เป็นต้น แต่ใช้ การออกแบบแบบ Go-native, lock-free, multithreaded ทำให้เหมาะกับการใช้งานในสภาพแวดล้อม Go เป็นพิเศษ
- โดดเด่นด้านฐานข้อมูลแบบฝังตัว: ทำงานได้โดย มีความสอดคล้องทันที ความทนทาน และประสิทธิภาพสูง โดยไม่มีโอเวอร์เฮดจากเครือข่าย/การทำ replication
- การกู้คืนทรานแซกชันและการคงสถานะที่ยังไม่เสร็จสมบูรณ์ ช่วยเพิ่มความน่าเชื่อถือและความโปร่งใส
- ปรับแต่งให้เหมาะกับเวิร์กโหลดได้ผ่าน พารามิเตอร์ของ compaction/buffer/cache ที่หลากหลาย
2 ความคิดเห็น
เป็นภาษาที่มีฐานข้อมูลออกมาเยอะจนน่าสงสัย
เป็นภาษาที่มีฐานข้อมูลออกมาเยอะจนน่าสงสัย