최근 새로운 인메모리 NoSQL 데이터베이스인 '랩토(Rapto)'가 지그(Zig) 언어로 개발되어 오픈소스 프로젝트로 공개되었습니다. 랩토는 기존 데이터베이스를 대체하기보다는, 견고한 아키텍처 설계와 불필요한 복잡성 회피를 통해 확장성과 효율성을 달성할 수 있음을 보여주는 실험적인 프로젝트로 시작되었습니다. 성능과 개발 비용 측면에서 모두 이점을 제공하는 것을 목표로 합니다.
랩토의 핵심 설계는 서버, 프로토콜, 스토리지 등 여러 작고 전문화된 컴포넌트들의 계층적 구성에 있습니다. 각 컴포넌트는 명확한 책임을 가지며 독립적으로 관찰, 측정 및 최적화될 수 있도록 설계되었습니다. 특히, 랩토는 단일 스레드 서버임에도 불구하고 동시 클라이언트 수가 증가할수록 처리량(throughput)이 크게 증가하는 벤치마크 결과를 보여주었습니다. 이는 epoll 기반 이벤트 폴러를 독립적으로 최적화할 수 있는 아키텍처 덕분이며, 이벤트 처리 비용을 상쇄하여 높은 성능을 달성합니다. 또한, 메모리 사용량을 줄이고 할당 빈도를 낮추는 기술을 적용하여 효율성을 높였습니다. 예를 들어, 포인터 정렬에서 파생된 3개의 최하위 비트(LSB)를 활용해 값 유형을 저장함으로써 추가적인 포인터 간접 참조를 피하고, 요청 수신 및 응답 구성에 동일한 버퍼를 재사용하여 캐시 무효화와 불필요한 할당을 줄입니다.
랩토의 가장 중요한 특징 중 하나는 '배치(Batch)' 개념입니다. 배치는 여러 쿼리를 하나의 요청으로 묶어 전송함으로써 왕복 시간(RTT)을 상쇄하고 처리 효율을 높이는 기본 단위입니다. 배치 내의 쿼리들은 분할 불가능(indivisible)하여, 중간에 다른 쿼리가 끼어들어 데이터 불일치를 유발하는 것을 방지합니다. 이는 원자성(atomic)과는 다르지만, 특정 시점의 데이터 일관성을 보장하는 데 유용합니다. 이러한 배치 프리미티브를 기반으로 커서(Cursor)를 통한 효율적인 스캔이나 락(Lock)을 통한 CAS(Compare-and-Swap) 같은 복잡한 연산도 구현할 수 있습니다. 랩토는 아직 초기 단계의 프로젝트이지만, 이러한 설계 원칙과 지그 언어의 최적화 이점을 활용하여 고성능 및 저비용 소프트웨어 개발의 가능성을 제시하고 있습니다.