SST 파일(Sorted String Table 파일)은 RocksDB에서 데이터를 저장하는 불변(immutable) 형식의 파일입니다. 키-값 쌍을 정렬된 상태로 저장하며, 디스크에 효율적으로 데이터를 저장하고 빠르게 읽어올 수 있도록 설계되었습니다. SST 파일은 MemTable에서 플러시된 데이터로 생성되며, RocksDB의 LSM 트리 구조의 일부로 작동합니다. 데이터를 신속하게 로드하거나 백업할 때 사용됩니다.
SstFileWriter::Open
: 새로운 SST 파일을 생성하고 쓰기 작업을 시작합니다.SstFileWriter::Put
: SST 파일에 키-값 쌍을 추가합니다. 추가되는 키들은 반드시 정렬된 순서여야 합니다.SstFileWriter::Finish
: SST 파일 쓰기를 완료하고 파일을 닫습니다.DB::IngestExternalFile
: 생성된 SST 파일을 데이터베이스에 삽입합니다.IngestExternalFileOptions
: SST 파일을 삽입할 때 사용할 옵션을 설정합니다.use rocksdb::{Options, SstFileWriter, DB};
fn main() {
// 1. SST 파일 생성
let path = "/path/to/sst_file.sst";
let options = Options::default();
let mut sst_writer = SstFileWriter::create(&options).expect("Failed to create SstFileWriter");
sst_writer.open(path).expect("Failed to open SST file");
// 2. SST 파일에 키-값 쌍 추가
sst_writer.put(b"key1", b"value1").expect("Failed to put data");
sst_writer.put(b"key2", b"value2").expect("Failed to put data");
// 3. SST 파일 저장 및 닫기
sst_writer.finish().expect("Failed to finish SST file");
// 4. SST 파일을 RocksDB에 삽입
let db_path = "/path/to/rocksdb";
let db = DB::open_default(db_path).expect("Failed to open RocksDB");
let ingest_options = rocksdb::IngestExternalFileOptions::default();
db.ingest_external_file(&ingest_options, &[path])
.expect("Failed to ingest SST file");
}