처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.07.03 23

10년 넘게 0.9였던 LMDB가 드디어 1.0 — 읽기 속도로는 적수가 없는 임베디드 DB 이야기

Hacker News 원문 보기

데이터베이스라고 하면 보통 MySQL이나 PostgreSQL처럼 별도 서버를 띄워놓고 접속해서 쓰는 걸 떠올리실 텐데요. 오늘 이야기할 LMDB는 그런 종류가 아니에요. 앱 안에 라이브러리로 쏙 들어가는 임베디드 키-값 저장소인데, 이 분야에서 '읽기 성능의 끝판왕'으로 불려온 물건이거든요. 그런 LMDB가 드디어 1.0 버전에 도달했어요. 10년 넘게 0.9.x 버전으로 살아온 프로젝트라서, 숫자 하나 바뀐 것 이상의 의미가 있는 소식이에요.

LMDB가 뭐냐면

LMDB는 Lightning Memory-Mapped Database의 약자예요. 원래 OpenLDAP이라는 디렉터리 서버 프로젝트의 저장 엔진으로 쓰려고 Howard Chu가 만들었는데, 워낙 빠르고 견고해서 독립적인 저장소로 널리 퍼졌어요. 임베디드 DB가 뭐냐면, SQLite처럼 별도 서버 프로세스 없이 내 프로그램에 라이브러리로 링크해서 쓰는 DB예요. 네트워크를 거치지 않으니 함수 호출 한 번이 곧 쿼리인 셈이죠. 다만 SQLite가 SQL을 지원하는 관계형 DB라면, LMDB는 키를 주면 값을 돌려주는 단순한 키-값 저장소예요.

왜 그렇게 빠르냐면

비결의 핵심은 이름에도 들어 있는 메모리 맵(mmap)이에요. 이게 뭐냐면, 운영체제한테 '이 파일을 내 프로세스의 메모리 주소 공간에 붙여줘'라고 부탁하는 기능이에요. 그러면 파일을 read 함수로 읽는 대신 그냥 메모리 읽듯이 접근할 수 있거든요. 데이터를 애플리케이션 버퍼로 복사하는 과정이 통째로 사라져서, 읽기가 사실상 메모리 접근 속도로 동작해요. 캐시 관리도 운영체제의 페이지 캐시에 맡겨버리니까 LMDB 자체 코드는 놀랄 만큼 작고 단순하고요.

내부 구조는 B+트리인데, 데이터를 제자리에서 고치지 않고 항상 새 페이지에 쓰는 copy-on-write 방식을 써요. 덕분에 별도의 저널이나 WAL(장애 복구용 기록 파일) 없이도 크래시에 안전해요. 쓰다가 전원이 나가도 마지막으로 완결된 상태가 그대로 남아 있거든요. 그리고 MVCC, 그러니까 다중 버전 동시성 제어를 지원해서 읽는 쪽은 쓰는 쪽을 전혀 기다리지 않아요. 읽기 트랜잭션은 몇 개든 동시에 돌 수 있고, 쓰기만 한 번에 하나로 직렬화되는 구조예요.

물론 만능은 아니에요. 쓰기가 아주 많은 워크로드에서는 LSM 트리 기반인 RocksDB 같은 엔진이 유리할 수 있어요. LSM 트리는 쓰기를 일단 순차적으로 쌓아두고 나중에 정리하는 방식이라 쓰기 처리량이 좋은 대신, 읽을 때 여러 층을 뒤져야 하거든요. LMDB는 정확히 그 반대편에 있는 설계예요. 읽기가 압도적으로 많고 지연 시간이 중요한 곳에 딱 맞아요.

업계 맥락

LMDB의 영향력은 생각보다 넓어요. Go 생태계에서 오랫동안 사랑받은 BoltDB가 LMDB 설계에서 영감을 받아 만들어졌고, 암호화폐 모네로의 블록체인 저장소, 각종 메일 서버와 DNS 서버, 머신러닝 쪽에서는 대용량 학습 데이터 캐시로도 널리 쓰여왔어요. 파이썬의 lmdb 패키지처럼 거의 모든 주요 언어에 바인딩이 있고요. 재밌는 건 버전 이야기인데, 0.9.x라는 숫자만 보면 미완성처럼 보이지만 실제로는 십수 년간 수많은 프로덕션에서 검증된 소프트웨어였어요. 그래서 이번 1.0은 '이제야 완성됐다'는 뜻이라기보다, 오랫동안 준비해온 다음 세대 기반이 정리됐다는 선언에 가까워요. 버전 숫자가 소프트웨어의 성숙도를 말해주지 않는다는 좋은 사례이기도 하고요.

한국 개발자에게 주는 시사점

당장 써볼 곳이 많아요. 서버 앱의 로컬 캐시, 데스크톱 앱이나 CLI 도구의 상태 저장, 임베디드 기기의 설정 저장소처럼 '레디스를 띄우긴 부담스럽고 파일로 대충 저장하긴 불안한' 자리에 잘 맞거든요. 요즘이라면 AI 에이전트의 로컬 상태나 임베딩 캐시 저장소로도 고려해볼 만해요. 그리고 코드가 작고 명확해서, 스토리지 엔진이 어떻게 동작하는지 공부하고 싶은 분에게는 최고의 교과서 중 하나예요. mmap, copy-on-write, MVCC 같은 개념이 실제 코드로 어떻게 구현되는지 직접 볼 수 있으니까요.

정리하면, LMDB 1.0은 단순함이 곧 성능이고 견고함이라는 걸 증명해온 프로젝트의 이정표예요. 여러분은 임베디드 저장소가 필요할 때 뭘 쓰시나요? SQLite, RocksDB, 아니면 그냥 JSON 파일? 각자의 선택과 이유가 궁금하네요.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

파이썬으로 자동화를 시작해보세요

파이썬 기초부터 자동화까지 실전 강의.

파이썬 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.