वेब ब्राउज़र में DBMS का उपयोग करने के लिए जोड़ा गया SQLite WASM समर्थन

SQLite

एक एसीआईडी-संगत संबंधपरक डेटाबेस प्रबंधन प्रणाली है, जो सी . में लिखी गई अपेक्षाकृत छोटी लाइब्रेरी में निहित है

L SQLite डेवलपर्स लागू करने के लिए एक प्रोजेक्ट विकसित कर रहे हैं पुस्तकालय को एक में संकलित करने की क्षमता इंटरमीडिएट वेबअसेंबली कोड जो एक वेब ब्राउज़र में चलाया जा सकता है और जावास्क्रिप्ट भाषा में वेब अनुप्रयोगों से डेटाबेस के साथ काम को व्यवस्थित करने के लिए उपयुक्त है।

लक्ष्य परियोजना का एक कार्यात्मक जावास्क्रिप्ट लिंक प्रदान करना है जो SQLite API की कार्यक्षमता में समान है। वेब डेवलपर्स को sql.js या Node.js की शैली में डेटा के साथ काम करने के लिए एक उच्च-स्तरीय ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस प्रदान किया जाता है, जो निम्न-स्तरीय C API और वेब वर्कर तंत्र पर आधारित API को लपेटता है जो एसिंक्रोनस बनाने की अनुमति देता है नियंत्रक। जो अलग-अलग धागे पर चलते हैं।

वेब वर्कर-आधारित एपीआई पर थ्रेडिंग की जटिलताओं को छिपाने के लिए, का एक प्रकार तंत्र पर आधारित प्रोग्रामिंग इंटरफ़ेस वादा।

SQLite के WASM संस्करण में वेब एप्लिकेशन स्टोर करने वाला डेटा वर्तमान सत्र (पेज रीलोड के बाद खो गया) के भीतर स्थित हो सकता है या क्लाइंट साइड पर बना रहता है (सत्रों में बना रहता है)।

स्थायी भंडारण के लिए, स्थानीय फाइल सिस्टम पर डेटा डालने के लिए बैकएंड तैयार किए गए हैं OPFS (Origin-Private FileSystem, File System Access API का एक्सटेंशन, वर्तमान में केवल WebKit और क्रोमियम-आधारित ब्राउज़र में उपलब्ध) और window.localStorage और window.sessionStorage API पर आधारित ब्राउज़र लोकल स्टोरेज का उपयोग करना।

लोकलस्टोरेज/सेशनस्टोरेज का उपयोग करते समय, डेटा को उपयुक्त कुंजी/मूल्य स्टोर में मैप किया जाता है, जबकि ओपीएफएस का उपयोग करते समय, दो विकल्प होते हैं: डब्ल्यूएएसएमएफएस का उपयोग करके वर्चुअल एफएस का अनुकरण करना, और एक अलग sqlite3_vfs कार्यान्वयन जो ओपीएफएस में एक SQLite आधारित वीएफएस परत प्रदान करता है। .

WASM प्रतिनिधित्व में SQLite बनाने के लिए Emscripten कंपाइलर का उपयोग किया जाता है. परिणाम sqlite3.js और sqlite3.wasm फ़ाइलें हैं जिन्हें आप अपने JavaScript प्रोजेक्ट (HTML और JavaScript नमूना) में शामिल कर सकते हैं।

विशिष्ट उद्देश्यों के इस परियोजना का उल्लेख किया गया है:

गैर-लक्ष्यों में जहां उल्लेख किया गया है, उसे छोड़कर, sqlite3 C API के लिए सुविधाओं का एक कम या अधिक पूर्ण आवरण प्रदान करें, उस सीमा तक जहां WASM की C के साथ सुविधा समता अनुमति देती है। वास्तव में, कम से कम निम्नलिखित API प्रदान करें।

  • एक निम्न स्तर के sqlite3 API को बाइंड करें जो उपयोग के मामले में जितना संभव हो सके मूल निवासी के करीब हो।
  • एक उच्च स्तरीय ओओ एपीआई, sql.js और node.js शैली कार्यान्वयन की तरह।
  • एक कार्यकर्ता-आधारित एपीआई जो कार्यकर्ता संदेशों के माध्यम से उपरोक्त एपीआई के साथ संचार करता है। यह मुख्य थ्रेड पर उपयोग करने के लिए डिज़ाइन किया गया है, जिसमें निचले स्तर के एपीआई एक कार्यकर्ता धागे पर स्थापित होते हैं, और कार्यकर्ता संदेशों के माध्यम से उनके साथ संवाद करते हैं।
  • वर्कर एपीआई का एक वादा-आधारित संस्करण जो उपयोगकर्ता के इंटर-थ्रेड संचार पहलुओं को पूरी तरह से छुपाता है।
  • जहाँ तक संभव हो, उपलब्ध JS API का उपयोग करके क्लाइंट-साइड परसिस्टेंट स्टोरेज को सपोर्ट करें। इस लेखन के समय, जिसमें विंडो के माध्यम से सोर्स प्राइवेट फाइल सिस्टम (OPFS) और (बहुत सीमित) स्टोरेज शामिल है। लोकलस्टोरेज और .window.sessionStorage बैकएंड

के लिए के रूप में गैर विशिष्ट उद्देश्य:

  • चूंकि WASM एक वेब-केंद्रित तकनीक है और UTF-8 उस क्षेत्र में एन्कोडिंग का राजा है, UTF3-संबंधित sqlite16 API का समर्थन करने के लिए कोई मौजूदा योजना नहीं है।
  • जबकि आउट-ऑफ़-ब्राउज़र WASM रनटाइम के लिए समर्थन व्यापक है, यह प्रोजेक्ट वर्तमान में (2022 के अंत में) केवल ब्राउज़र लक्ष्यों पर केंद्रित है। हालांकि वेब से संबंधित कार्यान्वयन विवरण को प्राथमिकता दी जाती है, और एपीआई के जावास्क्रिप्ट घटक विशेष रूप से ब्राउज़र क्लाइंट पर ध्यान केंद्रित करते हैं, निचले स्तर के WASM मॉड्यूल को गैर-वेब WASM वातावरण में "काम" करना चाहिए।
  • पुराने या आला प्लेटफार्मों के साथ संगतता। WASM एक आधुनिक वेब के लिए डिज़ाइन किया गया है और इसके लिए आधुनिक प्लेटफ़ॉर्म की आवश्यकता है। इसी तरह, पदावनत sqlite3 लाइब्रेरी विकल्प WASM इंटरफ़ेस से पूरी तरह से हटा दिए जाएंगे।

WebAssembly समर्थन के लिए कोड परियोजना के मुख्य भंडार में जोड़ा गया है। WebSQL API के विपरीत, जो SQLite पर आधारित है, WASM SQLite ब्राउज़र से पूरी तरह से अलग है और इसकी सुरक्षा को प्रभावित नहीं करता है (Google ने SQLite में कई कमजोरियों के बाद Chrome में WebSQL के लिए समर्थन छोड़ने का निर्णय लिया है जिसका उपयोग नेविगेटर पर हमला करने के लिए WebSQL के माध्यम से किया जा सकता है। )

अंत में अगर तुम हो इसके बारे में अधिक जानने में रुचि रखते हैं, आप विवरण की जांच कर सकते हैं निम्नलिखित लिंक में


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: एबी इंटरनेट नेटवर्क 2008 SL
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।