Το 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.

Τα δεδομένα που αποθηκεύουν οι εφαρμογές Ιστού στην έκδοση WASM του SQLite μπορούν να τοπικοποιηθούν εντός της τρέχουσας συνεδρίας (χαμένα μετά από επαναφόρτωση σελίδας) ή να αποθηκευτούν στην πλευρά του πελάτη (αποθηκευμένα μεταξύ των περιόδων σύνδεσης). Για μόνιμη αποθήκευση, έχουν προετοιμαστεί backend για την τοποθέτηση δεδομένων στο τοπικό σύστημα αρχείων χρησιμοποιώντας το 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

Προσθέστε ένα σχόλιο