Web SQL Database API की मदद से, उपयोगकर्ता के कंप्यूटर पर स्ट्रक्चर्ड तरीके से डेटा स्टोर किया जा सकता है (अंदरूनी तौर पर, SQLite डेटाबेस इंजन के आधार पर), अप्रैल 2009 में लॉन्च किया गया और इसे नवंबर 2010 में छोड़ दिया गया. हालांकि, इसे WebKit (जिस पर Safari में काम करता है) लागू किया गया और Blink इंजन (जिस पर Chrome काम करता है) में चालू रहा, लेकिन Gecko (जिसके ज़रिए Firefox काम करता है) ने इस सुविधा को कभी लागू नहीं किया. WebKit ने इसे 2019 में हटा दिया.
वर्ल्ड वाइड वेब कंसोर्टियम (W3C) उन वेब डेटाबेस को localStorage
��र sessionStorage
या IndexedDB जैसी Web Storage API टेक्नोलॉजी को अपनाने के लिए बढ़ावा देता है.
जब कु��जी/वैल्यू स्टोर और स्ट्रक्चर्ड डेटा की बात आती है, तो ये टेक्नोलॉजी अपनी ताकत दिखाती हैं. हालांकि, इनमें कुछ खामियां भी होती हैं, जैसे कि क्वेरी वाली मज़बूत भाषा की कमी. लोग किसी वजह से वेब पर एसक्यूएल का इस्तेमाल करना चाहते हैं.
Web SQL के बंद होने और हटाने के तरीके
- [ हो गया.] Chromium 97 में, तीसरे पक्ष के कॉन्टेक्स्ट के लिए Web SQL को बंद कर दिया गया था और हटा दिया गया था ( 4 जनवरी, 2022).
- [ हो गया.] असुरक्षित कॉन्टेक्स्ट में Web SQL का ऐक्सेस, Chromium 105 ( 4 जनवरी, 2022) से बंद कर दिया गया था. उस समय, Chrome DevTools के समस्या पैनल में चेतावनी वाला मैसेज दिख रहा था.
- [ हो गया.] असुरक्षित कॉन्टेक्स्ट में Web SQL का ऐक्सेस, Chromium 110 ( 4 जनवरी, 2022 से उपलब्ध नहीं होगा). इस सुविधा का इस्तेमाल जारी रखने के लिए, एंटरप्राइज़ नीति Chromium 110 ( 4 जनवरी, 2022) से Chromium 123 तक उपलब्ध है ( 4 जनवरी, 2022).
- [ हो गया.] Chromium 115 ( 4 जनवरी, 2022) से सभी कॉन्टेक्स्ट में Web SQL का ऐक्सेस बंद कर दिया गया है. Chrome DevTools समस्या पैनल में चेतावनी वाला मैसेज दिखेगा.
- [बंद करने का ट्रायल उपलब्ध था. बंद करने के ट्रायल के बारे में ज़्यादा जानने के लिए, ऑरिजिन ट्रायल का इस्तेमाल शुरू करना लेख देखें. हो गया.] वेब एसक्यूएल का इस्तेमाल जारी रखने के लिए, Chromium 117 ( 4 जनवरी, 2022) से Chromium 123 ( 4 जनवरी, 2022) तक
- [ हो गया.] सभी कॉन्टेक्स्ट में वेब एसक्यूएल का ऐक्सेस, अब Chromium 119 से उपलब्ध नहीं है.
आगे क्या करें
जैसा कि शुरुआती जानकारी में बताया गया है, localStorage
और sessionStorage
या IndexedDB जैसी टेक्नोलॉजी, कई मामलों में बेहतर विकल्प हैं. हालांकि, अब तक सभी मामलों में ऐसा नहीं है.
वेब डेवलपर के लिए स्टोरेज छोड़ने की वजह
Wasm के आने के बाद, SQL या NoSQL टूल अब वेब पर उपलब्ध हो सकते हैं. इसका एक उदाहरण DuckDB-Wasm है और दूसरा absurd-sql है. इन ��तीजों के आधार पर, हमें लगता है कि डेवलपर कम्यूनिटी, ब्राउज़र वेंडर की तुलना में ज़्यादा तेज़ी से और बेहतर स्टोरेज की नई सुविधाएं बना सकती है.
हम सिर्फ़ वेब एसक्यूएल को हटाने के बारे में नहीं सोच रहे हैं. असल में, हमने इसकी जगह कुछ ऐसा किया है जिसे ओपन सोर्स समुदाय मैनेज करेगा. साथ ही, इसे एक ऐसे पैकेज के रूप में इस्तेमाल किया जाएगा जिसे अपनी मर्ज़ी से अपडेट किया जा सकता है और सीधे ब्राउज़र में नई सुविधाएं शुरू करने की ज़रूरत नहीं होगी. हमारा मकसद डेवलपर को यह सुविधा देना है कि वे वेब पर अपना डेटाबेस पेश कर सकें.
हमें उम्मीद है कि इस उदाहरण से, ओपन सोर्स डेटाबेस के एक नए नेटवर्क को आगे बढ़ने में मदद मिलेगी! फ़ाइल सिस्टम के ऐक्सेस हैंडल की रिलीज़ से आखिर में एक नया तरीका मिलता है, जिस पर कस्टम स्टोरेज समाधान बनाए जा सकते हैं.
वेब एसक्यूएल की सुविधा को बंद करने की वजहें
स्थिरता और सुरक्षा से जुड़ी चिंताएं
Web SQL की खास बातों को ईको-फ़्रेंडली नहीं बनाया जा सकता. इससे इनोवेशन और नई सुविधाओं को सीमित किया जाता है. स्टैंडर्ड के आखिरी वर्शन में बताया गया है "उपयोगकर्ता एजेंट को Sqlite 3.6.19 के साथ काम करने वाली एसक्यूएल भाषा लागू करनी होगी".
SQLite को शुरुआत में नुकसान पहुंचाने वाले SQL स्टेटमेंट चलाने के लिए डिज़ाइन नहीं किया गया था. फिर भी, Web SQL लागू करने का मतलब है कि ब्राउज़र को ऐसा ही करना है. सुरक्षा और स्थिरता से जुड़े सुधारों को आज़माकर, Chromium में SQLite को अपडेट करना आसान होता है. इस वजह से, Web 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 की ��दद से, बनाई गई टेबल की जांच करनी है, तो यह नतीजा मिला है:
इस टूल को लागू करने के लिए ज़रूरी सहायता की कमी है
आर्केन एपीआई के आकार (कम से कम आज के नज़रिए से) के अलावा, Mozilla के सामने कई समस्याएं थीं कि SQLite पर Web SQL बनाए जाने का काम चल रहा था:
"हमें नहीं लगता कि [SQLite] सामान्य वेब कॉन्टेंट दिखाने वाले एपीआई के लिए सही है. कम से कम, ऐसा कोई भरोसेमंद और बड़े पैमाने पर स्वीकार किया जाने वाला स्टैंडर्ड नहीं है जो एसक्यूएल को सही तरीके से सबसेट कर सके. साथ ही, हम नहीं चाहते कि SQLite में होने वाले बदलाव, बाद में वेब पर भी असर डालें. साथ ही, हमें लगता है कि SQLite के साथ, बड़े ब्राउज़र रिलीज़ (और वेब स्टैंडर्ड) का इस्तेमाल करना सही नहीं है."
Mozilla की समस्याओं के बारे में जानने के लिए, मोज़िलान व्लादिमीर वुकिचेविच की ब्लॉग पोस्ट पढ़ें. कुछ और इतिहास के लिए, W3C वेब ऐप्लिकेशन वर्किंग ग्रुप के मिनट देखें (और अगर आपको ज़्यादा जानकारी देखनी है, तो आईआरसी लॉग पढ़ें) और मेलिंग की सूची के संग्रह देखें). इसके अलावा, नोलन लॉसन की ब्लॉग पोस्ट इस बारे में अच्छी जानकारी देती है कि क्या हुआ था.
सुझाव/राय दें या शिकायत करें
अगर इस पोस्ट में, सुविधा बंद करने के चरणों को लेकर आपको कोई समस्या है, तो blink-डेवलपर ईमेल पाने वाले लोगों की सूची में हमें बताएं. इस समूह की सदस्यता सभी के लिए खुली है और कोई भी पोस्ट कर सकता है.
इसी विषय से जुड़े कुछ लिंक
- ChromeStatus एंट्री: तीसरे पक्ष के कॉन्टेक्स्ट में WebSQL का इस्तेमाल बंद करें और उसे हटाएं
- ChromeStatus एंट्री: गैर-सुरक्षित कॉन्टेक्स्ट में WebSQL का इस्तेमाल बंद करें और उसे हटाएं
- अब सेवा को बंद और हटाया जा सकता है: तीसरे पक्ष के कॉन्टेक्स्ट में WebSQL
- बंद करने और हटाने की इच्छा: गैर-सुरक्षित कॉन्टेक्स्ट में WebSQL
- Chromium से जुड़ी समस्या: तीसरे पक्ष के कॉन्टेक्स्ट में WebSQL का इस्तेमाल बंद करें और उसे हटाएं
- Chromium से जुड़ी समस्या: असुरक्षित कॉन्टेक्स्ट में WebSQL का इस्तेमाल बंद करें और उसे हटाएं
- Chromium से जुड़ी समस्या: WebSQL (Window#openDatabase) को रोकें और हटाएं
- ऑरिजिन प्राइवेट फ़ाइल सिस्टम के साथ काम करने वाले ब्राउज़र में SQLite Wasm
स्वीकार की गई
इस लेख की समीक्षा जो मेडली और बेन मॉर्स और जोशुआ बेल ने की है.