मैं वर्तमान में अपने जावा प्रोजेक्ट में JSON (gzip के माध्यम से संपीड़ित) का उपयोग कर रहा हूं, जिसमें मुझे बड़ी संख्या में ऑब्जेक्ट्स स्टोर करने की आवश्यकता है (सैकड़ों लाखों) डिस्क पर। मेरे पास प्रति पंक्ति एक JSON ऑब्जेक्ट है, और JSON ऑब्जेक्ट के भीतर लाइनब्रैक को अस्वीकार करता है। इस तरह मैं पूरी फ़ाइल को एक बार में पढ़ने के बिना डिस्क लाइन-दर-रेखा से डेटा स्ट्रीम कर सकता हूं।एक तेज, कॉम्पैक्ट, स्ट्रीम करने योग्य, बहु भाषा, दृढ़ता से टाइप किए गए क्रमबद्धता प्रारूप
यह पता चला है कि जेएसओएन कोड (http://www.json.org/java/ का उपयोग करके) को डिस्क से कच्चे डेटा को खींचने या इसे डिकंप्रेस करने (या जो मैं उड़ता हूं) से बड़ा ओवरहेड है।
आदर्श रूप से जो मैं चाहता हूं वह दृढ़ता से टाइप किया गया क्रमबद्धता प्रारूप है, जहां मैं "यह ऑब्जेक्ट फ़ील्ड स्ट्रिंग्स की एक सूची" निर्दिष्ट कर सकता हूं (उदाहरण के लिए), और क्योंकि सिस्टम जानता है कि क्या उम्मीद करनी है, यह इसे deserialize कर सकते हैं जल्दी जल्दी। मैं किसी और को अपना "प्रकार" देकर प्रारूप भी निर्दिष्ट कर सकता हूं।
इसे क्रॉस-प्लेटफ़ॉर्म होने की भी आवश्यकता होगी। मैं जावा का उपयोग करता हूं, लेकिन PHP, पायथन और अन्य भाषाओं का उपयोग करने वाले लोगों के साथ काम करता हूं।
तो, संक्षिप्त करने के लिए, यह होना चाहिए:
- जोरदार टाइप किया
- स्ट्रीम (यानी यह सब एक ही बार में रैम में लोड किए बिना थोड़ा करके एक फाइल बिट पढ़ें।)
- क्रॉस मंच (जावा और PHP सहित)
- फास्ट
- नि: शुल्क (भाषण में के रूप में)
कोई संकेतक?
यदि डिस्क से कच्चे डेटा को खींचना तेज है, तो ऐसा क्यों नहीं करते? जेएसओएन के साथ गड़बड़ क्यों धीमी है? –
ठीक है, इसलिए पार्सिंग जेसन डिकंप्रेसिंग से धीमा है, या डिस्क से डेटा को पढ़ रहा है। तो क्या? क्या आपको इसके लिए बहुत धीमी गति है? या आप इसके लिए सिर्फ अनुकूलित कर रहे हैं? – Breton
ब्रेटन: मुझे जो करना है, उसके लिए यह बहुत धीमा है, यह समयपूर्व अनुकूलन नहीं है। – sanity