वेब एसक्यूएल को बंद करना और हटाना

वेब एसक्यूएल डेटाबेस एपीआई की मदद से, उपयोगकर्ता के कंप्यूटर पर डेटा को व्यवस्थित तरीके से सेव किया जा सकता है. यह एपीआई, SQLite डेटाबेस इंजन पर आधारित है. इसे अप्रैल 2009 में लॉन्च किया गया था और नवंबर 2010 में बंद कर दिया गया था. यह सुविधा, WebKit (Safari के लिए इस्तेमाल किया जाने वाला इंजन) में लागू की गई थी और Blink इंजन (Chrome के लिए इस्तेमाल किया जाने वाला इंजन) में चालू रही. हालांकि, Gecko (Firefox के लिए इस्तेमाल किया जाने वाला इंजन) में यह सुविधा कभी लागू नहीं की गई. साथ ही, WebKit ने इसे 2019 में हटा दिया था.

वर्ल्ड वाइड वेब कंसोर्टियम (W3C) उन लोगों को वेब स्टोरेज एपीआई की टेक्नोलॉजी अपनाने का सुझाव देता है जिन्हें वेब डेटाबेस की ज़रूरत है. इन टेक्नोलॉजी में, localStorage और sessionStorage जैसी टेक्नोलॉजी या IndexedDB शामिल हैं. ये टेक्नोलॉजी, की/वैल्यू स्टोर और स्ट्रक्चर्ड डेटा के मामले में अपनी ताकत दिखाती हैं. हालांकि, इनमें कुछ कमज़ोरियां भी हैं, जैसे कि बेहतर क्वेरी भाषा का न होना. लोग वेब पर SQL का इस्तेमाल इसलिए करना चाहते हैं, क्योंकि वेब पर SQL का इस्तेमाल करने के कई फ़ायदे हैं.

वेब एसक्यूएल की सुविधा बंद होने और उसे हटाने का तरीका

  • [ हो गया.] Web SQL को तीसरे पक्ष के कॉन्टेक्स्ट के लिए, Chromium 97 ( 4 जनवरी, 2022) में बंद कर दिया गया था और हटा दिया गया था.
  • [ हो गया.] असुरक्षित कॉन्टेक्स्ट में Web SQL का ऐक्सेस, Chromium 105 ( 4 जनवरी, 2022) से बंद कर दिया गया था. इस दौरान, Chrome DevTools के समस्या पैनल में एक चेतावनी वाला मैसेज दिखाया गया था.

Chrome DevTools के समस्याओं वाले पैनल में, असुरक्षित कॉन्टेक्स्ट में Web SQL के इस्तेमाल से जुड़ी चेतावनी नहीं दिखेगी.

  • [ हो गया.] असुरक्षित कॉन्टेक्स्ट में Web SQL का ऐक्सेस, Chromium 110 ( 4 जनवरी, 2022) के बाद उपलब्ध नहीं है. इस सुविधा का इस्तेमाल जारी रखने के लिए, एंटरप्राइज़ नीति Chromium 110 ( 4 जनवरी, 2022) से Chromium 123 ( 4 जनवरी, 2022) तक उपलब्ध है.
  • [ हो गया.] सभी संदर्भों में Web SQL का ऐक्सेस, Chromium 115 ( 4 जनवरी, 2022) से बंद कर दिया गया है. साथ ही, Chrome DevTools के समस्या पैनल में एक चेतावनी वाला मैसेज दिखाया जाता है.
  • [ हो गया.] वेब एसक्यूएल का इस्तेमाल जारी रखने के लिए, Chromium 117 ( 4 जनवरी, 2022) से Chromium 123 ( 4 जनवरी, 2022) तक, इस्तेमाल में कमी के ट्रायल की सुविधा उपलब्ध थी. बंद होने वाले वर्शन को आज़माने के बारे में ज़्यादा जानने के लिए, ऑरिजिन ट्रायल का इस्तेमाल शुरू करना लेख पढ़ें.
  • [ हो गया.] सभी कॉन्टेक्स्ट में Web SQL का ऐक्सेस, Chromium 119 से उपलब्ध नहीं है.

यहां से कहां जाएं

जैसा कि शुरुआत में बताया गया है, कई मामलों में Web Storage API की टेक्नोलॉजी, जैसे कि localStorage और sessionStorage या IndexedDB स्टैंडर्ड, अच्छे विकल्प हैं. हालांकि, ये सभी मामलों में अच्छे विकल्प नहीं हैं.

वेब डेवलपर को स्टोरेज देने की वजह

Wasm की मदद से, वेब पर SQL या NoSQL सलूशन उपलब्ध कराए जा सकते हैं. इसका एक उदाहरण DuckDB-Wasm है और दूसरा उदाहरण absurd-sql है. इन क्रिएशन के आधार पर, हमें लगता है कि डेवलपर कम्यूनिटी, ब्राउज़र वेंडर की तुलना में तेज़ी से और बेहतर तरीके से, स्टोरेज के नए समाधान बना सकती है.

हम सिर्फ़ Web SQL को हटाने वाले नहीं हैं. असल में, हमने इसे ऐसी चीज़ से बदल दिया है जिसे ओपन सोर्स कम्यूनिटी मैनेज करेगी. इसे पैकेज के तौर पर उपलब्ध कराया जाएगा, जिसे कभी भी अपडेट किया जा सकता है. इसके लिए, ब्राउज़र में सीधे तौर पर गड़बड़ियों को ठीक करने और नई सुविधाओं को जोड़ने की ज़रूरत नहीं होगी. हमारा मकसद, डेवलपर को वेब पर अपना डेटाबेस उपलब्ध कराना है.

इसके अलावा, हमें उम्मीद है कि इस उदाहरण से, ओपन सोर्स डेटाबेस के नए नेटवर्क को बेहतर बनाने में मदद मिलेगी! फ़ाइल सिस्टम ऐक्सेस हैंडल रिलीज़ होने के बाद, आखिरकार एक नया प्राइमिटिव उपलब्ध हो गया है. इस पर कस्टम स्टोरेज सलूशन बनाए जा सकते हैं.

Web SQL की सुविधा बंद करने की वजहें

पर्यावरण और सुरक्षा से जुड़ी समस्याएं

वेब SQL स्पेसिफ़िकेशन को लगातार लागू नहीं किया जा सकता. इससे, नयापन और नई सुविधाओं पर असर पड़ता है. स्टैंडर्ड के आखिरी वर्शन में साफ़ तौर पर यह बताया गया है कि "उपयोगकर्ता एजेंट को Sqlite 3.6.19 के साथ काम करने वाली एसक्यूएल भाषा को लागू करना होगा".

SQLite को शुरू में, नुकसान पहुंचाने वाले एसक्यूएल स्टेटमेंट चलाने के लिए डिज़ाइन नहीं किया गया था. हालांकि, वेब एसक्यूएल लागू करने का मतलब है कि ब्राउज़र को यही करना होगा. सुरक्षा और स्थिरता से जुड़ी समस्याओं को ठीक करने के लिए, Chromium में SQLite को अपडेट करना ज़रूरी है. यह सीधे तौर पर, वेब SQL की ज़रूरी शर्तों के उल्लंघन के तौर पर आता है, जो SQLite 3.6.19 की तरह काम करने के लिए कहती हैं.

एपीआई का शेप

Web SQL भी एक ऐसा एपीआई है जो अपनी उम्र दिखाता है. साल 2000 के आखिर में जन्मे लोगों के लिए, यह "कॉलबैक हेल" का एक बेहतरीन उदाहरण है. इसकी जानकारी, नीचे दिए गए कोड सैंपल (कॉपीराइट नोलन लॉसन) से मिलती है. जैसा कि आप देख सकते हैं, 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 DevTools की मदद से करने पर, यह नतीजा मिलता है:

Chrome DevTools में वेब SQL सेक्शन की जांच करने पर, mydatabase नाम का एक डेटाबेस दिखता है. इसमें rainstorms नाम की एक टेबल है. इस टेबल में मूड (टेक्स्ट) और गंभीरता (पूर्णांक) कॉलम हैं. इनमें से मूड कॉलम में एक एंट्री है, जिसकी गंभीरता छह है और मूड उदास है.

लागू करने वाले के लिए सहायता की कमी

कम से कम आज के हिसाब से, एपीआई के आकार के अलावा, Mozilla को SQLite पर आधारित वेब एसक्यूएल के बारे में कई चिंताएं थीं:

"हमें नहीं लगता कि [SQLite], सामान्य वेब कॉन्टेंट के लिए उपलब्ध एपीआई के लिए सही आधार है. ऐसा इसलिए है, क्योंकि कोई ऐसा भरोसेमंद और व्यापक तौर पर स्वीकार किया गया स्टैंडर्ड नहीं है जो SQL को काम के तरीके से सबसेट करता हो. इसके अलावा, हम नहीं चाहते कि SQLite में किए गए बदलावों का असर बाद में वेब पर पड़े. साथ ही, हमें नहीं लगता कि SQLite में ब्राउज़र की मुख्य रिलीज़ (और वेब स्टैंडर्ड) का इस्तेमाल करना सही है."

Mozilla के पूर्व कर्मचारी व्लादिमीर वुकीसेविच की ब्लॉग पोस्ट में, Mozilla की समस्याओं के बारे में पढ़ा जा सकता है. ज़्यादा जानकारी के लिए, W3C वेब ऐप्लिकेशन वर्किंग ग्रुप के मिनट देखें. अगर आपको ज़्यादा जानकारी चाहिए, तो आईआरसी लॉग और मेलिंग सूची के संग्रह पढ़ें. इसके अलावा, नोलन लॉसन की ब्लॉग पोस्ट में इस बारे में पूरी जानकारी दी गई है.

सुझाव/राय दें या शिकायत करें

अगर आपको इस पोस्ट में बताए गए, बंद किए जाने के तरीके के बारे में कोई समस्या है, तो हमें blink-dev मेलिंग सूची पर बताएं. इस ग्रुप में शामिल होने के लिए अनुमति लेने की ज़रूरत नहीं है. साथ ही, इसमें कोई भी पोस्ट कर सकता है.

आभार

इस लेख की समीक्षा जो मेडली और बेन मॉर्स और जोशुआ बेल ने की है.