Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ SQLite ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄ WebAssembly, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² web-Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΈ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΉ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠ ΠΈΠ· web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ JavaScript. ΠΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ WebAssembly Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ API WebSQL, Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π»Π΅ΠΆΠΈΡ SQLite, WASM SQLite ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ ΠΎΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ (Google ΡΠ΅ΡΠΈΠ» ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ WebSQL Π² Chrome ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² SQLite, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· WebSQL Π΄Π»Ρ Π°ΡΠ°ΠΊΠΈ Π½Π° Π±ΡΠ°ΡΠ·Π΅Ρ).
Π¦Π΅Π»ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ JavaScript-ΠΎΠ±Π²ΡΠ·ΠΊΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΠΉ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Ρ API SQLite. Web-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΡΠΈΠ»Π΅ sql.js ΠΈΠ»ΠΈ Node.js, ΠΎΠ±Π²ΡΠ·ΠΊΠ° Π½Π°Π΄ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ C API ΠΈ API Π½Π° Π±Π°Π·Π΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Web Worker, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ . ΠΠ»Ρ ΡΠΊΡΡΡΠΈΡ ΡΠΎΠ½ΠΊΠΎΡΡΠ΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΏΠΎΠ²Π΅ΡΡ API Π½Π° Π±Π°Π·Π΅ Web Worker ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Promise.
ΠΠ°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π² WASM-Π²Π΅ΡΡΠΈΠΈ SQLite, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ΅Π°Π½ΡΠ° (ΡΠ΅ΡΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡ) ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ). ΠΠ»Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π±ΡΠΊΠ΅Π½Π΄Ρ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π€Π‘ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ OPFS (Origin-Private FileSystem, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊ API File System Access, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΠΏΠΎΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ WebKit ΠΈ Chromium) ΠΈ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°Ρ Π½Π° Π±Π°Π·Π΅ API window.localStorage ΠΈ window.sessionStorage. Π ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ localStorage/sessionStorage Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΊΠ»ΡΡ/Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ OPFS ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°: ΡΠΈΠΌΡΠ»ΡΡΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π€Π‘ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ WASMFS ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ sqlite3_vfs, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ°Ρ ΡΠ»ΠΎΠΉ SQLite VFS Π½Π° Π±Π°Π·Π΅ OPFS.
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ SQLite Π² WASM-ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Emscripten (Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ext/wasm: «./configure —enable-all; make sqlite3.c; cd ext/wasm; make»). ΠΠ° Π²ΡΡ
ΠΎΠ΄Π΅ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ sqlite3.js ΠΈ sqlite3.wasm, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΠ²ΠΎΠΉ JavaScript-ΠΏΡΠΎΠ΅ΠΊΡ (ΠΏΡΠΈΠΌΠ΅Ρ HTML ΠΈ JavaScript).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru