2011-01-24 10 views
31

मैं एक ऐसी वेबसाइट बना रहा हूं जो मुझे लगता है कि क्लाइंट साइड डेटाबेस होना चाहिए। अन्य विकल्प सब कुछ को जटिल जटिलता और स्केलेबिलिटी में कमी के कारण सर्वर पर चिपकाना होगा। आपके पास कौन से विकल्प हैं? क्या मुझे प्लगइन बनाना चाहिए? क्या मुझे हर किसी के HTML5 अनुपालन तक इंतजार करना चाहिए?मुझे क्लाइंट साइड ब्राउज़र डेटाबेस की आवश्यकता है। मेरे विकल्प क्या हैं


अद्यतन के बारे में कारण है कि मैं इस की जरूरत है वास्तव में होता टिप्पणियों का एक बहुत वहाँ हो गया है। मेरे विचार यहाँ हैं। मुझे बताएं कि क्या मैं मूर्ख हूं:

  • ग्राहकों के पास एक बड़ा और जटिल स्थिति होगा जिसके लिए मुझे डेटा इंटरैक्शन प्रदान करने के लिए डेटाबेस की तरह कुछ आवश्यकता होगी। इसलिए (मुझे लगता है) कुकीज़ तस्वीर से बाहर हैं।
  • यह डेटा क्षणिक है, इसलिए यदि ग्राहक सत्र बंद करते हैं तो क्लाइंट पर ध्यान नहीं दिया जाएगा। हालांकि अगर वे एक अलग वेब पेज पर जाते हैं और फिर वापस आते हैं तो उन्हें डेटा रखने की आवश्यकता होगी। इसलिए (मुझे लगता है) किसी भी प्रकार जावास्क्रिप्ट एसक्यूएल कार्यान्वयन के किसी भी प्रकार में डेटा संग्रहित नहीं करेगा।
  • मैं निश्चित रूप से सब कुछ कर सकता हूं जो मैं सर्वर पर करना चाहता हूं, और लोड (फेसबुक) प्रबंधित करने के लिए सर्वर कर सकते हैं। लेकिन (मुझे लगता है) मैं इस लोड का समर्थन करने के लिए आधारभूत संरचना के लिए भुगतान की तुलना में एक प्लगइन बनाना चाहता हूं। यह एक नंगे हड्डियों स्टार्टअप के लिए है। (अमीर स्टार्टअप है, barer मेरी हड्डियों हो जाएगा।)
+2

आपको लगता है कि यह ग्राहक पक्ष पर क्यों होना चाहिए? कृपया समझाएँ? –

+2

"मैं एक ऐसी वेबसाइट बना रहा हूं जो मुझे लगता है कि क्लाइंट साइड डेटाबेस होना चाहिए" - शायद आपकी वास्तविक समस्या का वर्णन करें, और किसी समस्या का अनुमानित समाधान नहीं जो आपने हमें नहीं बताया है .... –

+1

@ जॉन क्या ब्राउज़र करते हैं आप समर्थन करना चाहते हैं? –

उत्तर

23
+1

मैं इन एपिस के शीर्ष पर बने डीबीएस की सूची चाहता हूं। –

+0

इंडेक्सड डीबी * एक डेटाबेस है। –

+0

JSON सर्वर और ब्राउज़र के बीच डेटा भेजने के लिए उपयोग किया जाता है। –

1

बाहर चेक HTML5 स्थानीय संग्रहण:

http://people.w3.org/mike/localstorage.html

इस लिए उपयोगी हो सकते: HTML5 database storage (SQL lite) - few questions

जब विंडोज 98 पहले बाहर आया, हम में से बहुत से अभी भी एमएस-डॉस 6.22 पर फंस गए थे। स्वाभाविक रूप से, नए ऑपरेटिंग सिस्टम पर वास्तव में अच्छी सुविधाएं थीं जो एमएस-डॉस में नहीं चलतीं।

ऐसा समय आता है जब नवाचार के लिए जगह बनाने के लिए कुछ चीजें पीछे रहेंगी। यदि आपका आवेदन वास्तव में अभिनव है और नवीनतम और सबसे बड़ी तकनीकों का उपयोग करने वाली अच्छी नई कार्यक्षमता प्रदान करेगा, तो कुछ पुराने ब्राउज़र को स्वाभाविक रूप से पीछे छोड़ने की आवश्यकता होगी।

आपके पास यह लाभ है कि, ऑपरेटिंग सिस्टम को अपग्रेड करने के विपरीत, आई 7 से क्रोम 8 तक अपग्रेड करना या फ़ायरफ़ॉक्स 3.6 आपके ऐप के औसत उपयोगकर्ता के लिए एक अधिक पहुंच योग्य लक्ष्य है, खासकर यदि आप एक लिंक प्रदान करते हैं और निर्देशों को अपग्रेड करते हैं।

4

अगर आप की तरह आप की जरूरत है तो ग्राहकों को इसका समर्थन के लिए इसका इस्तेमाल करते हैं और ग्राहकों के लिए एक सर्वर साइड वापस आने को लागू नहीं करते हैं कि लग रहा है ।

एक विकल्प यह है कि आप फ्लैश और स्थानीय साझा ऑब्जेक्ट्स का उपयोग कर सकते हैं जो कुकी की तुलना में बहुत अधिक जानकारी स्टोर कर सकते हैं, फ्लैश के साथ सभी ब्राउज़रों में काम करेगा (जो कि बहुत सारे ब्राउज़र हैं), और टाइप किए गए डेटा को स्टोर करें। आपको फ्लैश में पूरा ऐप नहीं करना है, आप बस एलएसओ डेटा को पढ़ने/लिखने के लिए एक छोटी उपयोगिता लिख ​​सकते हैं। यह बिना किसी ढांचे के सीधे एक्शनस्क्रिप्ट परियोजनाओं का उपयोग करके किया जा सकता है और आपको एक छोटा 5-15 केबी एसएफएफ देगा।

दो एपीआई हैं जिन्हें आपको मुख्य रूप से आवश्यकता होगी। SharedObject.getLocal() एलएसओ तक पहुंच प्राप्त करने और इसके डेटा को पढ़ने/लिखने के लिए, और ExternalInterface.addCallback जिसका उपयोग आप अपने पढ़ने/लिखने एलएसओ विधि को कॉल करने के लिए कॉलबैक के रूप में AS3 विधि को पंजीकृत करने के लिए उपयोग कर सकते हैं।

SharedObject

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html?filter_flex=4.1&filter_flashplayer=10.1&filter_air=2

ExternalInterface

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

ये लिंक संदर्भ फ्लेक्स करने के लिए कर रहे हैं, लेकिन इस के लिए आप सिर्फ फ्लेक्स के लिए कोई ज़रूरत नहीं के साथ एक ActionScript प्रोजेक्ट बना सकते हैं ढांचे और इसलिए बहुत कम एसएफएफ आकार कम किया। FlashDevelop जैसे निःशुल्क ओपन-सोर्स वाले कई अच्छे आईडीई हैं।

FlashDevelop

http://www.flashdevelop.org/

+0

यह एक दिलचस्प दृष्टिकोण है। क्या आप मुझे कुछ पढ़ने की सामग्री के बारे में बता सकते हैं? – JnBrymn

+0

@ जॉन बेरीमैन, मैंने कुछ प्रासंगिक लिंक जोड़े। –

3

मैं अभी भी इसे अपने आप को बाहर की कोशिश कर रहा एक जावास्क्रिप्ट डाटाबेस http://www.taffydb.com/ भर में आया था, उम्मीद है कि इस मदद करता है।

3

यदि आप क्लाइंट पर नोएसक्यूएल-शैली डीबी की तलाश में हैं तो आप http://www.forerunnerdb.com देख सकते हैं। यह मोंगो डीबी के समान क्वेरी भाषा का समर्थन करता है और यदि आप अपने डीओएम को स्वचालित रूप से अपने डेटा में बदलावों को प्रतिबिंबित करना चाहते हैं तो डेटा-बाध्यकारी मॉड्यूल है।

यह भी खुला स्रोत है, लगातार नई सुविधाओं के साथ अद्यतन किया जा रहा है और इसके आसपास के समुदाय तेजी से बढ़ रहे हैं।

अस्वीकरण, मैं परियोजना का मुख्य डेवलपर हूं।

2

मुझे इसका उत्तर देने में लगभग 5 साल का समय है, लेकिन यह देखते हुए कि कुछ मौजूदा उत्तरों में त्रुटियों और पुराने डेटा हैं, और मूल प्रश्न में अनजान अंक हैं, मुझे लगा कि मैं अपने दो सेंट में फेंक दूंगा ।

सबसे पहले, दूसरों ने यहां क्या बताया है इसके विपरीत, localStorage डेटाबेस नहीं है। यह एक सतत, स्ट्रिंग-आधारित कुंजी-मूल्य स्टोर के रूप में (या माना जाना चाहिए) ...

... जो आपकी आवश्यकताओं के लिए पूरी तरह से ठीक हो सकता है (और मुझे मेरे दूसरे बिंदु पर लाता है)।

  • क्या आपको अपने डेटा आइटमों के बीच स्पष्ट या निहित संबंधों की आवश्यकता है?
  • कहा गया सामानों पर पूछताछ करने की क्षमता के बारे में कैसे?
  • या अंतरिक्ष में 5 MB से अधिक?

यदि आपने उपर्युक्त सभी को "नहीं" का उत्तर दिया है, तो स्थानीय स्टोरेज के साथ जाएं और वेबस्क्लुएल और इंडेक्सड डीबी एपीआई के सिरदर्द से खुद को बचाएं। खैर, शायद बाद में सिरदर्द, पूर्व has been deprecated के बाद से।

  • userData*:

    भी कई अन्य क्लाइंट साइड भंडारण की सुविधाएं (देशी और गैर देशी) आप, करने के लिए लग रही है, जिनमें से कुछ अनुचित हैं * लेकिन अभी भी कुछ ब्राउज़र से समर्थन को देखने के लिए चाहते हो सकता है कर रहे हैं

  • WebStorage के बाकी (sessionStorage और globalStorage*)
  • एचटीएमएल 5 File System*
  • फ्लैश Locally Shared Objects
  • सिल्वरलाइट Isolated Storage

चेक बाहर BakedGoods आप निम्न स्तर के भंडारण आपरेशन कोड लिखने के बिना इन सुविधाओं के किसी भी, और अधिक का उपयोग करने, चाहते हैं।

bakedGoods.set({ 
    data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}], 
    storageTypes: ["silverlight", "fileSystem", "localStorage"], 
    options: optionsObj, 
    complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){} 
}); 

ओह, और पूर्ण पारदर्शिता की खातिर, BakedGoods इस आदमी से यहीं बनाए रखा है :): इसके साथ, एक (या अधिक) उनमें से में डेटा रखने, उदाहरण के लिए, के रूप में सरल है।

+0

क्या आप अभी भी सक्रिय रूप से 'बेक्ड गुड्स' बनाए रखते हैं? – ktkaushik

1

PouchDB का उपयोग करें।

यह ऑनलाइन और ऑफलाइन काम करने वाले अनुप्रयोगों के निर्माण में सहायता करता है।

असल में, यह इन-ब्राउज़र डेटाबेस में अंतिम प्राप्त डेटा संग्रहीत करता है (इंडेक्सड डीबी का उपयोग करता है, हुड के नीचे WebSQL) और फिर नेटवर्क सक्रिय होने पर फिर से समन्वयित करता है।

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