जैसा कि ज्ञात है, JSON XML की तुलना में हल्का डेटा प्रारूप है और इसका उपयोग करना अधिक बेहतर है। लेकिन जब आप एक ही संरचना के साथ वस्तुओं के बड़े सरणियों को स्थानांतरित करते हैं, तो JSON डेटा के साथ भी अधिभारित होता है। उदाहरण के लिए:
[
{
name: 'John',
surname: 'Smith',
info: { age: 25, comments: '' }
},
{
name: 'Sam',
surname: 'Black',
info: { age: 27, comments: '' }
},
{
name: 'Tom',
surname: 'Lewis',
info: { age: 21, comments: '' }
}
]
name
, surname
, age
और comments
ट्रिपल डिक्लेरेशन बेकार है, अगर मैं वास्तव में जानता हूं, कि हर ऐरे ऑब्जेक्ट की संरचना समान होती है।
क्या कोई डेटा प्रारूप है, जो ऐसे सरणी डेटा को छोटा कर सकता है और पर्याप्त लचीला हो सकता है?
2 जवाब
बेशक, यह एक हैकिश समाधान है, लेकिन हमने इसका इस्तेमाल किया है और यह काम करता है। आप सब कुछ सरणियों में समतल कर सकते हैं। उदाहरण के लिए, उपरोक्त के रूप में दर्शाया जाएगा:
[
['John','Smith',[24,'']],
['Sam','Black',[27,'']],
['Tom','Lewis',[21,'']]
]
नकारात्मकता यह है कि क्रमबद्ध/deserializing पर, आपको कुछ कस्टम तर्क करना होगा। हालांकि, इसका परिणाम टेक्स्ट-आधारित समाधान के लिए अतिरिक्त बचत में होता है, और रे सही है - यदि आप वास्तव में अधिकतम बचत चाहते हैं, तो बाइनरी जाने का रास्ता है।
ठीक है अगर आपके पास टेक्स्ट प्रारूप हैं, तो वाईएएमएल न्यूनतम मार्कअप रखने का प्रयास करता है। यह अर्धविराम और ब्रेसिज़ से काफी हद तक छुटकारा पाता है। लेकिन टेक्स्ट बहुत अच्छी तरह से कंप्रेस करता है।
लेकिन अगर आप संपत्ति के नामों में अतिरेक को हटाना चाहते हैं, तो आपको बाइनरी प्रारूप के साथ जाना होगा। मैसेजपैक, प्रोटोकॉल बफ़र्स या एवरो में देखें। मैं ऐसे किसी भी टेक्स्ट-आधारित प्रारूप के बारे में नहीं जानता जो इस प्रकार की अतिरेक को दूर करता है।
देर से जोड़:
ओह माय, पिछले एक साल में दर्जनों गीगाबाइट को एक शॉट में संसाधित करने के लिए Hadoop का उपयोग करने के बाद, मैं CSV को कैसे भूल सकता था? गीज़। पहली पंक्ति स्कीमा हो सकती है, और आपको वास्तव में उद्धरणों की आवश्यकता नहीं है। और विभाजक आप पर निर्भर हो सकता है। कुछ इस तरह:
name|surname|infoage|infocomments
John|Smith|24|
Sam|Black|27|Hi this is a comment
Tom|Lewis|21|This comment has an \| escaped pipe
छोटे दस्तावेज़ों के लिए यह कुछ बाइनरी प्रारूपों से छोटा हो सकता है, लेकिन वास्तविक संख्याओं को संग्रहीत करने के लिए बाइनरी अच्छा है।
साथ ही सीएसवी वास्तव में केवल तभी अच्छा होता है जब आपके पास समान वस्तुओं का संग्रह होता है। जटिल वस्तु पदानुक्रम के लिए बाइनरी, YAML, या @ incaren के सरणी-आधारित समाधान के साथ जाते हैं।
संबंधित सवाल
नए सवाल
dataformat
संरचित डेटा (जैसे फ़ाइल भंडारण या डेटा-इंटरचेंज) के लिए विभिन्न स्वरूपण विकल्पों में से किसी से संबंधित पदों के लिए उपयोग करें।