2.5. Bloom Filter
(출처:https://en.wikipedia.org/wiki/Bloom_filter) 블룸 필터는 데이터 블록에 특정 key의 데이터가 존재하는지 빠르게 확인할 수 있는 확률적 자료 구조이다. db_bench에선 bloom_bits의 값을 조절하여 자신이 원하는 크기의 블룸 필터를… 더 보기 »2.5. Bloom Filter
(출처:https://en.wikipedia.org/wiki/Bloom_filter) 블룸 필터는 데이터 블록에 특정 key의 데이터가 존재하는지 빠르게 확인할 수 있는 확률적 자료 구조이다. db_bench에선 bloom_bits의 값을 조절하여 자신이 원하는 크기의 블룸 필터를… 더 보기 »2.5. Bloom Filter
LevelDB의 전체 코드엔 약 100개 가량의 메인 함수가 존재한다. 여기서 db_bench의 makefile을 확인해 보면 db_bench의 메인 함수는 db_bench.cc 파일에 존재함을 알 수 있다. 해당 메인… 더 보기 »1.6-2. Bloom Filter Write
SSTable은 key-value pair들을 담는 Data Block, 각 Data Block들에 대한 블룸필터를 갖고 있는 Filter Block 등으로 구성된다. 이 때 LevelDB 핸드북에는 Filter Block과 관련해 다음과… 더 보기 »2.4. SSTable
실험 환경 Key와 Value의 크기가 Compaction에 영향을 주게 된다 생각되어 실험을 하게되었습니다. Various Key Size Various Value Size 16 byte 256 byte 32 byte 1… 더 보기 »2.3. Compaction
(출처:https://en.wikipedia.org/wiki/Bloom_filter) 블룸 필터는 데이터 블록에 특정 key의 데이터가 존재하는지 확인할 수 있는 확률적 자료 구조이다. 블룸 필터는 데이터를 Write를 할 때에, 각각의 key에 k개의 해시… 더 보기 »1.6-1. Bloom Filter
실험환경 주요변경옵션 leveldb 부분 구조 (memtable부분) write_buffer_size = memtable 하나의 최대 크기 default = 4M max_file_size = memtable 안에 들어가 있는 sst파일의 최대 크기 default… 더 보기 »2.2. Memtable
Option – Manual_wal_flush DB::put이 호출되면 데이터는 memtable에 쓰이고 WAL이 켜져 있다면 WAL에도 쓰인다. 애플리케이션 메모리 버퍼에 먼저 기록되고 버퍼는 fwrite syscall을 호출하여 OS 버퍼로 플러시… 더 보기 »2.1-3. WAL-3
Option – Max_total_wal_size Hypothesis column family들은 각각의 ssTable을 갖지만 WAL은 공유한다.하나의 column family가 flush 될 때마다 새 WAL이 생성된다.그리고 모든 column families에 대한 쓰기는 새… 더 보기 »2.1-2. WAL-2
Option – Disable_WAL LevelDB 의 경우 db_bench 를 실행하며 WAL 을 사용할지 말지에 대한 옵션이 존재하지 않는다. 반면 LevelDB 를 기반으로 만든 RocksDB 의 경우… 더 보기 »2.1-1. WAL-1
Major Compaction 이란? – 우리가 흔히 Compaction 이라 부르는 실질적인 부분입니다. – 메모리에 있는 데이터를 디스크에 옮기는 Minor Compaction와 다르게 디스크 내부에 있는 데이터를 병합하는… 더 보기 »1.5-3. Major Compaction