2012-03-28 12 views
11

मेरे पास क्रमबद्ध करने और क्वेरी करने के लिए जबरदस्त डेटा है, और मैं इंटरनेट कनेक्शन पर भरोसा नहीं कर सकता। आदर्श रूप में, मैं अपने पूरे डेटा-सेट को एक JSON ऑब्जेक्ट (वर्तमान में लगभग 17 एमबी के रूप में स्टोर करना चाहता हूं, लेकिन बहुत बड़ा हो सकता है) और कई छोटी फ़ाइलों को आउटपुट करने के विरोध में जेएलएनक्यू या एसक्यूएलईक जैसे कुछ का उपयोग करना चाहता हूं।जावास्क्रिप्ट में बाहरी JSON ऑब्जेक्ट की अधिकतम अनुशंसित आकार

मुझे यह जानने में दिलचस्पी है कि जावास्क्रिप्ट (jQuery, विशेष रूप से) का उपयोग कर बाहरी getJSON कॉल के लिए सबसे बड़ी अनुशंसित फाइलसाइज क्या है। 1 एमबी, 20 एमबी, 100 एमबी? विषय पर जानकारी दुर्लभ है। बड़े डेटा-सेट क्लाइंट-साइड को पूछताछ करने की जानकारी लगभग चारों ओर दुर्लभ है।

इस विषय पर किसी भी जानकारी की सराहना की जाएगी।

+0

यह सब स्थानीय रूप से हो रहा है? क्या आप ब्राउज़र वातावरण में हैं, या नोड.जेएस या कुछ इसी तरह का उपयोग कर रहे हैं? मेरा अनुमान है कि यह क्लाइंट मशीन में उपलब्ध स्मृति पर अत्यधिक निर्भर होने जा रहा है ... इस दृष्टिकोण के साथ सबसे बड़ा मुद्दा शायद पार्सिंग है, क्योंकि आपको इसे पूरी तरह से JSON स्ट्रिंग को स्मृति में लोड करने की आवश्यकता हो सकती है। – nrabinowitz

+0

एक ब्राउज़र वातावरण में सभी क्लाइंट-साइड, स्थानीय रूप से। Jode.js स्थापित और चल रहे हैं उन पर भरोसा नहीं कर सकते हैं। – S16

+0

ध्यान दें कि आपके पास पहली समस्या है जो फ़ाइल को लोड कर रहा है - सामान्य रूप से, ब्राउज़र सुरक्षा सेटिंग्स आपको एक स्थानीय फ़ाइल को स्थानीय HTML पृष्ठ से भी AJAX के साथ स्थानीय फ़ाइल लोड नहीं करने देगी। आप इसे एक स्क्रिप्ट के रूप में लोड करके, या तो JSONP के साथ या दस्तावेज़ '' में प्राप्त कर सकते हैं। – nrabinowitz

उत्तर

10

आपकी सबसे बड़ी समस्या शायद समय लोड हो रही है क्योंकि इसे JSON की एक स्ट्रिंग से वास्तविक जावास्क्रिप्ट ऑब्जेक्ट में परिवर्तित करना होगा। दूसरी बड़ी समस्या यह होगी कि संपूर्ण डेटा सेट पृष्ठ के लिए स्मृति में होगा। मैं 100 एमबी + डेटा का उपयोग कर किसी भी पेज से परिचित नहीं हूं।

मैंने jsfiddle to test loading performance of large JSON strings बनाया। ऐसा लगता है कि JSON (कोर i7 मशीन पर) की ~ 20MB स्ट्रिंग को पार्स करने के लिए ~ 500ms लगते हैं, और क्रोम में यह JSON स्ट्रिंग मूल रूप से खाली होने पर 80 एमबी अधिक मेमोरी का उपयोग करता है। इसलिए 100 एमबी लोड करने के लिए कुछ सेकंड लग सकते हैं और 400 एमबी मेमोरी का उपयोग कर सकते हैं।

यह उन मुद्दों में से किसी एक को हल नहीं करेगा, लेकिन क्या आपने SQL.js का उपयोग करने पर विचार किया है? यह SQLite का एक जावास्क्रिप्ट कार्यान्वयन है। यह पूछताछ करना चाहिए कि डेटा बहुत आसान है।

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