IndexedDB क्या है?
IndexedDB, ब्राउज़र में ज़्यादा मात्रा में स्ट्रक्चर्ड डेटा को स्टोर करने के लिए, एक बेहतर वेब स्टैंडर्ड है. साथ ही, इंडेक्स का इस्तेमाल करके इस डेटा पर बेहतर परफ़ॉर्मेंस वाली खोजें करने के लिए भी यह स्टैंडर्ड बेहतर है. दूसरे शब्दों में, IndexedDB एक ऑब्जेक्ट स्टोर है. यह रिलेशनल डेटाबेस से अलग है. रिलेशनल डेटाबेस में, कलेक्शन की पंक्तियों और कॉलम वाली टेबल होती हैं. यह एक अहम और बुनियादी अंतर है, जिससे आपके ऐप्लिकेशन को डिज़ाइन और बनाने के तरीके पर असर पड़ता है. बुनियादी कॉन्सेप्ट के बारे में ज़्यादा जानें.
तो नया क्या है?
मेरे दोस्त, हमने कुछ बदलाव किए हैं. अगर हम सिंटैक्स में बदलाव नहीं करते हैं, तो आपको कुछ गड़बड़ियां दिखेंगी.
Chrome के वर्शन 17 से, अगर IndexedDB ट्रांज़ैक्शन का दायरा किसी ऑब्जेक्ट स्टोर तक नहीं है, तो Chrome अब गड़बड़ी का मैसेज दिखाएगा. डेटा को सिर्फ़ लेन-देन के दौरान ही पढ़ा और लिखा जा सकता है. इसलिए, हमें डेटाबेस पर एक लेन-देन बनाना होगा. साथ ही, इसका दायरा (जैसे, आपको कौनसे ऑब्जेक्ट स्टोर ऐक्सेस करने हैं) और ऐक्सेस का टाइप (सिर्फ़ पढ़ने के लिए या लिखने के लिए) तय करना होगा.
कोड में इसका क्या मतलब है? अपने database.transaction फ़ंक्शन में खाली कलेक्शन पास करने के बजाय:
var transaction = db.transaction([], IDBTransaction.READ_ONLY);
आपको किसी खास ऑब्जेक्ट स्टोर या ऑब्जेक्ट स्टोर की सूची के दायरे में रहना चाहिए:
// all stores (equivalent to what use to be marked as empty array. )
var transaction = db.transaction(db.objectStoreNames, IDBTransaction.READ_ONLY);
// multiple stores:
var transaction = db.transaction(['ObjectStoreName1', 'ObjectStoreName2'],
IDBTransaction.READ_ONLY);
// single store - these are equivalent
var transaction = db.transaction(['ObjectStoreName'], IDBTransaction.READ_ONLY);
var transaction = db.transaction('ObjectStoreName', IDBTransaction.READ_ONLY);
ट्रांज़ैक्शन में सही दायरा और मोड का इस्तेमाल करके, डेटा को तेज़ी से ऐक्सेस किया जा सकता है. यहां कुछ सलाह दी गई हैं:
स्कोप तय करते समय, सिर्फ़ उन ऑब्जेक्ट स्टोर की जानकारी दें जिनकी आपको ज़रूरत है. इस तरह, एक साथ कई लेन-देन चलाए जा सकते हैं. हालांकि, इन लेन-देन के स्कोप एक-दूसरे से ओवरलैप नहीं होने चाहिए.
ज़रूरत पड़ने पर ही READ_WRITE
लेन-देन मोड तय करें. ओवरलैप होने वाले स्कोप के साथ, एक साथ कई READ_ONLY
लेन-देन चलाए जा सकते हैं. हालांकि, किसी ऑब्जेक्ट स्टोर के लिए सिर्फ़ एक READ_WRITE
लेन-देन किया जा सकता है.
अन्य सोर्स:
- chromium.org पर अपडेट
- MDN पर IndexedDB के बारे में ज़्यादा जानकारी
- टू-डू सूची वाले वेब ऐप्लिकेशन में indexedDB का इस्तेमाल करने का तरीका बताने वाला पूरा उदाहरण
इसलिए, अगली बार तक... आस-पास के इलाकों में वेब को आगे बढ़ाते रहें.