피드로 돌아가기
Dev.toDatabase
원문 읽기
Bf-Tree의 Phantom Record를 통한 Negative Lookup I/O 제거
Negative Lookups in Bf-Tree: Caching Things That Don't Exist
AI 요약
Context
기존 캐싱 시스템은 데이터 존재 여부를 확인하지 못해 Key 부재 시 반복적인 Disk I/O가 발생하는 한계 존재. 특히 데이터가 없는 쿼리가 빈번한 워크로드에서 Leaf Page 접근 횟수가 증가하며 성능 저하 유발.
Technical Solution
- 데이터 부재 상태를 유효한 정보로 정의하여 캐싱하는 Negative Lookup 구조 설계
- 검색 실패 시 해당 Key를 Phantom Record 형태로 Mini-page에 저장하는 메커니즘 도입
- 이후 동일 Key 요청 시 Disk 접근 없이 Phantom Record 확인만으로 즉시 "not found" 반환
- Mini-page 내 Record Type을 Dirty, Exists, Cache, Tombstone, Phantom으로 세분화하여 상태 관리
- WAL(Write-ahead logging) 및 Checkpointing 기반의 전통적 복구 모델을 유지하며 데이터 영속성 보장
실천 포인트
- 빈번한 404 또는 Null 응답이 발생하는 API/DB 쿼리에 대해 Negative Caching 도입 검토 - 캐시 미스 시 발생하는 Disk I/O 비용을 정량적으로 측정하여 Phantom Record 도입 필요성 판단 - 데이터 부재 상태의 TTL(Time-to-Live) 설정으로 데이터 생성 시점의 정합성 문제 해결 방안 마련