5. SST Files

Tasker_Jang·2024년 8월 31일
0

1) SST File이란 무엇인가?

SST 파일(Sorted String Table 파일)은 RocksDB에서 데이터를 저장하는 불변(immutable) 형식의 파일입니다. 키-값 쌍을 정렬된 상태로 저장하며, 디스크에 효율적으로 데이터를 저장하고 빠르게 읽어올 수 있도록 설계되었습니다. SST 파일은 MemTable에서 플러시된 데이터로 생성되며, RocksDB의 LSM 트리 구조의 일부로 작동합니다. 데이터를 신속하게 로드하거나 백업할 때 사용됩니다.

2) SST File을 다룰 수 있는 주요 메서드

  1. SstFileWriter::Open: 새로운 SST 파일을 생성하고 쓰기 작업을 시작합니다.
  2. SstFileWriter::Put: SST 파일에 키-값 쌍을 추가합니다. 추가되는 키들은 반드시 정렬된 순서여야 합니다.
  3. SstFileWriter::Finish: SST 파일 쓰기를 완료하고 파일을 닫습니다.
  4. DB::IngestExternalFile: 생성된 SST 파일을 데이터베이스에 삽입합니다.
  5. IngestExternalFileOptions: SST 파일을 삽입할 때 사용할 옵션을 설정합니다.

3) 예제 코드

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");
}
profile
터널을 지나고 있을 뿐, 길은 여전히 열려 있다.

0개의 댓글