SQLiteにRust風エディション導入を提案
원제: SQLite should have (Rust-style) editions
왜 중요한가
SQLite는 수십억 기기에서 사용되는 핵심 인프라로, 기본 설정 개선 제안은 개발자 생산성과 데이터 안전성에 광범위한 영향을 미칠 수 있다.
2026년 7월 15일, 개발자 Mort가 SQLite의 기본 설정 문제를 지적하며 Rust 언어의 'edition' 시스템처럼 하위 호환성을 유지하면서 기본값을 개선하는 구조를 SQLite에도 도입해야 한다고 주장했다. 외래 키 제약 미적용, 잘못된 타입 허용 등 두 가지 주요 기본 설정 문제를 구체적인 코드 예시와 함께 제시했다.
Mort는 자신의 블로그에서 SQLite가 임베디드 프로젝트 및 로컬 데이터 스토리지의 업계 표준임을 인정하면서도 두 가지 심각한 기본 설정 문제를 지적했다.
첫 번째 문제는 외래 키 제약(Foreign Key Constraint)이 기본적으로 비활성화되어 있다는 점이다. 다른 RDBMS는 외래 키를 기본으로 강제하지만, SQLite는 `PRAGMA foreign_keys = ON;`을 명시적으로 실행하지 않으면 제약이 무시된다. 더 나쁜 것은 SQLite가 ROWID를 재사용하는 알고리즘을 가지고 있어, 삭제된 사용자의 ID를 새 사용자가 그대로 물려받는 상황이 발생할 수 있다는 점이다. 예시에서는 Bob이 삭제된 후 Alice가 같은 ID를 부여받아 Bob의 게시물을 '상속'하는 시나리오가 구체적으로 묘사되었다.
두 번째 문제는 컬럼에 잘못된 데이터 타입 저장이 허용된다는 점이다. SQLite는 NULL, INTEGER, REAL, TEXT, BLOB의 다섯 가지 타입을 지원하지만, INTEGER로 정의된 컬럼에도 다른 타입의 값을 저장할 수 있는 유연한(혹은 느슨한) 타입 시스템을 채택하고 있다.
Mort는 이러한 문제들을 해결하기 위해 Rust 프로그래밍 언어의 'edition' 시스템처럼, 기존 데이터베이스와의 하위 호환성을 깨지 않으면서 새로운 기본값을 적용할 수 있는 버전 기반의 'edition' 개념을 SQLite에 도입할 것을 제안했다.