क्या MariaDB देशी JSON कॉलम डेटा प्रकार का समर्थन करता है?


13

मैं गतिशील स्तंभों के बारे में बात नहीं कर रहा हूँ, मैं देशी कॉलम JSON डेटा प्रकार के बारे में पूछ रहा हूँ। सरल शब्दों में, क्या मैं किसी भी MariaDB संस्करण पर निम्न कोड चला सकता हूं?

CREATE TABLE example (names JSON);

जहाँ तक मुझे पता है, यह नहीं है, लेकिन मुझे अभी भी यकीन नहीं है क्योंकि उम्र के लिए मारबाड पर JSON समर्थन के बारे में बहुत सारे विषय हैं, लेकिन किसी ने भी नहीं कहा कि यह आखिरकार लागू हो गया है।

-- अपडेट करें --

JSON डेटा प्रकार के समर्थन के बारे में अभी भी तीन मुद्दे अभी भी खुले हैं।


यह अद्यतन प्रश्न में नहीं होना चाहिए, यही उत्तर है। आपको इसे बाहर ले जाना चाहिए और आत्म-उत्तर देना चाहिए। @Omranic।
इवान कैरोल

> JSON MySQL के JSON डेटा प्रकार के साथ संगतता कारणों के लिए प्रस्तुत LONGTEXT के लिए एक उपनाम है। mariadb.com/kb/en/library/json-data-type
zx1986

जवाबों:


7

JSON का समर्थन MariaDB 10.2 पर आएगा। 28.02.2017 से आधिकारिक MariaDB ब्लॉग पोस्ट देखें । कुछ उदाहरण हैं SQL कथन और सत्यापन।

JSON तेजी से डेटा इंटरचेंज के लिए और असंरचित डेटा के लिए मानक प्रारूप बन रहा है, और MariaDB 10.2 JSON समर्थन कार्यों पर एक सीमा जोड़ता है, भले ही एक JSON डेटाटाइप लागू नहीं किया गया है। JSON डेटाटाइप नहीं होने के कुछ कारण हैं, लेकिन एक यह है कि वास्तव में ऐसा नहीं है कि JSON एक पाठ-आधारित प्रारूप है। इस ब्लॉग पोस्ट का उद्देश्य JSON और इसके लिए उपयोग के मामलों का वर्णन करना है, साथ ही साथ MariaDB 10.2 JSON फ़ंक्शन और इनका उपयोग करना है, साथ ही साथ MariaDB 10.2 के लिए कुछ अन्य अतिरिक्त दिखाने के लिए जो JSON प्रसंस्करण के लिए उपयोगी हैं।


2
10.2.6 तक, अभी तक देशी JSON का समर्थन नहीं करता है।
किटीगर्ल

1
वे एक सादे पाठ के रूप में केवल 10.3 पर
मूसा को

6

यह इस बात पर निर्भर करता है कि जब आप "डेटा प्रकार" कहते हैं तो आपका क्या मतलब है। PostgreSQL जैसे कुछ डेटाबेस में एक JSON डेटा प्रकार होता है जो डेटा तक पहुंचने के लिए पूर्ण पाठ खोज, एक बाइनरी स्टोरेज मैकेनिज़्म, इंडेक्सिंग और ऑपरेटरों के पूर्ण सूट की अनुमति देता है। मारिया के पास अभी तक ऐसा नहीं है। डेटा प्रकार विशेष रूप से MDEV-9144 द्वारा ट्रैक किया जा रहा है ।

हालांकि, एक बग अनुरक्षक से MySQL के लिए एक बहुत ही सीमित प्रकार लाता है ,

JSON डेटा प्रकार सीधे SQL मानक का विरोध करता है, जो कहता है, कि JSON_ * फ़ंक्शन एक तर्क के रूप में एक स्ट्रिंग लेता है। इसके अलावा, स्पीड-वार मारबीडीबी को द्विआधारी JSON की आवश्यकता नहीं है, हमारे बेंचमार्क के अनुसार, हमारे JSON पार्सर बाइनरी JSON पर MySQL के रूप में टेक्स्ट JSON पर तेज़ है। यही कारण है कि MariaDB में JSON के लिए VARCHAR या TEXT हो सकता है। यदि एक सत्यापन की आवश्यकता होती है, तो कोई इसे CHECK बाधा के साथ कर सकता है:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

हम MySQL संगतता के लिए JSON "प्रकार" जोड़ेंगे, यद्यपि।

मेरे पढ़ने से, कि बाइनरी JSON की बात बिल्कुल नहीं है चलो MySQL डॉक्स को देखें

बाइनरी प्रारूप को संरचित किया जाता है ताकि सर्वर को दस्तावेज़ में पहले या बाद में सभी मानों को पढ़े बिना कुंजी या सरणी इंडेक्स द्वारा सीधे सब -जेक्ट्स या नेस्टेड मानों को देखने में सक्षम किया जा सके।

फिर, PostgreSQL केjsonb करता है एक बहुत है कि अधिक से अधिक।

jsonb डेटा को एक विघटित बाइनरी प्रारूप में संग्रहीत किया जाता है, जो अतिरिक्त रूपांतरण ओवरहेड के कारण इनपुट के लिए थोड़ा धीमा बनाता है, लेकिन प्रक्रिया में तेजी से होता है, क्योंकि किसी भी रिपार्सिंग की आवश्यकता नहीं होती है। jsonb इंडेक्सिंग का भी समर्थन करता है, जो एक महत्वपूर्ण लाभ हो सकता है।

tldr; मारिया DB के पास अभी तक JSON प्रकार नहीं है। यहां तक ​​कि जब यह "प्रकार" हो जाता है, तो यह केवल पाठ-सत्यापन (जैसे PostgreSQL के jsonप्रकार) पर एक पतली आवरण है । द्विआधारी JSON प्रकार (जैसे PostgreSQL jsonb) के लिए कोई योजना नहीं है क्योंकि डेवलपर्स को प्रतीत होता है कि फायदे समझ में नहीं आते हैं।


1
उपयोगकर्ता वास्तव में परवाह नहीं करता है कि पोस्टग्रोन में JSON को संगृहीत या विघटित किया गया है या नहीं, चाहे वह द्विआधारी बाइनरी है या नहीं। JSON के लिए महत्वपूर्ण है क) आप इसे क्या डालते हैं, आप बाहर निकलते हैं, और वैध इनपुट की जांच करने की संभावना है। b) आप JSON के कुछ हिस्सों को अनुक्रमित और खोज सकते हैं। 3) इस पर काम करने के लिए कार्य हैं।
व्लादिस्लाव वेंट्रॉब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.