GN⁺: Sqlite3 WebAssembly
(sqlite.org)- sqlite3를 현대적인 WASM 지원 브라우저에서 사용할 수 있도록 함
- 초기 공개 베타는 버전 3.40에서 시작되었으며, 커뮤니티 피드백에 따라 3.41 릴리스에서 API 안정화 예정
실제 사용 사례
- SQLime, Evolu, SQLiteNext 등 다양한 프로젝트에서 사용 중
- 관련 프로젝트로는 Alon Zakai의 sql.js, Roy Hashimoto의 wa-sqlite, James Long의 absurd-js 등이 있음
GN⁺의 정리
- sqlite3 WASM 및 JavaScript API는 웹 브라우저에서 sqlite3 데이터베이스를 사용할 수 있게 해주는 중요한 프로젝트임
- 다양한 클라이언트 코드 레시피와 API 변경 사항을 제공하여 개발자에게 유용한 정보를 제공함
- 관련 프로젝트와의 비교를 통해 이 프로젝트의 독창성과 유용성을 이해할 수 있음
- 유사한 기능을 가진 프로젝트로는 sql.js, wa-sqlite 등이 추천됨
Hacker News 의견
-
SQLite를 브라우저 내 메모리에서 실행하고 Litestream과 Cloudflare Durable Objects의 트릭을 사용하여 WAL 로그를 서버로 스트리밍하는 아이디어가 흥미로움
- 서버 측 데이터를 사용하여 클라이언트 측 데이터베이스를 재구성할 수 있음
- WAL 모드는 기본 SQLite WASM 빌드에서 제외되어 있어 사용자 정의가 필요함
-
SQLite의 최근 릴리스는 3.46.1이지만, 페이지가 업데이트되지 않아 API 안정성에 대한 혼란이 있음
- SQLite 팀이 WASM 버전을 포함한 공식 npm 패키지를 제공하면 좋겠음
-
Pyodide의 SQLite-in-WASM 버전이 개인적으로 선호됨
- Pyodide는 Python 표준 라이브러리의 일부로 WASM SQLite를 무료로 제공함
- 현재 Pyodide의 SQLite 버전은 3.39.0이며, 버전 업데이트가 필요함
-
로컬 우선 환경에서 SQLite를 사용하는 것은 무겁게 느껴짐
- 브라우저의 기본 저장소 API(특히 IndexedDB)를 사용하는 것이 더 효율적임
- SQLite와 유사한 API를 제공하는 오픈 소스 솔루션이 필요함
-
Golang에서 ncruces의 wasm SQLite 패키지가 좋음
- OpenBSD와 같은 환경에서 잘 작동함
-
Rust 생태계에서 SQLite를 사용하려 했으나, 현재 지원하는 래퍼가 부족함
- emscripten wasm 코드를 wasm32-unknown-unknown과 호환시키는 것이 어려움
-
SQLite가 IndexedDB의 대체가 될 수 있는지 궁금함
- 데이터가 지속되는지, 파일 시스템 API나 IndexedDB/로컬 스토리지에 저장해야 하는지에 대한 질문이 있음
-
최소한의 SQLite WASM 의존성 크기는 약 1.3MB임
- 브라우저 내 앱에서는 다소 큰 크기지만, 다른 환경에서는 적절할 수 있음
-
WebSQL이 SQLite였다면 오프라인 우선 및 일반 앱 저장소 생태계가 더 나았을 것이라는 의견이 있음
- SQLite API를 브라우저가 지원하도록 명시하는 것이 좋겠음
-
WASM 빌드의 SQLite와 Chicory 런타임을 사용하여 순수 JVM 실행 SQLite 라이브러리를 생성함
- 실험적인 프로젝트로, JVM 생태계에 의존성 없는 SQLite 도구를 제공할 수 있음
-
SQLite를 exaequOS.com에 포함시킬 계획이 있음