إيقاف لغة الاستعلامات البنيوية (SQL) على الويب وإزالتها

واجهة برمجة تطبيقات قاعدة بيانات لغة الاستعلامات البنيوية (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"

تم نهائيًا إيقاف لوحة مشاكل "أدوات مطوري البرامج في Chrome" التي تعرض تحذيرًا يشير إلى أنّ لغة الاستعلامات البنيوية (SQL) على الويب في سياقات غير آمنة.

  • [تم .] لم يعُد الوصول إلى لغة الاستعلامات البنيوية (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" هذه هي النتيجة:

يؤدي فحص قسم Web SQL (لغة الاستعلامات البنيوية) على الويب في Chrome DevTools إلى إظهار قاعدة بيانات تسمى mydatabase مع جدول يسمى "العواصف المطيرة" مع حالة العمود (نصي) ومستوى الخطورة (عدد صحيح) ويحتوي على إدخال واحد يحمل حالة حزينة وشدة ستة.

عدم توفّر الدعم المتعلّق بأداة التنفيذ

بصرف النظر عن شكل واجهة برمجة التطبيقات الغامضة (على الأقل من وجهة نظر اليوم)، Mozilla بها الكثير استفسارات حول SQL على الويب يتم إنشاؤها على SQLite:

"لا نعتقد أنّ [SQLite] هي الأساس الصحيح لواجهة برمجة التطبيقات التي يتم عرضها على المواقع الإلكترونية العامة. المحتوى، وليس على الأقل لأنّه لا تتوفّر معلومات موثوقة ومقبولة على نطاق واسع الذي يضع SQL فرعيًا بطريقة مفيدة. فضلاً عن ذلك، لا نرغب في إجراء تغييرات إلى SQLite للتأثير على الويب لاحقًا، ولا تفكر في استغلال المتصفحات الرئيسية والإصدارات (ومعايير الويب) إلى SQLite، أمر حكيم".

يمكنك القراءة عن مخاوف Mozilla في مشاركة المدونة السابقة "موزيلا فلاديمير فوككيفيتش". لمزيد من المعلومات، يمكنك الاطلاع على محاضر مجموعة عمل تطبيقات الويب W3C (وإذا كنت تريد حقًا الدخول في التفاصيل، فاقرأ سجلات IRC) و أرشيفات القوائم البريدية). بالإضافة إلى ذلك، مشاركة مدوّنة "نولان لوسون" نظرة عامة جيدة عما حدث.

ملاحظات

إذا كان لديك أي مخاوف بشأن خطوات الإيقاف التي تم توضيحها في هذه المقالة يمكنك إعلامنا بها على القائمة البريدية لمطوّري البرامج blink-dev. العضوية في هذه المجموعة مفتوحة للجميع، ويُسمح لأي شخص بالنشر.

شكر وتقدير

تمت مراجعة هذه المقالة بواسطة جو ميدلي و بن مورس جوشوا بيل