एवीआरओ - स्कीमा
एवरो, एक स्कीमा-आधारित क्रमांकन उपयोगिता होने के नाते, इनपुट के रूप में स्कीमा स्वीकार करता है। विभिन्न स्कीमा उपलब्ध होने के बावजूद, एवरो स्कीमा को परिभाषित करने के अपने स्वयं के मानकों का पालन करता है। ये योजनाएँ निम्नलिखित विवरणों का वर्णन करती हैं -
- फ़ाइल का प्रकार (डिफ़ॉल्ट रूप से रिकॉर्ड)
- रिकॉर्ड का स्थान
- रिकॉर्ड का नाम
- अपने संबंधित डेटा प्रकारों के साथ रिकॉर्ड में फ़ील्ड्स
इन स्कीमाओं का उपयोग करके, आप कम स्थान का उपयोग करके बाइनरी प्रारूप में क्रमबद्ध मानों को संग्रहीत कर सकते हैं। इन मूल्यों को बिना किसी मेटाडेटा के संग्रहीत किया जाता है।
एवरो स्कीम्स बनाना
एवरो स्कीमा जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) दस्तावेज़ प्रारूप में बनाया गया है, जो एक हल्का पाठ-आधारित डेटा इंटरचेंज प्रारूप है। इसे निम्नलिखित तरीकों में से एक में बनाया गया है -
- एक JSON स्ट्रिंग
- एक JSON ऑब्जेक्ट
- एक JSON सरणी
Example - निम्नलिखित उदाहरण एक स्कीमा को दर्शाता है, जो एक दस्तावेज को परिभाषित करता है, नाम स्पेस ट्यूटोरियल के तहत, कर्मचारी नाम के साथ, फ़ील्ड नाम और आयु के साथ।
{
"type" : "record",
"namespace" : "Tutorialspoint",
"name" : "Employee",
"fields" : [
{ "name" : "Name" , "type" : "string" },
{ "name" : "Age" , "type" : "int" }
]
}
इस उदाहरण में, आप देख सकते हैं कि प्रत्येक रिकॉर्ड के लिए चार फ़ील्ड हैं -
type - यह फील्ड डॉक्यूमेंट के साथ-साथ फील्ड नाम के फील्ड के तहत आती है।
दस्तावेज़ के मामले में, यह दस्तावेज़ का प्रकार दिखाता है, आम तौर पर एक रिकॉर्ड क्योंकि कई क्षेत्र हैं।
जब यह फ़ील्ड होता है, तो प्रकार डेटा प्रकार का वर्णन करता है।
namespace - यह फ़ील्ड उस नामस्थान का नाम बताती है जिसमें ऑब्जेक्ट रहता है।
name - यह फील्ड डॉक्यूमेंट के साथ-साथ फील्ड नाम के फील्ड के तहत आती है।
दस्तावेज़ के मामले में, यह स्कीमा नाम का वर्णन करता है। यह स्कीमा नाम नेमस्पेस के साथ जोड़ा, विशिष्ट रूप से स्टोर के भीतर स्कीमा की पहचान करता है (Namespace.schema name)। उपरोक्त उदाहरण में, स्कीमा का पूरा नाम Tutorialspoint.Employee होगा।
खेतों के मामले में, यह क्षेत्र के नाम का वर्णन करता है।
एवरो के आदिम डेटा प्रकार
एवरो स्कीमा में आदिम डेटा प्रकार के साथ-साथ जटिल डेटा प्रकार होते हैं। निम्न तालिका वर्णन करती हैprimitive data types एवरो की -
डाटा प्रकार | विवरण |
---|---|
शून्य | नल एक प्रकार है जिसका कोई मूल्य नहीं है। |
पूर्णांक | 32-बिट हस्ताक्षरित पूर्णांक। |
लंबा | 64-बिट हस्ताक्षरित पूर्णांक। |
नाव | एकल परिशुद्धता (32-बिट) IEEE 754 फ़्लोटिंग-पॉइंट संख्या। |
दोहरा | डबल सटीक (64-बिट) IEEE 754 फ़्लोटिंग-पॉइंट संख्या। |
बाइट्स | 8-बिट अहस्ताक्षरित बाइट्स का क्रम। |
तार | यूनिकोड वर्ण क्रम। |
एवरो के जटिल डेटा प्रकार
आदिम डेटा प्रकारों के साथ, एवरो छह जटिल डेटा प्रकार प्रदान करता है, जैसे रिकॉर्ड्स, एनम, एरेज़, मैप्स, यूनियंस और फिक्स्ड।
अभिलेख
एवरो में एक रिकॉर्ड डेटा प्रकार कई विशेषताओं का एक संग्रह है। यह निम्नलिखित विशेषताओं का समर्थन करता है -
name - इस फ़ील्ड का मान रिकॉर्ड का नाम रखता है।
namespace - इस फ़ील्ड का मान उस नाम स्थान का नाम रखता है जहाँ ऑब्जेक्ट संग्रहीत है।
type - इस विशेषता का मान या तो दस्तावेज़ के प्रकार (रिकॉर्ड) या स्कीमा में फ़ील्ड का डेटाटाइप रखता है।
fields - यह फ़ील्ड JSON सरणी रखती है, जिसमें स्कीमा में सभी फ़ील्ड्स की सूची होती है, प्रत्येक में नाम और प्रकार की विशेषताएँ होती हैं।
Example
नीचे दिए गए एक रिकॉर्ड का उदाहरण है।
{
" type " : "record",
" namespace " : "Tutorialspoint",
" name " : "Employee",
" fields " : [
{ "name" : " Name" , "type" : "string" },
{ "name" : "age" , "type" : "int" }
]
}
enum
एक संग्रह में वस्तुओं की एक सूची है, एवरो गणन निम्नलिखित विशेषताओं का समर्थन करता है -
name - इस क्षेत्र का मान गणना का नाम है।
namespace - इस फ़ील्ड के मान में स्ट्रिंग है जो एन्यूमरेशन के नाम को योग्य बनाता है।
symbols - इस क्षेत्र का मान नाम की एक सरणी के रूप में एनम के प्रतीकों को रखता है।
Example
नीचे दिए गए एक गणना का उदाहरण है।
{
"type" : "enum",
"name" : "Numbers",
"namespace": "data",
"symbols" : [ "ONE", "TWO", "THREE", "FOUR" ]
}
Arrays
यह डेटा प्रकार एकल विशेषता आइटम वाले एक सरणी फ़ील्ड को परिभाषित करता है। यह आइटम विशेषता सरणी में आइटम के प्रकार को निर्दिष्ट करता है।
Example
{ " type " : " array ", " items " : " int " }
मैप्स
मानचित्र डेटा प्रकार कुंजी-मूल्य जोड़े का एक सरणी है, यह डेटा को कुंजी-मूल्य जोड़े के रूप में व्यवस्थित करता है। एवरो मैप की कुंजी एक स्ट्रिंग होनी चाहिए। मानचित्र के मान मानचित्र की सामग्री का डेटा प्रकार रखते हैं।
Example
{"type" : "map", "values" : "int"}
यूनियन
जब भी फ़ील्ड में एक या एक से अधिक डेटाटाइप होते हैं, तो यूनियन डेटाटाइप का उपयोग किया जाता है। उन्हें JSON सरणियों के रूप में दर्शाया गया है। उदाहरण के लिए, यदि ऐसा क्षेत्र जो इंट या नल हो सकता है, तो संघ का प्रतिनिधित्व "" इंट "," अशक्त "] के रूप में किया जाता है।
Example
नीचे एक उदाहरण दिया गया है जो यूनियनों का उपयोग करते हुए एक दस्तावेज है -
{
"type" : "record",
"namespace" : "tutorialspoint",
"name" : "empdetails ",
"fields" :
[
{ "name" : "experience", "type": ["int", "null"] }, { "name" : "age", "type": "int" }
]
}
फिक्स्ड
इस डेटा प्रकार का उपयोग निश्चित आकार के क्षेत्र को घोषित करने के लिए किया जाता है जिसका उपयोग बाइनरी डेटा को संग्रहीत करने के लिए किया जा सकता है। इसमें फीचर्स के रूप में फील्ड नेम और डेटा है। नाम फ़ील्ड का नाम रखता है, और आकार फ़ील्ड का आकार रखता है।
Example
{ "type" : "fixed" , "name" : "bdata", "size" : 1048576}