يضيف SQLite دعم WASM لاستخدام DBMS في متصفح الويب

يقوم مطورو SQLite بتطوير مشروع لتنفيذ القدرة على تجميع المكتبة في كود WebAssembly المتوسط، القادر على التشغيل في متصفح الويب ومناسب لتنظيم العمل مع قاعدة البيانات من تطبيقات الويب في JavaScript. تمت إضافة التعليمات البرمجية لدعم WebAssembly إلى مستودع المشروع الرئيسي. على عكس واجهة برمجة تطبيقات WebSQL التي تعتمد على SQLite، فإن WASM SQLite معزول تمامًا عن المتصفح ولا يؤثر على أمانه (قررت Google إيقاف دعم WebSQL في Chrome بعد إمكانية استغلال العديد من الثغرات الأمنية في SQLite من خلال WebSQL لمهاجمة المتصفح). .

الهدف من المشروع هو توفير إطار عمل JavaScript عامل مطابق لوظيفة SQLite API. يتم تزويد مطوري الويب بواجهة عالية المستوى موجهة للكائنات للعمل مع البيانات بأسلوب sql.js أو Node.js، وربط عبر واجهة برمجة تطبيقات C منخفضة المستوى وواجهة برمجة تطبيقات تعتمد على آلية Web Worker، مما يسمح يمكنك إنشاء معالجات غير متزامنة يتم تنفيذها في سلاسل رسائل منفصلة. لإخفاء تعقيدات تنظيم العمل باستخدام التدفقات الموجودة أعلى واجهة برمجة التطبيقات المستندة إلى Web Worker، يتم أيضًا تطوير إصدار من واجهة البرنامج استنادًا إلى آلية Promise.

يمكن ترجمة البيانات التي تخزنها تطبيقات الويب في إصدار WASM من SQLite خلال الجلسة الحالية (يتم فقدها بعد إعادة تحميل الصفحة) أو تخزينها على جانب العميل (يتم حفظها بين الجلسات). للتخزين الدائم، تم إعداد الواجهات الخلفية لوضع البيانات في نظام الملفات المحلي باستخدام OPFS (Origin-Private FileSystem، وهو امتداد لواجهة برمجة التطبيقات للوصول إلى نظام الملفات، وهو متاح حاليًا فقط في المتصفحات المستندة إلى 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

إضافة تعليق