데이터 엔지니어들 사이에서 "PostgreSQL이나 MySQL이 있는데 굳이 SQLite냐"는 논쟁은 오래됐다. 그런데 2023년을 기점으로 분위기가 달라졌다. DuckDB가 Parquet 파일을 직접 쿼리하는 기능으로 주목받으면서, SQLite와 Parquet 조합이 작은 팀의 분석 파이프라인에서 진지하게 거론되기 시작한 것이다.
SQLite가 분석 워크플로에 적합한 이유
SQLite는 서버 없이 단일 파일 하나로 동작한다. 설치가 필요 없고, 파일을 복사하면 DB가 통째로 이동한다. 이 단순함 덕분에 개발 환경과 분석 환경 사이의 불일치가 사라진다. Python의 sqlite3 모듈은 표준 라이브러리에 포함돼 있어 의존성 지옥도 없다.
실제 벤치마크를 보면, 500만 행 미만의 집계 쿼리에서는 SQLite가 PostgreSQL보다 빠른 경우도 있다. 디스크 I/O 최적화가 잘 된 SSD 환경에서 단일 쓰레드 읽기 성능은 오히려 네트워크 오버헤드가 없는 SQLite가 유리하다. 물론 동시 쓰기가 많거나 수억 행을 다루는 OLAP 워크로드에서는 한계가 명확하다.
Parquet의 역할: 저장과 전송의 혁신
Parquet는 Apache Hadoop 에코시스템에서 나온 열 지향(columnar) 파일 포맷이다. 2013년 Cloudera와 Twitter가 공동 개발했으며, Apache 재단 최상위 프로젝트로 승격된 것은 2015년이다.
열 지향 포맷의 핵심 이점은 분석 쿼리에 있다. "전체 고객 중 서울 거주자의 평균 구매금액"을 구하려면 수십 개 컬럼 중 city와 amount 두 개만 읽으면 된다. 행 지향 포맷(CSV, 일반 테이블)은 모든 행의 전체 컬럼을 읽어야 하지만, Parquet는 필요한 컬럼만 골라 읽는다. 실제로 1억 행 테이블에서 컬럼 2개만 집계할 때 Parquet는 CSV 대비 디스크 읽기량이 10분의 1 이하로 줄어드는 사례가 보고된다.
게다가 Snappy, Zstd 같은 압축 알고리즘을 기본 지원한다. 100GB CSV 파일이 Parquet로 변환되면 10~20GB로 줄어드는 경우가 흔하다. 열별로 데이터 타입이 균일하기 때문에 압축률이 월등히 높다.
SQLite + Parquet 혼합 전략
두 기술을 조합하는 실용적 패턴은 이렇다: 운영 메타데이터나 소규모 참조 테이블은 SQLite에 두고, 대용량 이벤트 로그나 시계열 데이터는 Parquet 파일로 분리 보관한다. 분석 시에는 DuckDB나 Pandas가 두 소스를 함께 읽어 조인한다.
예를 들어 주식 데이터 분석 시스템을 구축한다면, 종목 메타데이터(종목코드, 업종, 상장일 등)는 SQLite에 수천 행으로 관리하고, 일별 시세 데이터 수천만 행은 연도별 Parquet 파티션으로 저장한다. 메타데이터 수정은 SQL로 즉시 가능하고, 대량 시세 조회는 Parquet의 컬럼 스캔으로 빠르게 처리한다.
실무 전환 시 주의점
Parquet는 스키마가 고정돼 있다. 컬럼을 추가하거나 타입을 바꾸려면 파일을 재작성해야 한다. SQLite는 ALTER TABLE ADD COLUMN으로 실시간 변경이 가능하지만, Parquet는 배치 단위로만 스키마 변경을 적용할 수 있다. 따라서 스키마가 자주 바뀌는 초기 설계 단계에는 SQLite가 적합하고, 구조가 안정된 이후 대용량 축적 데이터를 Parquet로 이관하는 순서가 현실적이다.
또한 Parquet는 갱신(UPDATE)이 없다. 불변(immutable) 파일이 기본 설계 철학이다. 특정 행을 수정하려면 파티션 전체를 재작성해야 한다. 이 제약 때문에 Parquet는 "한 번 쓰고 많이 읽는" 분석 데이터에 적합하고, 트랜잭션이 빈번한 운영 데이터에는 SQLite 또는 전통적 RDBMS가 맞다.
2024년 이후의 흐름
DuckDB 1.0이 2024년 6월 정식 출시되면서 "SQLite처럼 임베디드로 쓰면서 Parquet를 직접 쿼리"하는 조합이 급속히 확산됐다. DuckDB는 Pandas DataFrame, Parquet, SQLite 파일을 하나의 SQL 세션 안에서 동시에 다룰 수 있다. 로컬 분석 도구로는 Jupyter + DuckDB + Parquet 스택이 데이터 과학자들의 사실상 표준으로 자리잡아 가고 있다.
SQLite와 Parquet는 경쟁 관계가 아니다. 각자 잘하는 영역이 다르며, 이 두 도구를 적재적소에 배치하는 판단력이 곧 데이터 분석 효율화의 핵심이다.
SQLite와 Parquet — 데이터를 다루는 두 가지 무기
스마트폰 앱이 여러분의 메모를 저장할 때, 사실 그 데이터 대부분은 SQLite라는 작은 데이터베이스에 들어간다. 카카오톡 채팅 내역도, 안드로이드 연락처도 실제로는 SQLite 파일이다. 그런데 이 SQLite가 데이터 분석 도구로도 쓸 만하다는 걸 아는 사람은 많지 않다.
SQLite: 파일 하나가 데이터베이스 전체
일반적인 데이터베이스는 서버를 따로 켜놔야 한다. MySQL이나 PostgreSQL 같은 것들은 항상 백그라운드에서 실행 중이어야 데이터를 읽고 쓸 수 있다. 반면 SQLite는 파일 하나(예: data.db)가 데이터베이스 전체다. 그 파일을 USB에 넣어서 다른 컴퓨터에 꽂으면 그대로 쓸 수 있다.
학교 조별 과제로 설문 결과 300개를 분석한다고 해보자. 엑셀로 하면 복잡한 조건 필터링이 힘들고, 온라인 DB를 쓰자니 설치가 귀찮다. SQLite는 Python 코드 몇 줄이면 바로 시작할 수 있고, 결과 파일을 친구에게 공유하기도 쉽다.
Parquet: 대용량 데이터의 압축 보관함
Parquet는 데이터를 저장하는 파일 형식인데, 일반 CSV와 다르게 세로 방향으로 데이터를 저장한다. 무슨 뜻이냐면, 100개 컬럼이 있는 표에서 딱 2개 컬럼만 분석하고 싶을 때, CSV는 모든 줄의 100개 컬럼을 전부 읽어야 하지만 Parquet는 필요한 2개만 골라 읽는다.
1억 개 행 데이터를 분석할 때 이 차이는 엄청나다. 읽어야 할 데이터 양이 줄면 속도가 빨라지고 비용도 줄어든다. 거기다 자동 압축까지 해줘서 100MB짜리 CSV가 Parquet로 바뀌면 10~20MB까지 줄어드는 경우도 있다.
두 가지를 함께 쓰면?
SQLite는 자주 수정해야 하는 작은 데이터에, Parquet는 한 번 저장하고 많이 읽는 큰 데이터에 잘 맞는다. 실제 현업 데이터 분석가들은 이 둘을 함께 쓴다. 예를 들어 학교 전체 학생 명단은 SQLite에 두고, 3년치 출석 기록 수백만 건은 Parquet 파일로 관리하는 식이다.
2024년부터는 DuckDB라는 도구가 이 두 가지를 한꺼번에 다룰 수 있게 해주면서, 데이터 분석 입문자들도 복잡한 서버 없이 노트북 한 대로 꽤 큰 데이터를 다룰 수 있게 됐다.
데이터 분석이 멀게 느껴진다면, SQLite로 작게 시작해보는 게 가장 현실적인 첫걸음이다.
데이터를 잘 보관하는 두 가지 방법
도서관에 책이 100만 권 있다고 상상해봐. 책을 아무렇게나 쌓아두면 찾는 데 하루 종일 걸리겠지? 컴퓨터 안의 데이터도 마찬가지야. 잘 정리해두면 빠르게 찾고, 공간도 적게 쓸 수 있어. 오늘은 그걸 도와주는 두 가지 도구를 알아볼게.
SQLite: 스마트폰 안에도 들어가는 작은 데이터베이스
SQLite는 아주 작은 데이터베이스야. 파일 하나에 모든 정보가 들어 있어. 카카오톡이나 유튜브 앱도 사실 SQLite를 쓰고 있어. 네가 좋아요를 누른 영상 목록이 바로 그 파일에 저장돼.
서랍 하나에 물건을 종류별로 나눠 담는다고 생각해봐. SQLite는 그 서랍이야. 학생 이름, 점수, 출석 같은 정보를 칸칸이 나눠서 보관할 수 있어. 나중에 "수학 점수가 90점 이상인 학생 찾아줘" 하면 바로 찾아줘.
Parquet: 두꺼운 책을 얇게 압축하는 마법
Parquet는 데이터를 저장하는 특별한 방식이야. 보통 데이터를 저장하면 한 줄씩 저장되는데, Parquet는 같은 종류끼리 묶어서 저장해.
예를 들어볼게. 학교 100명의 이름, 키, 몸무게가 있어. 보통 방식은 "이름1·키1·몸무게1 / 이름2·키2·몸무게2" 순서야. Parquet는 "이름1·이름2·이름3... / 키1·키2·키3..." 이렇게 같은 종류끼리 모아. 키만 알고 싶을 때 이름이나 몸무게는 전혀 안 봐도 돼서 훨씬 빠르고 공간도 적게 써.
둘을 같이 쓰면 더 좋아
SQLite는 자주 바뀌는 정보에 좋고, Parquet는 한 번 저장하고 많이 찾아보는 큰 데이터에 좋아. 도서관에 비유하면, 자주 꺼내는 책은 사서 선생님 책상 서랍(SQLite)에, 오래된 자료는 창고에 잘 압축해서(Parquet) 보관하는 거야.
컴퓨터를 잘 다루는 어른들은 이 두 가지를 함께 써서 엄청 빠르고 적은 공간으로 데이터를 분석해. 나중에 데이터 과학자나 개발자가 되고 싶다면 이 두 단어를 기억해둬!
문서 정보
최초 작성
최종 갱신
분류
기술
HANGUL.WIKI가 정리·작성한 문서입니다. 정확성을 위해 노력하나 오류가 있을 수 있으므로, 중요한 내용은 공식 출처를 통해 확인하시기 바랍니다.
내용의 오류나 정정 요청은 오류·정정 신고로 알려주시면 검토 후 반영합니다.