SQLite เพิ่มการรองรับ WASM สำหรับการใช้ DBMS ในเว็บเบราว์เซอร์

นักพัฒนา SQLite กำลังพัฒนาโครงการเพื่อใช้ความสามารถในการคอมไพล์ไลบรารีเป็นโค้ดระดับกลางของ WebAssembly สามารถเรียกใช้ในเว็บเบราว์เซอร์ได้ และเหมาะสำหรับการจัดระเบียบงานกับฐานข้อมูลจากเว็บแอปพลิเคชันใน JavaScript เพิ่มโค้ดเพื่อรองรับ WebAssembly ในพื้นที่เก็บข้อมูลโปรเจ็กต์หลักแล้ว ต่างจาก WebSQL API ซึ่งใช้ SQLite ตรงที่ WASM SQLite ถูกแยกออกจากเบราว์เซอร์โดยสิ้นเชิง และไม่ส่งผลกระทบต่อความปลอดภัย (Google ตัดสินใจเลิกรองรับ WebSQL ใน Chrome หลังจากช่องโหว่หลายประการใน SQLite อาจถูกโจมตีผ่าน WebSQL เพื่อโจมตีเบราว์เซอร์) .

เป้าหมายของโครงการคือการจัดเตรียมเฟรมเวิร์ก JavaScript ที่ใช้งานได้ซึ่งมีฟังก์ชันการทำงานเหมือนกันกับ SQLite API นักพัฒนาเว็บได้รับอินเทอร์เฟซเชิงวัตถุระดับสูงสำหรับการทำงานกับข้อมูลในรูปแบบของ sql.js หรือ Node.js การเชื่อมโยงกับ C API ระดับต่ำและ API ที่ใช้กลไก Web Worker ซึ่งอนุญาต คุณสร้างตัวจัดการแบบอะซิงโครนัสที่ดำเนินการในเธรดที่แยกจากกัน เพื่อซ่อนความซับซ้อนของการจัดระเบียบงานด้วยสตรีมที่อยู่ด้านบนของ API ที่ใช้ Web Worker เวอร์ชันของอินเทอร์เฟซโปรแกรมที่อิงตามกลไก Promise ก็กำลังได้รับการพัฒนาเช่นกัน

ข้อมูลที่แอปพลิเคชันเว็บจัดเก็บไว้ใน SQLite เวอร์ชัน WASM สามารถแปลเป็นภาษาท้องถิ่นภายในเซสชันปัจจุบัน (หายไปหลังจากโหลดหน้าซ้ำ) หรือจัดเก็บไว้ในฝั่งไคลเอ็นต์ (บันทึกระหว่างเซสชัน) สำหรับการจัดเก็บข้อมูลถาวร แบ็กเอนด์ได้ถูกจัดเตรียมไว้สำหรับการวางข้อมูลในระบบไฟล์ในเครื่องโดยใช้ OPFS (Origin-Private FileSystem ซึ่งเป็นส่วนขยายของ File System Access API ซึ่งปัจจุบันใช้งานได้เฉพาะในเบราว์เซอร์ที่ใช้ WebKit และ Chromium) และในที่เก็บข้อมูลของเบราว์เซอร์ในเครื่องเท่านั้น บน window.localStorage API และ window.sessionStorage เมื่อใช้ localStorage/sessionStorage ข้อมูลจะแสดงในร้านค้าที่เกี่ยวข้องในรูปแบบคีย์/ค่า และเมื่อใช้ OPFS มีสองตัวเลือก: การจำลอง FS เสมือนโดยใช้ 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

เพิ่มความคิดเห็น