웹 브라우저에서 DBMS를 사용하기 위해 SQLite WASM 지원 추가

SQLite는

C로 작성된 비교적 작은 라이브러리에 포함된 ACID 호환 관계형 데이터베이스 관리 시스템입니다.

SQLite 개발자는 구현할 프로젝트를 개발 중입니다. 라이브러리를 컴파일하는 기능 중간 WebAssembly 코드 웹 브라우저에서 실행할 수 있고 JavaScript 언어의 웹 애플리케이션에서 데이터베이스 작업을 구성하는 데 적합합니다.

목표 프로젝트의 기능적 JavaScript 링크를 제공하는 것입니다. SQLite API와 기능면에서 동일합니다. 웹 개발자는 sql.js 또는 Node.js 스타일의 데이터 작업을 위한 상위 수준 개체 지향 인터페이스를 제공하고 하위 수준 C API 및 비동기 생성을 허용하는 Web Worker 메커니즘 기반 API를 래핑합니다. 컨트롤러는 별도의 스레드에서 실행됩니다.

Web Worker 기반 API를 통한 스레딩의 복잡성을 숨기려면, 의 변형 메커니즘에 기반한 프로그래밍 인터페이스 약속.

웹 애플리케이션이 SQLite의 WASM 버전에 저장하는 데이터는 현재 세션 내에서 찾을 수 있거나(페이지 다시 로드 후 손실됨) 클라이언트 측에서 유지될 수 있습니다(세션 간에 지속됨).

영구 저장을 위해 백엔드가 로컬 파일 시스템에 데이터를 저장할 준비가 되었습니다. OPFS(Origin-Private FileSystem, File System Access API의 확장, 현재 WebKit 및 Chromium 기반 브라우저에서만 사용 가능) 및 window.localStorage 및 window.sessionStorage API를 기반으로 하는 브라우저 로컬 저장소를 사용합니다.

localStorage/sessionStorage를 사용할 때 데이터는 적절한 키/값 저장소에 매핑되는 반면 OPFS를 사용할 때는 WASMFS를 사용하여 가상 FS를 시뮬레이션하는 것과 SQLite 기반 VFS 계층을 제공하는 별도의 sqlite3_vfs 구현이라는 두 가지 옵션이 있습니다. .

Emscripten 컴파일러는 WASM 표현으로 SQLite를 빌드하는 데 사용됩니다.. 결과는 JavaScript 프로젝트(HTML 및 JavaScript 샘플)에 포함할 수 있는 sqlite3.js 및 sqlite3.wasm 파일입니다.

구체적인 목표의 이 프로젝트의 언급:

비 대상에 명시된 경우를 제외하고 C와 WASM의 기능 패리티가 허용하는 범위 내에서 sqlite3 C API에 대한 기능의 다소 완전한 래퍼를 제공하십시오. 실제로 최소한 다음 API를 제공하십시오.

  • 사용 면에서 최대한 네이티브에 가까운 저수준 sqlite3 API를 바인딩합니다.
  • 더 높은 수준의 OO API, sql.js 및 node.js 스타일 구현과 비슷합니다.
  • 작업자 메시지를 통해 위 API와 통신하는 작업자 기반 API입니다. 이것은 작업자 스레드에 설치된 하위 수준 API와 함께 기본 스레드에서 사용하도록 설계되었으며 작업자 메시지를 통해 그들과 통신합니다.
  • 사용자의 스레드 간 통신 측면을 완전히 숨기는 작업자 API의 약속 기반 변형입니다.
  • 가능한 범위 내에서 사용 가능한 JS API를 사용하여 클라이언트 측 영구 저장소를 지원합니다. 이 글을 쓰는 시점에는 OPFS(Source Private File System)와 window.localStorage 및 .window.sessionStorage 백엔드를 통한 (매우 제한된) 스토리지가 포함됩니다.

용으로 비특정 목표:

  • WASM은 웹 중심 기술이고 UTF-8은 해당 영역에서 인코딩의 왕이기 때문에 현재 UTF3 관련 sqlite16 API를 지원할 계획은 없습니다.
  • 브라우저 외부 WASM 런타임에 대한 지원이 광범위하지만 이 프로젝트는 현재(2022년 말) 브라우저 대상에만 초점을 맞추고 있습니다. 웹 관련 구현 세부 사항이 우선시되고 API의 JavaScript 구성 요소는 특히 브라우저 클라이언트에 중점을 두지만 하위 수준 WASM 모듈은 웹이 아닌 WASM 환경에서 "작동해야 합니다".
  • 이전 또는 틈새 플랫폼과의 호환성. WASM은 최신 웹용으로 설계되었으며 최신 플랫폼이 필요합니다. 마찬가지로 더 이상 사용되지 않는 sqlite3 라이브러리 옵션은 WASM 인터페이스에서 완전히 제거됩니다.

WebAssembly 지원을 위한 코드가 프로젝트의 메인 저장소에 추가되었습니다. SQLite를 기반으로 하는 WebSQL API와 달리 WASM SQLite는 브라우저와 완전히 분리되어 보안에 영향을 미치지 않습니다. ).

마침내 당신이 있다면 그것에 대해 더 알고 싶어, 당신은 세부 사항을 확인할 수 있습니다 다음 링크에서.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.