RocksDB 의 Write Ahead Log (WAL)
RocksDB 에는 세 가지 기본 적 인 데이터 구조 개념 이 있 는데 그것 이 바로 memtable, sstfile 과 logfile 이다.
4. 567917. memtable 은 메모리 데이터 구조 로 새로 쓰기 입 회 는 memtable 을 삽입 하여 선택적으로 logfile 을 기록 합 니 다
4. 567917. logfile 은 디스크 에 순서대로 쓰 는 파일 입 니 다
4. 567917. memtable 이 가득 쓰 이면 flush 에서 디스크 에 있 는 sstfile 로 로그 파일 이 안전하게 삭 제 될 수 있 음 을 알려 줍 니 다.keys 를 찾 는 데 더 좋 은 성능 을 가 질 수 있 도록 sstfile 의 데이터 가 정렬 되 었 습 니 다
RocksDB 에 대한 매번 쓰기 동작 은 두 곳 에 적 혀 있 습 니 다. 1) 메모리 기반 데이터 구조 memtable (quota 에 도달 하면 flush 에서 SST file).2) 미리 쓰기 로그 - Write Ahead Log (WAL).이상 이 발생 하면 WAL 은 memtable 의 데 이 터 를 완전 하 게 복원 하고 db 의 원래 상 태 를 복원 할 수 있 습 니 다.기본 설정 에서 RocksDB 는 사용자 가 쓸 때마다 flush WAL 을 통 해 프로 세 스 crash 후의 일치 성 을 확보 합 니 다.
WAL 의 라 이 프 사이클
예 를 들 어 RocksDB 인 스 턴 스 db 는 두 개의 Column Families: "new cf", "default" 으로 만 들 어 졌 고 Column Families 는 RocksDB 3.0 시 에 만 들 어 졌 으 며 각 key - value pair 는 적어도 하나의 Column Families 에 대응 하 며 지정 되 지 않 으 면 "default" 에 대응 합 니 다.Column Families 는 db 를 논리 적 으로 구분 하 는 경 로 를 제공 합 니 다.db open 이 되면 새로운 WAL 사용자 가 모든 기록 을 영구적 으로 만 듭 니 다.
DB* db;
std::vector column_families;
column_families.push_back(ColumnFamilyDescriptor(
kDefaultColumnFamilyName, ColumnFamilyOptions()));
column_families.push_back(ColumnFamilyDescriptor(
"new_cf", ColumnFamilyOptions()));
std::vector handles;
s = DB::Open(DBOptions(), kDBPath, column_families, &handles, &db);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.