तुलना
Avro या CBOR
Apache Avro स्कीमा के अनुसार रिकॉर्ड encode करता है और writer/reader स्कीमा समाधान व कंटेनर फ़ाइलें समर्थित करता है। CBOR सामान्य बाइनरी फ़ॉर्मैट है, जिसका डेटा मॉडल JSON का विस्तार करता है और byte string व tag सीधे दर्शाता है।
कौन-सा फ़ॉर्मैट चुनें?
डेटा पाइपलाइन में प्रबंधित स्कीमा, टाइप रिकॉर्ड और स्कीमा विकास के लिए Avro पर विचार करें। IETF मानक के सामान्य बाइनरी मान, टैग और प्रोटोकॉल payload के लिए CBOR पर विचार करें।
इसके लिए उपयुक्त Avro
निर्धारित स्कीमा के साथ रिकॉर्ड साझा करना
- स्कीमा संस्करण रखने वाले इवेंट और डेटा प्रवाह
इसके लिए उपयुक्त CBOR
सीमित संसाधनों वाले उपकरणों और नेटवर्क पर संरचित डेटा का आदान-प्रदान · COSE और IoT प्रोटोकॉल में डेटा दर्शाना
- JSON जैसे डेटा को छोटे बाइनरी रूप में दर्शाना
- मानों का अर्थ बताने के लिए मानक या ऐप-परिभाषित टैग इस्तेमाल करना
मूल जानकारी
| मद | Avro | CBOR |
|---|---|---|
| एक्सटेंशन | .avro | .cbor |
| MIME प्रकार | application/avro | application/cbor |
| सामान्य उपयोग | निर्धारित स्कीमा के साथ रिकॉर्ड साझा करना | सीमित संसाधनों वाले उपकरणों और नेटवर्क पर संरचित डेटा का आदान-प्रदान · COSE और IoT प्रोटोकॉल में डेटा दर्शाना |
| कैसे खोलें | Avro समर्थित टूल से स्कीमा, फ़ील्ड, प्रकार और रिकॉर्ड जाँचें। | CBOR लाइब्रेरी या decoder से पढ़ें और diagnostic notation या JSON जैसी दृश्य प्रस्तुति देखें। टैग और बाइट स्ट्रिंग जैसे JSON में सीधे न दर्शाए जा सकने वाले मानों का रूप जाँचें। |
| निर्यात या रूपांतरण | JSON या Parquet में बदलते समय फ़ील्ड नाम, प्रकार, null, तार्किक प्रकार, रिकॉर्ड संख्या और स्कीमा संगतता जाँचें। | JSON में बदलते समय बाइट स्ट्रिंग और टैग वाले मानों के लिए टूल-विशिष्ट रूप चाहिए हो सकता है। signature, hash या cache key के लिए प्रोटोकॉल के सहमत नियम, जैसे RFC 8949 की deterministic encoding, अपनाएँ। |
उपयोग के अनुसार चुनें
स्कीमा संस्करण रखने वाले इवेंट और डेटा प्रवाह
निर्धारित स्कीमा के साथ रिकॉर्ड साझा करना
AvroJSON जैसे डेटा को छोटे बाइनरी रूप में दर्शाना
सीमित संसाधनों वाले उपकरणों और नेटवर्क पर संरचित डेटा का आदान-प्रदान · COSE और IoT प्रोटोकॉल में डेटा दर्शाना
CBORमानों का अर्थ बताने के लिए मानक या ऐप-परिभाषित टैग इस्तेमाल करना
सीमित संसाधनों वाले उपकरणों और नेटवर्क पर संरचित डेटा का आदान-प्रदान · COSE और IoT प्रोटोकॉल में डेटा दर्शाना
CBORमुख्य बिंदु 1
Avro decode करने के लिए writer स्कीमा चाहिए; इसकी object container फ़ाइल स्कीमा रख सकती है। CBOR map और tag जैसे टाइप आइटम encode करता है, पर ऐप-विशिष्ट स्कीमा विकास अलग से तय होता है।
अंतर के बारे में विस्तार सेमुख्य बिंदु 2
Avro स्कीमा से record, union, enum और logical type तय करता है। CBOR integer, byte string, array, map और tag परिभाषित करता है, लेकिन एक रिकॉर्ड-स्कीमा प्रणाली अनिवार्य नहीं करता।
अंतर के बारे में विस्तार सेअंतर के बारे में विस्तार से
जब उत्पादक और उपभोक्ता संगत स्कीमा प्रबंधित करें और रिकॉर्ड का विकास चाहिए, Avro लें। प्रोटोकॉल को byte string या tag सहित सामान्य संक्षिप्त बाइनरी मॉडल चाहिए तो CBOR लें। स्कीमा वितरण, deterministic encoding और कार्यान्वयन समर्थन जाँचें।
- Avro डेटा writer स्कीमा से समझा जाता है और कंटेनर फ़ाइल इसे शामिल कर सकती है। CBOR आइटम बाइनरी प्रकार सूचना रखते हैं, पर ऐप-स्तर स्कीमा अनुबंध अपने आप नहीं देते।
- Avro स्कीमा समाधान writer और reader स्कीमा मिला सकता है। CBOR tag अर्थ जोड़ते हैं, पर दोनों पक्षों को उनका अर्थ और व्यवहार तय करना होता है।
- इनके byte encoding परस्पर विनिमेय नहीं हैं। रूपांतरण में union, logical type, default और अनुपस्थित मान, CBOR tag, integer सीमा, byte string, deterministic encoding और अज्ञात विस्तार जाँचें।
अक्सर पूछे जाने वाले प्रश्न
क्या CBOR बिना स्कीमा Avro डेटा decode कर सकता है?
नहीं। दोनों के encoding अलग हैं और Avro को writer स्कीमा चाहिए। रूपांतरण में स्कीमा और मानों को CBOR आइटम में स्पष्ट रूप से मैप करना होगा।