1.7. Cache
Contents 1. What is Cache 2. What is LRU 3. LRU Cache Structure in LevelDB 4. Overrall Cache Flow 1. What is Cache 캐시는 컴퓨팅… 더 보기 »1.7. Cache
Contents 1. What is Cache 2. What is LRU 3. LRU Cache Structure in LevelDB 4. Overrall Cache Flow 1. What is Cache 캐시는 컴퓨팅… 더 보기 »1.7. Cache
db_bench는 db_bench.cc 파일의 main 함수로 부터 시작되며, 파라미터를 scanf로 읽어들인 뒤 benchmark.Run() 클래스 함수를 실행한다. 해당 함수는 Write 과정을 처리하는 Open() 함수와 Read 과정을 처리하는… 더 보기 »1.6-3. Bloom Filter Read
LevelDB의 전체 코드엔 약 100개 가량의 메인 함수가 존재한다. 여기서 db_bench의 makefile을 확인해 보면 db_bench의 메인 함수는 db_bench.cc 파일에 존재함을 알 수 있다. 해당 메인… 더 보기 »1.6-2. Bloom Filter Write
(출처:https://en.wikipedia.org/wiki/Bloom_filter) 블룸 필터는 데이터 블록에 특정 key의 데이터가 존재하는지 확인할 수 있는 확률적 자료 구조이다. 블룸 필터는 데이터를 Write를 할 때에, 각각의 key에 k개의 해시… 더 보기 »1.6-1. Bloom Filter
Major Compaction 이란? – 우리가 흔히 Compaction 이라 부르는 실질적인 부분입니다. – 메모리에 있는 데이터를 디스크에 옮기는 Minor Compaction와 다르게 디스크 내부에 있는 데이터를 병합하는… 더 보기 »1.5-3. Major Compaction
Minor Compaction flush 라 부르며 메모리에 있는 데이터(imm memtable)을 디스크(level 0)로 내려주는 작업을 합니다. Overall Minor Compaction Code Flow 전체적인 과정 MaybeScheduleCompaction에서는 Minor Compaction 작업이… 더 보기 »1.5-2. Minor Compaction
Compaction은 db에서 가장 복잡한 프로세스 중 하나이며 db의 성능에 큰 영향을 주기도 합니다. 내부 데이터 중첩 및 통합 메커니즘이며 읽기 및 쓰기 속도의 균형을 맞추는… 더 보기 »1.5-1. Compaction
LevelDB에서 Get Operation을 통해 원하는 key의 value를 찾을 때, 어떤 과정을 거쳐서 key를 찾는지, 그 중에서 storage에 저장되는 SSTable에서 어떤 과정을 거쳐 찾는지에 대해 Top-Down… 더 보기 »1.4-3. SSTable Read
SSTable은 다음과 같은 상황에서 만들어진다. MemTable로부터 Flush(Minor Compaction)가 일어날 때 Storage에서 Compaction이 일어날 때 이 중 MemTable로부터 Flush가 일어날 때에 초점을 맞춰 SSTable에 어떻게 만들어지는지… 더 보기 »1.4-2. SSTable Write
LevelDB는 LSM트리(Log Structured Merge Tree)를 기반으로 만들어졌으며, 이 때문에 write를 할 때 데이터를 디스크에 직접 쓰는게 아니라 Log에 처음 쓰고 MemTable에 쓰게 된다. MemTable은 데이터가… 더 보기 »1.4-1. SSTable