정보기술 ·
SQLite, C 언어 고수 이유 공개..."속도와 호환성이 핵심"
세계에서 가장 널리 사용되는 데이터베이스 엔진 SQLite가 25년간 C 언어를 고집해온 배경을 공식 홈페이지를 통해 밝혔다.
[한국정보기술신문] SQLite 개발팀이 2000년 첫 출시 이후 현재까지 C 언어로 구현을 유지해온 이유를 상세히 설명하는 문서를 공개했다. SQLite는 Android, iPhone을 비롯한 수십억 대의 기기에서 작동하는 세계에서 가장 널리 배포된 소프트웨어 라이브러리 중 하나다.
SQLite 개발팀은 C 언어 선택의 가장 큰 이유로 성능을 꼽았다. 집약적으로 사용되는 저수준 라이브러리인 SQLite는 빠른 속도가 필수적이며, C는 이식 가능한 어셈블리 언어로 불릴 정도로 하드웨어에 가까운 코딩이 가능하다고 설명했다. 실제로 SQLite는 일부 작업에서 파일시스템보다 35퍼센트 빠른 성능을 보이는 것으로 알려져 있다.
언어 간 호환성의 우위
C 언어의 또 다른 강점은 범용성이다. 거의 모든 시스템이 C로 작성된 라이브러리를 호출할 수 있는 능력을 갖추고 있다. 만약 SQLite가 Java로 작성됐다면 Android에서는 편리하게 사용할 수 있겠지만, Objective-C나 Swift를 사용하는 iPhone에서는 사용이 불가능했을 것이라고 개발팀은 지적했다.
C로 작성된 라이브러리는 막대한 런타임 의존성을 필요로 하지 않는다는 점도 중요한 장점으로 꼽혔다. 최소 구성에서 SQLite는 표준 C 라이브러리의 극소수 루틴만 필요로 한다. 반면 현대적 언어들은 종종 수천 개의 인터페이스가 포함된 수 메가바이트 규모의 런타임을 요구한다.
객체지향 언어 대신 C를 선택한 이유
일부 프로그래머들은 SQLite처럼 복잡한 시스템을 객체지향 언어 없이 개발하는 것을 상상하지 못한다. 이에 대해 개발팀은 C++ 또는 Java로 작성된 라이브러리는 일반적으로 같은 언어로 작성된 애플리케이션에서만 사용할 수 있다고 반박했다.
또한 객체지향은 디자인 패턴이지 프로그래밍 언어가 아니며, C를 포함한 어떤 언어에서도 객체지향 프로그래밍이 가능하다고 강조했다. 오히려 절차적 코드가 객체지향 코드보다 작성, 유지보수, 이해가 쉽고 빠른 경우도 많다는 입장이다.
Rust 전환 가능성은 열어둬
최근 관심을 받고 있는 안전한 프로그래밍 언어인 Rust나 Go에 대해서도 입장을 밝혔다. 이들 언어는 SQLite 개발 초기 10년간 존재하지 않았으며, 현재 전환할 경우 수정되는 버그보다 더 많은 버그가 발생할 가능성이 있다고 우려했다.
안전한 언어들은 배열 접근이 범위 내에 있는지 확인하기 위해 추가 분기를 삽입하는데, 올바른 코드에서는 이러한 분기가 실행되지 않아 100퍼센트 분기 테스트가 불가능하다는 점을 지적했다. 이는 SQLite의 품질 전략에서 중요한 요소다.
다만 개발팀은 향후 SQLite가 Rust로 재작성될 가능성을 완전히 배제하지는 않았다. Rust가 SQLite의 요구사항을 충족한다고 생각하는 Rust 개발자들은 SQLite 개발팀에 개인적으로 연락해 의견을 제시할 것을 환영한다는 입장을 밝혔다.
한국정보기술신문 정보기술분과 유상헌 기자 news@kitpa.org