7 điểm bởi xguru 2025-06-25 | 2 bình luận | Chia sẻ qua WhatsApp
  • Là DB key-value hiệu năng cao được phát triển bằng Go, hỗ trợ giao diện C và phản ánh các nguyên tắc thiết kế DB hiện đại như cây LSM, MVCC, kiến trúc lock-free
  • Bảo đảm tính nhất quán tức thời và độ bền dựa trên WAL (Write Ahead Logging), đồng thời cung cấp hiệu năng ghi/đọc cao nhờ flush/compaction nền và xử lý song song lock-free
  • Hướng tới việc lưu trữ dữ liệu nhẹ và nhanh với cấu trúc nhúng single-node, không cần mạng hay phân tán

Các đặc điểm chính của Wildcat

  • Dựa trên cây LSM, tối ưu cho workload thiên về ghi
  • MVCC (điều khiển tương tranh đa phiên bản) và cấu trúc dữ liệu lock-free, xử lý không khóa trên các đường dẫn chính
  • Ghi log WAL: ghi lại toàn bộ trạng thái giao dịch và hỗ trợ khôi phục
  • Skip list nhận biết phiên bản để tăng tốc MVCC trong bộ nhớ
  • Ghi thread-safe/lock-free và quản lý cache/bộ nhớ theo cơ chế atomic
  • SSTable là cấu trúc BTree bất biến (immutable), hỗ trợ tách key-value và tối ưu Bloom filter
  • Bảo đảm giao dịch ACID và có thể chọn mức độ bền (Full/Partial/None)
  • Crash recovery để khôi phục cả giao dịch đã commit lẫn chưa hoàn tất
  • Batch/iterator: hỗ trợ lặp theo phạm vi, tiền tố và hai chiều
  • Thiết kế hiện đại như Bloom Filter, tách key-value (.klog, .vlog), compaction nhận biết tombstone/phiên bản
  • Thống kê/logging/monitoring: cung cấp nhiều giao diện chẩn đoán và thống kê như Stats(), LogChannel
  • Build thư viện C và API: có thể build thành thư viện chia sẻ Go để dùng trực tiếp từ nhiều ngôn ngữ
  • Hỗ trợ Go 1.24+ và Linux/macOS/Windows (64-bit)

Vì sao điều này quan trọng? (điểm khác biệt so với các KV nhúng khác)

  • Có cấu trúc LSM+MVCC tương tự RocksDB, Badger, nhưng được tối ưu cho môi trường Go với thiết kế native Go lock-free, đa luồng
  • Chuyên cho DB nhúng: triển khai tính nhất quán tức thời/độ bền/hiệu năng cao mà không có overhead của mạng hay replication
  • Khả năng khôi phục giao dịch, duy trì trạng thái chưa hoàn tất giúp tăng độ tin cậy và tính minh bạch
  • Có thể tinh chỉnh theo từng workload thông qua nhiều tham số compaction/buffer/cache

2 bình luận

 
kuber 2025-06-25

Ngôn ngữ này có số lượng cơ sở dữ liệu được tạo ra nhiều đến mức đáng ngờ.

 
sjc02183 2025-06-25

Ngôn ngữ này sản sinh ra nhiều cơ sở dữ liệu một cách đáng ngờ.