SQLite Design Philosophy and Open Source Reliability
2026-07-04 2026-07-04 2026-07-04
목차 (0개 섹션)목차 (0개 섹션)목차 (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 철학의 또 다른 축, 즉 "모든 것을 다 잘하려 하지 않는다"는 태도를 보여주는 사례이기도 하다.
스마트폰 속에 숨어있는 프로그램 하나가 있다. 이름은 SQLite. 인스타그램도, 카톡도, 웹브라우저도 다 이 프로그램을 쓴다. 그런데 이걸 만든 회사는 없다. 딱 한 사람, 리처드 힙이라는 미국 프로그래머가 1998년에 혼자 만들기 시작했다.
당시 힙은 해군에서 일하며 소프트웨어를 만들고 있었는데, 데이터베이스 프로그램들이 죄다 서버를 따로 켜야 해서 번거로웠다. 그래서 "그냥 파일 하나가 데이터베이스면 안 될까?"라는 생각으로 SQLite를 만들었다. 서버도 설치도 필요 없이, 파일 하나만 있으면 끝나는 방식이다. 이 아이디어가 지금 전 세계 수십억 대 기기에서 쓰이고 있다.
SQLite에서 제일 신기한 부분은 저작권이다. 보통 프로그램을 만들면 "이건 내가 만든 거니까 이렇게만 써라"라는 라이선스를 붙인다. 그런데 힙은 아예 저작권을 주장하지 않기로 했다. 완전히 공짜, 누구나 마음대로 가져다 써도 되는 상태로 풀어버린 거다. 그래서 애플, 구글, 아마존 같은 큰 회사들도 아무 걱정 없이 SQLite를 자기 제품에 넣을 수 있었다.
그런데 "공짜니까 대충 만들었겠지"라고 생각하면 오산이다. SQLite 팀은 오히려 반대로 갔다. 코드 한 줄을 짤 때마다 그 코드를 확인하는 테스트를 수백 줄씩 만든다. 새 버전을 내놓기 전에는 프로그램의 거의 모든 실행 경로를 다 테스트해봐야 통과다. 비행기나 의료기기에 들어가는 소프트웨어급으로 깐깐하게 검사한다. 그래서 "돈 받고 파는 프로그램보다 더 안정적이다"라는 평가를 받는다.
또 하나 재밌는 목표는 "2050년에도 지금 만든 파일을 열 수 있게 하자"는 것이다. 클라우드 서비스는 회사가 망하면 데이터가 사라질 수 있지만, SQLite 파일은 그냥 내 컴퓨터에 있는 파일이라 몇십 년이 지나도 열린다. 실제로 2004년에 만든 SQLite 파일도 지금 프로그램으로 문제없이 열린다.
물론 단점도 있다. SQLite는 여러 사람이 동시에 같은 데이터를 고치는 상황에는 약하다. 그래서 큰 웹사이트의 메인 서버로는 잘 안 쓰이고, 대신 한 사람(또는 한 기기)이 쓰는 앱 안에서 주로 쓰인다. 힙은 이걸 단점이 아니라 "우리가 하려는 일이 아니다"라고 딱 잘라 말한다. 모든 걸 다 잘하려 하지 않고, 한 가지를 확실하게 잘하는 게 SQLite의 철학이다.
여러분 폰 안에는 아무도 눈치채지 못하는 작은 서랍장이 하나 숨어있어요. 이름은 SQLite예요. 사진 앱도, 게임도, 메시지 앱도 이 서랍장 안에 정보를 차곡차곡 넣어둬요.
이 서랍장을 만든 사람은 딱 한 명, 리처드 힙이라는 아저씨예요. 1998년에 아저씨는 컴퓨터로 뭔가를 만들다가 이렇게 생각했어요. "왜 서랍장 하나 쓰려고 이렇게 복잡하게 준비를 해야 하지? 그냥 종이 파일 한 장이 서랍장이면 안 될까?" 그래서 만든 게 SQLite예요. 다른 서랍장(데이터베이스)들은 항상 옆에 도우미(서버)를 켜놔야 하는데, SQLite는 파일 하나만 있으면 혼자서 다 해요.
더 신기한 건, 힙 아저씨가 "이건 내 거야"라고 말하지 않았다는 거예요. 보통 뭔가를 만들면 "이거 만든 사람 이름은 꼭 써줘"라고 하잖아요. 근데 힙 아저씨는 "그냥 다 가져다 써. 이름 안 써도 돼"라고 했어요. 그래서 애플, 구글 같은 큰 회사들도 눈치 안 보고 마음껏 쓸 수 있었어요.
"공짜니까 부실하지 않을까?" 싶겠지만 전혀 아니에요. SQLite 팀은 새로운 기능 하나를 넣으면, 그게 제대로 작동하는지 확인하는 시험을 수백 개씩 만들어요. 비행기에 들어가는 컴퓨터 프로그램만큼 엄격하게 검사받아요. 그래서 SQLite는 "세상에서 제일 꼼꼼하게 검사받은 공짜 프로그램"이라는 별명도 있어요.
그리고 힙 아저씨는 이런 꿈도 가지고 있어요. "2050년에도 지금 만든 파일이 열렸으면 좋겠다." 그래서 지금 만든 SQLite 파일은 몇십 년 뒤에도 문제없이 열려요. 마치 오래된 사진첩처럼요.
다만 여러 사람이 동시에 같은 서랍을 고치려고 하면 조금 헷갈려해요. 그래서 큰 학교 도서관처럼 사람이 아주 많이 몰리는 곳보다는, 내 방 서랍장처럼 한 사람이 쓰는 곳에서 제일 잘 어울려요.
문서 정보
최초 작성
최종 갱신
분류
기술
HANGUL.WIKI가 정리·작성한 문서입니다. 정확성을 위해 노력하나 오류가 있을 수 있으므로, 중요한 내용은 공식 출처를 통해 확인하시기 바랍니다.
내용의 오류나 정정 요청은 오류·정정 신고로 알려주시면 검토 후 반영합니다.