Προστέθηκε υποστήριξη SQLite WASM για χρήση του DBMS σε πρόγραμμα περιήγησης ιστού

SQLite

είναι ένα συμβατό με ACID σύστημα διαχείρισης σχεσιακής βάσης δεδομένων, που περιέχεται σε μια σχετικά μικρή βιβλιοθήκη γραμμένη σε C

Ο Οι προγραμματιστές του SQLite αναπτύσσουν ένα έργο για υλοποίηση τη δυνατότητα μεταγλώττισης της βιβλιοθήκης σε α ενδιάμεσος κώδικας WebAssembly το οποίο μπορεί να εκτελεστεί σε πρόγραμμα περιήγησης ιστού και είναι κατάλληλο για οργάνωση εργασιών με τη βάση δεδομένων από εφαρμογές web στη γλώσσα JavaScript.

Ο σκοπός του σχεδίου είναι η παροχή μιας λειτουργικής σύνδεσης JavaScript που είναι πανομοιότυπη σε λειτουργικότητα με το SQLite API. Στους προγραμματιστές ιστού παρέχεται μια αντικειμενοστραφή διεπαφή υψηλού επιπέδου για εργασία με δεδομένα σε στυλ sql.js ή Node.js, περιτυλίγοντας ένα C API χαμηλού επιπέδου και ένα API βασισμένο στον μηχανισμό Web Worker που επιτρέπει τη δημιουργία ασύγχρονων ελεγκτές που τρέχουν σε ξεχωριστά νήματα.

Για να αποκρύψετε την πολυπλοκότητα του threading μέσω του Web Worker-based API, Μια παραλλαγή του τη διεπαφή προγραμματισμού που βασίζεται στον μηχανισμό Υπόσχεση.

Τα δεδομένα που αποθηκεύουν οι εφαρμογές Ιστού στην έκδοση WASM του SQLite μπορούν να βρίσκονται εντός της τρέχουσας συνεδρίας (χάθηκαν μετά τη φόρτωση της σελίδας) ή να διατηρηθούν στην πλευρά του πελάτη (διατηρούνται σε όλες τις περιόδους σύνδεσης).

Για μόνιμη αποθήκευση, έχουν προετοιμαστεί backend για την τοποθέτηση δεδομένων σε ένα τοπικό σύστημα αρχείων χρησιμοποιώντας OPFS (Origin-Private FileSystem, επέκταση στο File System Access API, προς το παρόν διαθέσιμη μόνο σε προγράμματα περιήγησης που βασίζονται στο WebKit και στο Chromium) και τοπικό χώρο αποθήκευσης προγράμματος περιήγησης με βάση τα API window.localStorage και window.sessionStorage.

Όταν χρησιμοποιείτε localStorage/sessionStorage, τα δεδομένα αντιστοιχίζονται στους κατάλληλους χώρους αποθήκευσης κλειδιών/τιμών, ενώ όταν χρησιμοποιείτε OPFS, υπάρχουν δύο επιλογές: προσομοίωση ενός εικονικού FS χρησιμοποιώντας WASMFS και μια ξεχωριστή υλοποίηση sqlite3_vfs που προσφέρει ένα επίπεδο VFS που βασίζεται σε SQLite. στο OPFS .

Ο μεταγλωττιστής Emscripten χρησιμοποιείται για τη δημιουργία SQLite σε μια αναπαράσταση WASM. Το αποτέλεσμα είναι αρχεία sqlite3.js και sqlite3.wasm που μπορείτε να συμπεριλάβετε στο έργο JavaScript (δείγμα HTML και JavaScript).

των συγκεκριμένων στόχων του έργου αυτού αναφέρονται:

Εκτός από τις περιπτώσεις που σημειώνονται στους μη στόχους, παρέχετε ένα περισσότερο ή λιγότερο πλήρες περιτύλιγμα δυνατοτήτων για το API sqlite3 C, στον βαθμό που το επιτρέπει η ισοτιμία χαρακτηριστικών του WASM με το C. Στην πραγματικότητα, παρέχετε τουλάχιστον τα ακόλουθα API .

  • Συνδέστε ένα API χαμηλού επιπέδου sqlite3 που είναι όσο το δυνατόν πιο κοντά στο εγγενές από την άποψη της χρήσης.
  • Ένα API OO υψηλότερου επιπέδου, που μοιάζει περισσότερο με τις υλοποιήσεις στυλ sql.js και node.js.
  • Ένα API που βασίζεται σε εργαζόμενους που επικοινωνεί με τα παραπάνω API μέσω μηνυμάτων εργαζόμενου. Αυτό έχει σχεδιαστεί για να χρησιμοποιείται στο κύριο νήμα, με API χαμηλότερου επιπέδου εγκατεστημένα σε ένα νήμα εργαζόμενου και να επικοινωνεί μαζί τους μέσω μηνυμάτων εργαζομένου.
  • Μια παραλλαγή του Worker API που βασίζεται σε υποσχέσεις που αποκρύπτει πλήρως τις πτυχές επικοινωνίας μεταξύ νημάτων του χρήστη.
  • Στο μέτρο του δυνατού, υποστηρίξτε τη μόνιμη αποθήκευση από την πλευρά του πελάτη χρησιμοποιώντας διαθέσιμα JS API. Κατά τη στιγμή της σύνταξης αυτού του άρθρου, αυτό περιλαμβάνει Ιδιωτικό Σύστημα Αρχείων Πηγής (OPFS) και (πολύ περιορισμένο) χώρο αποθήκευσης μέσω των παραθύρων window.localStorage και .window.sessionStorage

Όσο για μη ειδικοί στόχοι:

  • Δεδομένου ότι το WASM είναι μια τεχνολογία με επίκεντρο τον ιστό και το UTF-8 είναι ο βασιλιάς των κωδικοποιήσεων σε αυτό το πεδίο, δεν υπάρχουν τρέχοντα σχέδια για την υποστήριξη sqlite3 API που σχετίζονται με το UTF16.
  • Ενώ η υποστήριξη για χρόνους εκτέλεσης WASM εκτός προγράμματος περιήγησης είναι ευρέως διαδεδομένη, αυτό το έργο επί του παρόντος (τέλη 2022) επικεντρώνεται μόνο στους στόχους του προγράμματος περιήγησης. Παρόλο που οι λεπτομέρειες υλοποίησης που σχετίζονται με τον ιστό έχουν προτεραιότητα και τα στοιχεία JavaScript του API εστιάζουν ειδικά σε προγράμματα-πελάτες προγράμματος περιήγησης, η μονάδα WASM χαμηλότερου επιπέδου «πρέπει» να λειτουργεί σε περιβάλλοντα WASM εκτός ιστού.
  • Συμβατότητα με παλιές ή εξειδικευμένες πλατφόρμες. Το WASM έχει σχεδιαστεί για έναν σύγχρονο ιστό και απαιτεί σύγχρονες πλατφόρμες. Ομοίως, οι καταργημένες επιλογές βιβλιοθήκης sqlite3 θα αφαιρεθούν εντελώς από τη διεπαφή WASM.

Ο κώδικας για την υποστήριξη WebAssembly έχει προστεθεί στο κύριο αποθετήριο του έργου. Σε αντίθεση με το WebSQL API, το οποίο βασίζεται στο SQLite, το WASM SQLite είναι εντελώς απομονωμένο από το πρόγραμμα περιήγησης και δεν επηρεάζει την ασφάλειά του (η Google αποφάσισε να σταματήσει την υποστήριξη για WebSQL στον Chrome μετά από αρκετές ευπάθειες στο SQLite που θα μπορούσαν να εκμεταλλευτούν μέσω WebSQL για να επιτεθούν στο Navigator ).

τελικά αν είσαι ενδιαφέρεται να μάθει περισσότερα για αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.