Skip to main content

RocksDB - Universal compaction style

Trong RocksDB, Universal Compaction Style là một chiến lược tái cấu trúc dữ liệu được sử dụng để quản lý và tối ưu hóa việc đọc và ghi dữ liệu. Universal Compaction Style cho phép tái cấu trúc dữ liệu giữa các cấp độ (levels) và loại bỏ các tệp SSTable không cần thiết.

Universal Compaction Style sử dụng một loại tệp SSTable đặc biệt gọi là tệp SSTable đa cấp (multi-level SSTable) để lưu trữ dữ liệu. Mỗi tệp SSTable đa cấp bao gồm một hoặc nhiều cấp độ (levels) và sắp xếp dữ liệu theo thứ tự khóa. Các tệp SSTable đa cấp có thể được nén lại và tối ưu hóa để giảm kích thước và tăng hiệu suất đọc dữ liệu.

Khi dữ liệu được ghi vào RocksDB, nó sẽ được ghi vào Memtable trước. Khi Memtable trở nên quá lớn, RocksDB sẽ chuyển đổi dữ liệu từ Memtable vào tệp SSTable đa cấp tại cấp độ thấp nhất. Khi một tệp SSTable đa cấp trở nên quá lớn, RocksDB sẽ thực hiện quá trình compaction để tái cấu trúc dữ liệu và loại bỏ các tệp SSTable không cần thiết.

Quá trình compaction trong Universal Compaction Style cũng bao gồm hai giai đoạn chính: minor compaction và major compaction.

  • Minor compaction: Trong minor compaction, RocksDB sẽ chọn một số tệp SSTable đa cấp từ cấp độ thấp hơn và hợp nhất chúng thành một tệp SSTable mới ở cấp độ cao hơn. Quá trình này giúp giảm số lượng tệp SSTable và tối ưu hóa việc đọc dữ liệu. Minor compaction thường được thực hiện thường xuyên để duy trì cân bằng kích thước của các cấp độ.
  • Major compaction: Trong major compaction, RocksDB sẽ hợp nhất tất cả các tệp SSTable đa cấp từ một cấp độ thành một tệp SSTable đa cấp duy nhất ở cấp độ cao nhất. Quá trình này giúp giảm tải công việc đọc và tối ưu hóa hiệu suất truy vấn dữ liệu. Major compaction thường được thực hiện ít thường xuyên hơn và yêu cầu nhiều tài nguyên hơn so với minor compaction.

Universal Compaction Style giúp giảm kích thước của dữ liệu và tối ưu hóa hiệu suất đọc và ghi dữ liệu trong RocksDB.