2011-05-07 16 views
60
  1. दोनों अनुक्रमित डीबी और स्थानीय भंडारण महत्वपूर्ण मूल्य स्टोर हैं। दो कुंजी/मूल्य स्टोर होने का लाभ क्या है?
  2. अनुक्रमणित डीबी असीमित है, लेकिन इसमें शामिल है (सबसे अधिक समय लेने वाली चीज़) मैनुअल हैं। वे उसी थ्रेड में भागते दिखाई देते हैं क्योंकि एसिंक कॉल बनाए गए थे। यह यूआई को कैसे अवरुद्ध नहीं करेगा?
  3. अनुक्रमणित डीबी एक बड़ी दुकान की अनुमति देता है। एचटीएमएल 5 स्टोर का आकार क्यों बढ़ाएं?
  4. मैं अपने सिर को खरोंच कर रहा हूं। अनुक्रमित डीबी का बिंदु क्या है?

उत्तर

84

इंडेक्सड डीबी एक महत्वपूर्ण मूल्य स्टोर नहीं है जिस तरह स्थानीय संग्रहण है। स्थानीय संग्रहण सिर्फ तार संग्रहीत करता है, तो JSON.stringify को स्थानीय भंडारण में एक वस्तु सामान्य दृष्टिकोण है डाल करने के लिए यह:

myObject = {a: 1, b: 2, c: 3}; 
localStorage.setItem("uniq", JSON.stringify(myObject)); 

यह कुंजी uniq के साथ वस्तु को खोजने के लिए ठीक है, लेकिन एक ही रास्ता myObject के गुण प्राप्त करने के वापस स्थानीय भंडारण से बाहर वस्तु JSON.parse और यह जांच करने के लिए है:

var myStorageObject = JSON.parse(localStorage.getItem("uniq")); 
window.alert(myStorageObject.b); 

यह अगर आप केवल स्थानीय भंडारण में, एक या कुछ वस्तुओं है ठीक है। लेकिन कल्पना करें कि आपके पास एक हजार वस्तुएं हैं, जिनमें से सभी संपत्ति b है, और आप उन लोगों के साथ कुछ करना चाहते हैं जहां b==2। स्थानीय भंडारण के साथ आपको पूरे स्टोर के माध्यम से लूप करना होगा और प्रत्येक आइटम पर b देखें, जो बहुत बर्बाद प्रसंस्करण है।

इंडेक्सड डीबी के साथ आप stuff other than strings in the value स्टोर कर सकते हैं: "इसमें सरल प्रकार जैसे डोमस्ट्रिंग और डेट के साथ-साथ ऑब्जेक्ट और ऐरे इंस्टेंस भी शामिल हैं।" इतना ही नहीं, लेकिन आप मूल्य में संग्रहीत वस्तुओं के गुणों पर create indexes कर सकते हैं। तो इंडेक्सड डीबी के साथ आप उस हज़ार ऑब्जेक्ट्स को इसमें डाल सकते हैं लेकिन b प्रॉपर्टी पर एक इंडेक्स बना सकते हैं और उस ऑब्जेक्ट को पुनर्प्राप्त करने के लिए उपयोग कर सकते हैं जहां b==2 स्टोर में हर ऑब्जेक्ट स्कैन करने के ओवरहेड के बिना।

कम से कम यह विचार है। इंडेक्सड डीबी एपीआई बहुत सहज नहीं है।

वे उसी थ्रेड में भागते हैं जैसे एसिंक कॉल किए गए थे। यह यूआई को कैसे अवरुद्ध नहीं करेगा?

अतुल्यकालिक रूप में मल्टी-थ्रेडेड, JavaScript, as a rule, is not multi-threaded एक ही बात नहीं है। यदि आप UI को अवरुद्ध करना चाहते हैं तो JS में कोई भी भारी प्रसंस्करण UI को अवरुद्ध कर देगा, यदि आप Web Workers को आजमाएं।

अनुक्रमणित डीबी एक बड़ी दुकान की अनुमति देता है। एचटीएमएल 5 स्टोर के आकार में वृद्धि क्यों नहीं करें?

क्योंकि, उचित अनुक्रमण के बिना, यह जितना बड़ा हो जाएगा उतना धीमा हो जाएगा।

+2

तुम भी कर सकते हैं निम्नलिखित [प्रश्न] के उत्तर देखें (http: // stackoverflow।कॉम/प्रश्न/14314065/वे-कुकी-रीड-राइट-एटॉमिक-इन-ब्राउजर) स्थानीय संग्रहण करते समय इंडेक्सडडीबी लेनदेन का समर्थन करता है। ट्रांजैक्शन समर्थन नहीं होने पर क्रोम और ओपेरा जैसे ब्राउज़र में स्थानीय स्टोरेज में मल्टी-टैब/विंडो एक्सेस के साथ समस्या हो सकती है जो प्रति टैब एक अलग प्रक्रिया/थ्रेड का उपयोग करती है। – Stefan

+0

इसके अलावा, indexeddb वेब पृष्ठों और उनके द्वारा चल रहे सेवा श्रमिकों के बीच संचार का एक माध्यम है। स्थानीय स्टोरेज सेवा श्रमिकों के लिए सुलभ नहीं है। – Awol

+0

अनुक्रमित डीबी एपीआई निश्चित रूप से बहुत सहज नहीं है, लेकिन रैपर लाइब्रेरी जैसे [डेक्सी] (http://dexie.org/) हैं, इससे चीज़ें आसान हो जाती हैं – fengshuo

5

robertc का anwser को जोड़ना, IndexedDB जानता है 'पर्वतमाला' तो आप खोज और सभी रिकॉर्ड है कि 'अब' के साथ शुरू निकालते हैं और अब्द के साथ समाप्त 'खोजने के लिए' कर सकते हैं एबीसी 'आदि

संबंधित मुद्दे