واجهة برمجة تطبيقات قاعدة بيانات لغة الاستعلامات البنيوية (SQL) على الويب، والتي تسمح لك لتخزين البيانات بطريقة منظمة على جهاز كمبيوتر المستخدم (داخليًا استنادًا إلى محرك قاعدة بيانات SQLite)، تم تم إطلاقها في نيسان (أبريل) 2009 أو تم التخلي عنه في تشرين الثاني (نوفمبر) 2010. على الرغم من تنفيذه في WebKit (الذي يدعم Safari) وظل نشطًا في فإن محرك Blink (الذي يشغل Chrome) وGecko (الذي يشغّل Firefox) أبدًا وتنفيذ هذه الميزة أزال WebKit هذا المحتوى في عام 2019.
اتحاد شبكة الويب العالمية (W3C)
التشجيع
أولئك الذين يحتاجون إلى قواعد بيانات ويب لاعتمادها
واجهة برمجة تطبيقات Web Storage
تقنيات مثل
localStorage
أو
sessionStorage
،
أو
IndexedDB.
تظهر هذه التقنيات نقاط قوتها عندما يتعلق الأمر بمتاجر المفاتيح/القيم
البيانات المنظَّمة، ولكن من المعترف بها أيضًا أن بها نقاط ضعف مثل عدم وجود
لغة استعلام قوية. يريد الأشخاص استخدام SQL على الويب لسبب ما.
خطوات إيقاف لغة الاستعلامات البنيوية (SQL) على الويب وإزالتها
- [تم .] تم إيقاف لغة الاستعلامات البنيوية (SQL) على الويب نهائيًا وتمت إزالتها لسياقات تابعة لجهات خارجية في Chromium 97 ( 4 كانون الثاني (يناير) 2022).
- [تم .] تم إيقاف إمكانية الوصول إلى لغة الاستعلامات البنيوية (SQL) على الويب في سياقات غير آمنة اعتبارًا من Chromium 105 ( 4 كانون الثاني (يناير) 2022) عندما تظهر رسالة تحذير تم عرضه في لوحة مشاكل "أدوات مطوري البرامج في Chrome"
- [تم .] لم يعُد الوصول إلى لغة الاستعلامات البنيوية (SQL) على الويب في السياقات غير الآمنة متاح اعتبارًا من Chromium 110 ( 4 كانون الثاني (يناير) 2022). إنّ تتوفر سياسة المؤسسة لمواصلة استخدام الميزة من Chromium 110 ( 4 كانون الثاني (يناير) 2022) إلى Chromium 123 ( 4 كانون الثاني (يناير) 2022).
- [تم .] تم إيقاف خيار الوصول إلى لغة الاستعلامات البنيوية (SQL) على الويب في جميع السياقات نهائيًا اعتبارًا من Chromium 115 ( 4 كانون الثاني (يناير) 2022) وتظهر رسالة تحذير في لوحة مشاكل "أدوات مطوري البرامج في Chrome"
- [تم الإيقاف النهائي مواصلة استخدام لغة الاستعلامات البنيوية (SQL) على الويب كانت متوفّرة من Chromium 117 ( 4 كانون الثاني (يناير) 2022) إلى Chromium 123 ( 4 كانون الثاني (يناير) 2022). لمزيد من المعلومات عن الفترات التجريبية للإيقاف النهائي، يُرجى الاطّلاع على بدء استخدام مراحل التجربة والتقييم .] حاسمة
- [تم .] لم يعُد الوصول إلى لغة الاستعلامات البنيوية (SQL) على الويب متاحًا في جميع السياقات من Chromium 119
الخطوة التالية
كما أشرنا في المقدمة،
واجهة برمجة تطبيقات Web Storage
تقنيات مثل
localStorage
أو
sessionStorage
,
أو
IndexedDB
معايير بديلة جيدة في كثير من الحالات، ولكن ليس في جميع الحالات.
أسباب ترك مساحة التخزين لمطوّري البرامج على الويب
مع ظهور Wasm، يمكن أن تأتي حلول SQL أو NoSQL إلى الويب. مثال واحد هي DuckDB-Wasm، وآخر absurd-sql. استنادًا إلى هذه الابتكارات نشعر أنّه بإمكان منتدى المطوّرين إنشاء مساحة تخزين جديدة حلول أسرع وأفضل من موردي المتصفحات.
ولا نخطّط لإزالة لغة الاستعلامات البنيوية (SQL) على الويب فقط. في الواقع، لقد استبدلناها شيء ما التي يحتفظ بها مجتمع البرامج المفتوحة المصدر، وتكون بمثابة حزمة يمكن تحديثها متى شئت، بدون الحاجة إلى تقديم الإصلاحات والميزات الجديدة مباشرةً في المتصفحات. هدفنا هو السماح للمطوّرين بتقديم قاعدة البيانات الخاصة بك على الويب.
بالإضافة إلى ذلك، نأمل أن يساعد هذا المثال في بناء منظومة متكاملة جديدة من قواعد البيانات مفتوحة المصدر والازدهار! إن إصدار مؤشرات الوصول إلى نظام الملفات الطريقة الأساسية الجديدة التي يمكن من خلالها بُنيت.
أسباب إيقاف لغة الاستعلامات البنيوية (SQL) على الويب نهائيًا
المخاوف المتعلقة بالاستدامة والأمان
لا يمكن تطبيق مواصفات لغة الاستعلامات البنيوية (SQL) على الويب بشكل مستدام، وهو ما يحد من والابتكار والميزات الجديدة. أما الإصدار الأخير من المعيار المتضمن حرفيًا الحالات "يجب على برامج وكيل المستخدم تنفيذ لغة SQL التي يدعمها Sqlite 3.6.19".
لم تكن SQLite في البداية لتشغيل عبارات SQL الضارة، ولكن تنفيذ SQL على الويب يعني يجب أن تفعل المتصفحات هذا بالضبط. تعد الحاجة إلى مواكبة الأمان تتطلب إصلاحات الاستقرار تحديث SQLite في Chromium. يأتي ذلك بشكلٍ مباشر مع متطلبات لغة الاستعلامات البنيوية (SQL) على الويب التي ينبغي أن تتصرف تمامًا مثل SQLite 3.6.19.
شكل واجهة برمجة التطبيقات
لغة SQL على الويب هي أيضًا واجهة برمجة تطبيقات تعرض عمرها. وكونك طفلاً في أواخر العقد الأول من القرن الحادي والعشرين، فهو مثال رائع على "جحيم الاتصال"، كعينة التعليمة البرمجية التالية (مقدمة من "نولان لوسون") ما يوضحه. كما ترى، يمكن أن تتضمن عبارات SQL (باستخدام SQLite) يتم تمريرها كسلاسل إلى طرق قاعدة البيانات.
openDatabase(
// Name
'mydatabase',
// Version
1,
// Display name
'mydatabase',
// Estimated size
5000000,
// Creation callback
function (db) {
db.transaction(
// Transaction callback
function (tx) {
// Execute SQL statement
tx.executeSql(
// SQL statement
'create table rainstorms (mood text, severity int)',
// Arguments
[],
// Success callback
function () {
// Execute SQL statement
tx.executeSql(
// SQL statement
'insert into rainstorms values (?, ?)',
// Arguments
['somber', 6],
// Success callback
function () {
// Execute SQL statement
tx.executeSql(
// SQL statement
'select * from rainstorms where mood = ?',
// Arguments
['somber'],
// Success callback
function (tx, res) {
// Do something with the result
var row = res.rows.item(0);
console.log(
'rainstorm severity: ' +
row.severity +
', my mood: ' +
row.mood,
);
},
);
},
);
},
);
},
// Error callback
function (err) {
console.log('Transaction failed!: ' + err);
},
// Success callback);
function () {
console.log('Transaction succeeded!');
},
);
},
);
إذا كنت ستقوم بتشغيل هذه التعليمة البرمجية فحص الجدول الذي تم إنشاؤه باستخدام "أدوات مطوري البرامج في Chrome" هذه هي النتيجة:
عدم توفّر الدعم المتعلّق بأداة التنفيذ
بصرف النظر عن شكل واجهة برمجة التطبيقات الغامضة (على الأقل من وجهة نظر اليوم)، Mozilla بها الكثير استفسارات حول SQL على الويب يتم إنشاؤها على SQLite:
"لا نعتقد أنّ [SQLite] هي الأساس الصحيح لواجهة برمجة التطبيقات التي يتم عرضها على المواقع الإلكترونية العامة. المحتوى، وليس على الأقل لأنّه لا تتوفّر معلومات موثوقة ومقبولة على نطاق واسع الذي يضع SQL فرعيًا بطريقة مفيدة. فضلاً عن ذلك، لا نرغب في إجراء تغييرات إلى SQLite للتأثير على الويب لاحقًا، ولا تفكر في استغلال المتصفحات الرئيسية والإصدارات (ومعايير الويب) إلى SQLite، أمر حكيم".
يمكنك القراءة عن مخاوف Mozilla في مشاركة المدونة السابقة "موزيلا فلاديمير فوككيفيتش". لمزيد من المعلومات، يمكنك الاطلاع على محاضر مجموعة عمل تطبيقات الويب W3C (وإذا كنت تريد حقًا الدخول في التفاصيل، فاقرأ سجلات IRC) و أرشيفات القوائم البريدية). بالإضافة إلى ذلك، مشاركة مدوّنة "نولان لوسون" نظرة عامة جيدة عما حدث.
ملاحظات
إذا كان لديك أي مخاوف بشأن خطوات الإيقاف التي تم توضيحها في هذه المقالة يمكنك إعلامنا بها على القائمة البريدية لمطوّري البرامج blink-dev. العضوية في هذه المجموعة مفتوحة للجميع، ويُسمح لأي شخص بالنشر.
روابط ذات صلة
- إدخال حالة Chrome: إيقاف WebSQL نهائيًا وإزالتها في سياقات تابعة لجهات خارجية
- إدخال حالة Chrome: إيقاف WebSQL نهائيًا وإزالتها في السياقات غير الآمنة
- نية الإيقاف النهائي والإزالة: WebSQL في سياقات الجهات الخارجية
- نية الإيقاف النهائي والإزالة: WebSQL في سياقات غير آمنة
- مشكلة Chromium: إيقاف WebSQL نهائيًا وإزالتها في سياقات تابعة لجهات خارجية
- مشكلة Chromium: إيقاف WebSQL نهائيًا وإزالتها في السياقات غير الآمنة
- مشكلة Chromium: إيقاف WebSQL نهائيًا وإزالتها (Window#openDatabase)
- SQLite Wasm في المتصفّح المدعوم بنظام الملفات الخاصة Origin