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

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

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

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

  • [ हो गया.] Chromium 97 में, तीसरे पक्ष के कॉन्टेक्स्ट के लिए Web SQL को बंद कर दिया गया था और हटा दिया गया था ( 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 की खास बातों को ईको-फ़्रेंडली नहीं बनाया जा सकता. इससे इनोवेशन और नई सुविधाओं को सीमित किया जाता है. स्टैंडर्ड के आखिरी वर्शन में साफ़ तौर पर यह बताया गया है कि "उपयोगकर्ता एजेंट को Sqlite 3.6.19 के साथ काम करने वाली एसक्यूएल भाषा को लागू करना होगा".

SQLite को शुरुआत में नुकसान पहुंचाने वाले SQL स्टेटमेंट चलाने के लिए डिज़ाइन नहीं किया गया था. फिर भी, Web SQL लागू करने का मतलब है कि ब्राउज़र को ऐसा ही करना है. सुरक्षा और स्थिरता से जुड़ी समस्याओं को ठीक करने के लिए, 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-डेवलपर ईमेल पाने वाले लोगों की सूची में हमें बताएं. इस ग्रुप में शामिल होने के लिए अनुमति लेने की ज़रूरत नहीं है. साथ ही, इसमें कोई भी पोस्ट कर सकता है.

स्वीकार की गई

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