تمت إضافة دعم SQLite WASM لاستخدام نظام إدارة قواعد البيانات في متصفح الويب

سكليتي

هو نظام إدارة قواعد بيانات علائقية متوافق مع ACID ، موجود في مكتبة صغيرة نسبيًا مكتوبة بلغة C

الكثير يقوم مطورو سكليتي بتطوير مشروع لتنفيذه القدرة على ترجمة المكتبة إلى ملف رمز WebAssembly الوسيط والتي يمكن تشغيلها في متصفح الويب وهي مناسبة لتنظيم العمل مع قاعدة البيانات من تطبيقات الويب بلغة JavaScript.

الهدف من المشروع هو توفير ارتباط JavaScript وظيفي هذا مطابق في وظائفه ل SQLite API. يتم تزويد مطوري الويب بواجهة عالية المستوى موجهة للكائنات للعمل مع البيانات بأسلوب SQL. وحدات التحكم التي تعمل على خيوط منفصلة.

لإخفاء تعقيدات الترابط عبر Web Worker-based API ، متغير من واجهة البرمجة على أساس الآلية وعد.

يمكن أن توجد البيانات التي تخزنها تطبيقات الويب في إصدار WASM من SQLite في الجلسة الحالية (تُفقد بعد إعادة تحميل الصفحة) أو تظل موجودة على جانب العميل (تستمر عبر الجلسات).

للتخزين الدائم ، تم إعداد الخلفيات الخلفية لوضع البيانات على نظام ملفات محلي باستخدام OPFS (Origin-Private FileSystem ، امتداد لواجهة برمجة تطبيقات الوصول إلى نظام الملفات ، والمتوفر حاليًا فقط في WebKit والمتصفحات المستندة إلى Chromium) والتخزين المحلي للمتصفح استنادًا إلى واجهات برمجة تطبيقات window.localStorage و window.sessionStorage.

عند استخدام localStorage / sessionStorage ، يتم تعيين البيانات إلى مخازن المفتاح / القيمة المناسبة ، بينما عند استخدام OPFS ، هناك خياران: محاكاة FS الظاهري باستخدام WASMFS ، وتنفيذ sqlite3_vfs المنفصل الذي يوفر طبقة VFS تعتمد على SQLite. في OPFS .

يتم استخدام مترجم Emscripten لبناء SQLite في تمثيل WASM. والنتيجة هي ملفات sqlite3.js و sqlite3.wasm التي يمكنك تضمينها في مشروع JavaScript (نموذج HTML و JavaScript).

من الأهداف المحددة من هذا المشروع مذكورة:

باستثناء ما هو مذكور في العناصر غير المستهدفة ، قم بتوفير غلاف مكتمل إلى حد ما لميزات sqlite3 C API ، إلى الحد الذي يسمح به تماثل ميزات WASM مع C. في الواقع ، قم بتوفير واجهات برمجة التطبيقات التالية على الأقل.

  • قم بربط واجهة برمجة تطبيقات sqlite3 منخفضة المستوى قريبة من المستوى الأصلي قدر الإمكان من حيث الاستخدام.
  • واجهة برمجة تطبيقات OO ذات مستوى أعلى ، مثل تطبيقات نمط sql.js و node.js.
  • واجهة برمجة تطبيقات تعتمد على العامل وتتواصل مع واجهات برمجة التطبيقات المذكورة أعلاه من خلال رسائل العامل. تم تصميم هذا ليتم استخدامه على مؤشر الترابط الرئيسي ، مع تثبيت واجهات برمجة التطبيقات ذات المستوى الأدنى على مؤشر ترابط عامل ، والتواصل معهم عبر رسائل العامل.
  • متغير مستند إلى Promise لـ Worker API يخفي تمامًا جوانب الاتصال بين مؤشرات الترابط للمستخدم.
  • قدر الإمكان ، دعم التخزين الدائم من جانب العميل باستخدام واجهات برمجة تطبيقات JS المتاحة. في وقت كتابة هذا التقرير ، يتضمن ذلك نظام الملفات الخاصة للمصدر (OPFS) والتخزين (المحدود جدًا) عبر windows.localStorage و .window.sessionStorage backends

أما بالنسبة لل أهداف غير محددة:

  • نظرًا لأن WASM هي تقنية تتمحور حول الويب و UTF-8 هو ملك الترميز في هذا المجال ، فلا توجد خطط حالية لدعم واجهات برمجة تطبيقات sqlite3 ذات الصلة بـ UTF16.
  • على الرغم من انتشار دعم أوقات تشغيل WASM خارج المستعرض ، إلا أن هذا المشروع يركز حاليًا (أواخر عام 2022) على أهداف المستعرض فقط. على الرغم من أن تفاصيل التنفيذ المتعلقة بالويب لها الأسبقية ، وأن مكونات JavaScript الخاصة بواجهة برمجة التطبيقات تركز بشكل خاص على عملاء المتصفح ، فإن وحدة WASM ذات المستوى الأدنى "يجب" أن تعمل في بيئات WASM بخلاف الويب.
  • التوافق مع المنصات القديمة أو المتخصصة. تم تصميم WASM لشبكة ويب حديثة ويتطلب منصات حديثة. وبالمثل ، ستتم إزالة خيارات مكتبة sqlite3 المهملة من واجهة WASM تمامًا.

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

أخيرًا إذا كنت كذلك مهتم بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.