HANGUL.WIKI

SQLite의 설계 철학과 오픈소스 신뢰성

SQLite Design Philosophy and Open Source Reliability

2026-07-04
목차 (0개 섹션)

전 세계에서 하루에도 수십억 번씩 실행되는 소프트웨어 부품 하나를 꼽으라면, 그것은 아마 SQLite일 것이다. 아이폰과 안드로이드 폰 안에, 크롬과 파이어폭스 브라우저 안에, 심지어 항공기 항전 시스템 안에도 이 조그마한 데이터베이스 엔진이 들어가 있다. 그런데 이 프로그램을 만든 사람은 딱 한 명, D. 리처드 힙(D. Richard Hipp)이고, 그는 이 코드를 아예 저작권 없이 퍼블릭 도메인으로 공개해버렸다.

SQLite의 시작은 1998년 미 해군에서 일하던 힙이 겪은 불편함에서 나왔다. 당시 그는 미사일 구축함용 소프트웨어를 만들면서 상용 DBMS를 다뤄야 했는데, 서버를 따로 띄우고 접속을 관리하는 과정이 번거롭다고 느꼈다. 그는 "서버가 아예 필요 없는, 파일 하나가 곧 데이터베이스인" 엔진을 구상했고, 2000년에 첫 버전을 공개했다. 이름의 "Lite"는 가벼움을 뜻하지만, 동시에 화학의 광물(-ite) 접미사에서 따온 말장난이기도 하다.

SQLite의 설계 철학에서 가장 논쟁적인 지점은 라이선스다. 힙은 SQLite 코드에 대한 저작권을 아예 주장하지 않기로 했다. MIT나 BSD 라이선스조차 저작권 표시 의무가 남는데, SQLite는 그마저도 없다. 공식 사이트에는 "이 소프트웨어는 공공 영역에 봉헌한다(dedicate to the public domain)"는 문구가 박혀 있다. 문제는 모든 국가의 법체계가 '저작권 포기'라는 개념을 인정하지는 않는다는 점이다. 이 때문에 SQLite 팀은 기여자 전원에게 서명을 받는 절차를 두고, 법적 안전판으로 별도의 라이선스 보증서(구매 가능)까지 판매한다. 아이러니하게도 "완전히 공짜인 소프트웨어"를 지키기 위해 유료 법률 문서가 존재하는 셈이다.

신뢰성 측면에서 SQLite가 내세우는 것은 테스트 커버리지다. 실제 SQLite 소스코드는 약 15만 줄인데, 이를 검증하는 테스트 코드는 그 수백 배에 달하는 것으로 알려져 있으며, 릴리스 전 100% 분기 커버리지(branch coverage) 테스트를 통과해야 한다. TH3(Test Harness #3)라는 비공개 회귀 테스트 스위트는 항공우주·의료기기 등에 쓰이는 코드에 요구되는 MC/DC(Modified Condition/Decision Coverage) 기준까지 만족시킨다. 이는 오픈소스 프로젝트치고는 이례적으로 엄격한 수준이며, 힙이 "이 코드는 컨트롤이 불가능한 임베디드 환경에 들어갈 수 있다"는 전제 하에 설계했기 때문이다.

또 하나 특이한 점은 SQLite가 "죽지 않는 소프트웨어"를 목표로 한다는 것이다. 힙은 여러 인터뷰에서 SQLite 파일 포맷이 향후 최소 2050년까지 읽고 쓸 수 있도록 하�는 것이 목표라고 밝혔다. 실제로 2004년의 파일 포맷과 2024년 최신 버전의 파일 포맷은 거의 호환된다. 이는 클라우드 서비스 종속성 없이 로컬 파일 하나로 수십 년간 데이터를 보존하려는 설계 철학과 맞닿아 있다.

다만 이런 신뢰성이 논쟁 없이 받아들여진 것은 아니다. 동시성 쓰기 문제는 SQLite의 오랜 약점으로 꼽혀왔다. 기본적으로 한 번에 하나의 쓰기 트랜잭션만 허용하는 구조 때문에, 다중 사용자 서버 환경에는 부적합하다는 지적이 많았다. 2021년에야 WAL(Write-Ahead Logging) 모드 개선과 "BEGIN CONCURRENT" 실험 기능이 논의되기 시작했을 정도로, 이 문제는 오랫동안 "그건 SQLite의 용도가 아니다"라는 답으로 넘어가곤 했다. 이는 SQLite 철학의 또 다른 축, 즉 "모든 것을 다 잘하려 하지 않는다"는 태도를 보여주는 사례이기도 하다.

문서 정보

최초 작성
최종 갱신
분류
기술

HANGUL.WIKI가 정리·작성한 문서입니다. 정확성을 위해 노력하나 오류가 있을 수 있으므로, 중요한 내용은 공식 출처를 통해 확인하시기 바랍니다. 내용의 오류나 정정 요청은 오류·정정 신고로 알려주시면 검토 후 반영합니다.