TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 31 READS

파이썬에서 SQLite를 끝까지 쓰고 싶을 때, APSW라는 선택지

파이썬에서 SQLite를 끝까지 쓰고 싶을 때, APSW라는 선택지
SOURCE IMAGE · HACKER NEWS

파이썬으로 SQLite를 다뤄 본 사람이라면 대부분 표준 라이브러리에 들어 있는 sqlite3 모듈을 떠올린다. 별도 설치가 필요 없고, PostgreSQL이나 MySQL 드라이버와 비슷한 방식으로 쓸 수 있어 손에 익기 때문이다. 그런데 SQLite는 단순한 관계형 데이터베이스가 아니라 전문 검색, 가상 테이블, 가상 파일 시스템 같은 확장 기능을 품은 엔진이다. 이 기능들을 온전히 끌어다 쓰려 할 때 표준 모듈만으로는 벽에 부딪히는 경우가 생긴다. APSW(Another Python SQLite Wrapper)는 바로 그 지점을 겨냥한 또 하나의 래퍼다.

APSW가 표준 sqlite3와 다른 지점

APSW의 설계 철학은 이름만큼이나 단순하다. SQLite의 C API 전체와 파이썬의 C API를 그대로 이어 붙여, SQLite가 제공하는 기능을 가능한 한 그대로 노출하는 것이다. 개발사가 밝힌 바로는 전문 검색(full text search), 세션(session), 가상 테이블(virtual tables), 가상 파일 시스템(VFS), JSON, CArray까지 포함된다. 즉 SQLite 엔진이 할 수 있는 일을 파이썬 쪽에서 추상화로 깎아내지 않고 최대한 드러낸다는 뜻이다. 또한 SQLite와 파이썬 양쪽의 변화에 맞춰 지속적으로 최신 상태를 유지한다는 점을 강조한다.

이 차이는 프로젝트 문서에도 별도의 '차이점' 섹션으로 정리되어 있다. 주목할 만한 것은 개발사 스스로가 역할을 구분해 안내한다는 점이다. SQLite를 다른 데이터베이스 드라이버와 서로 바꿔 쓸 수 있는 형태로 다루고 싶다면 표준 sqlite3 모듈을 쓰라고 권한다. 반대로 SQLite를 기능 단위까지 깊이 활용하고 더 나은 개발 경험을 원한다면 APSW를 고려하라는 것이다. 한쪽이 다른 쪽을 대체한다기보다, 목적에 따라 갈라지는 선택지로 제시하는 셈이다.

왜 이 구분이 실무에서 중요한가

표준 sqlite3가 다른 드라이버와 호환되는 모양을 지향하는 이유는, 파이썬의 데이터베이스 접근이 DB-API 2.0이라는 공통 규격 위에서 움직이기 때문이다. 이 규격은 데이터베이스 종류가 바뀌어도 코드 구조를 비슷하게 유지하도록 돕는다. 하지만 공통 규격을 지키려면 특정 엔진에만 있는 기능은 가려지거나 우회적인 방식으로만 접근하게 된다. APSW가 '최대한 드러낸다'는 전략을 택한 것은 이 트레이드오프의 반대편에 서겠다는 선언에 가깝다. 이식성을 일부 포기하는 대신 SQLite 고유 역량을 직접 쥐여 주는 것이다.

동기(synchronous) 코드뿐 아니라 모든 비동기 프레임워크에서도 전체 기능을 쓸 수 있다고 밝힌 점도 눈여겨볼 만하다. 가상 테이블이나 VFS 같은 기능은 사용자 정의 데이터 소스를 SQLite 쿼리로 다루거나, 파일 입출력 계층을 교체하는 등 응용 범위가 넓다. 전문 검색이나 세션 같은 기능 역시 애플리케이션 내부에 가볍게 검색 엔진이나 변경 추적을 심고 싶을 때 쓰임새가 있다. 이런 작업을 표준 모듈로 구현하려면 상당한 우회가 필요하거나 애초에 불가능한 경우가 있다는 점을 떠올리면, APSW가 겨냥하는 수요층이 분명해진다.

실무 도입을 검토한다면 몇 가지 현실적 조건을 함께 봐야 한다. APSW는 CPython 3.10 이상을 지원하며, 배포는 PyPI와 GitHub를 통해 이뤄져 pip로 설치할 수 있다. 라이선스는 OSI가 승인한 오픈소스 라이선스 범위 안에 있어 상용·사내 프로젝트에 올리기 전 라이선스 리스크 판단도 어렵지 않다. 새 릴리스 소식은 파이썬 SQLite 토론 그룹과 PyPI의 RSS 피드로 전해지고, 버그는 GitHub 이슈로 추적·보고된다. 투어와 예제 코드가 공식 문서와 함께 제공되므로, 표준 모듈에 익숙한 개발자가 실제 차이를 가늠해 보기에도 부담이 적다.

정리하면 APSW는 '표준 sqlite3보다 낫다'는 식의 우열 경쟁 도구가 아니다. 호환성과 이식성이 중요한 일반적인 데이터 접근에는 여전히 표준 모듈이 합리적인 기본값이다. 다만 SQLite를 단순 저장소가 아니라 확장 가능한 엔진으로 보고 그 기능을 깊이 파고들어야 하는 상황, 예컨대 가상 테이블로 커스텀 데이터 소스를 노출하거나 내장 전문 검색을 붙이려는 경우라면 APSW가 표준 모듈로는 닿기 어려운 영역을 열어 준다. 자신의 프로젝트가 '다른 DB와 바꿔 쓸 수 있어야 하는가'와 'SQLite를 끝까지 써야 하는가' 중 어느 쪽에 가까운지를 먼저 판단하는 것이, 두 래퍼 사이에서 길을 가르는 가장 실용적인 기준이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/rogerbinns/apsw
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...