MariaDB รองรับชนิดข้อมูลคอลัมน์ JSON ดั้งเดิมหรือไม่


13

ฉันไม่ได้พูดถึงคอลัมน์ไดนามิกฉันถามเกี่ยวกับประเภทข้อมูลคอลัมน์ JSON ดั้งเดิม ในคำง่ายๆฉันสามารถเรียกใช้รหัสต่อไปนี้ในรุ่น MariaDB ใด ๆ

CREATE TABLE example (names JSON);

เท่าที่ฉันรู้มันไม่ได้ แต่ฉันก็ยังไม่แน่ใจเนื่องจากมีหลายหัวข้อที่พูดถึงการสนับสนุน JSON ใน MariaDB สำหรับทุกวัย แต่ไม่มีใครพูดว่ามันนำมาใช้ในที่สุด

- อัปเดต -

เพิ่งพบปัญหาสามข้อที่ยังเปิดอยู่บน MariaDB Jira เกี่ยวกับการสนับสนุนประเภทข้อมูล JSON ซึ่งหมายความว่ายังไม่ได้ใช้งานใช่ไหม


การอัปเดตนั้นไม่ควรอยู่ในคำถามนั่นคือคำตอบ คุณควรย้ายที่และตอบด้วยตนเอง @Omranic
Evan Carroll

> JSON เป็นชื่อแทนสำหรับ LONGTEXT ที่แนะนำสำหรับเหตุผลด้านความเข้ากันได้กับชนิดข้อมูล JSON ของ MySQL mariadb.com/kb/en/library/json-data-type
zx1986

คำตอบ:


7

การสนับสนุน JSON จะมาที่ MariaDB 10.2 ดูโพสต์บล็อกอย่างเป็นทางการของ MariaDBตั้งแต่ 28.02.2017 มีตัวอย่างประโยคคำสั่ง SQL และการตรวจสอบความถูกต้อง

JSON กำลังกลายเป็นรูปแบบมาตรฐานอย่างรวดเร็วสำหรับการแลกเปลี่ยนข้อมูลและสำหรับข้อมูลที่ไม่มีโครงสร้างและ MariaDB 10.2 เพิ่มช่วงของฟังก์ชั่นการสนับสนุน JSON แม้ว่าประเภทข้อมูล JSON ยังไม่ได้ใช้งาน มีสาเหตุบางประการที่ไม่มีประเภทข้อมูล JSON แต่หนึ่งในนั้นคือมีข้อดีหลายประการที่ไม่เหมือนกับ JSON เนื่องจากรูปแบบข้อความ โพสต์บล็อกนี้มีวัตถุประสงค์เพื่ออธิบาย JSON และกรณีการใช้งานรวมถึงอธิบายฟังก์ชัน MariaDB 10.2 JSON และการใช้งานสำหรับสิ่งเหล่านี้รวมถึงการแสดงเพิ่มเติมส่วนอื่น ๆ ของ MariaDB 10.2 ที่มีประโยชน์สำหรับการประมวลผล JSON


2
จนถึง 10.2.6 ยังไม่สนับสนุน JSON ดั้งเดิม
kittygirl

1
พวกเขาเก็บ json เป็นข้อความธรรมดาเท่านั้นในวันที่ 10.3
Musa Haidari

6

ขึ้นอยู่กับสิ่งที่คุณหมายถึงเมื่อคุณพูดว่า "ชนิดข้อมูล" ฐานข้อมูลบางอย่างเช่น PostgreSQL มีประเภทข้อมูล JSON ที่อนุญาตการค้นหาข้อความแบบเต็มกลไกการจัดเก็บแบบไบนารีการจัดทำดัชนีและชุดตัวดำเนินการเต็มรูปแบบในการเข้าถึงข้อมูล มาเรียยังไม่มีสิ่งนั้น ชนิดข้อมูลเฉพาะมีการติดตามโดยMDEV-9144

แม้ว่าจะนำประเภทที่ จำกัดมากไปยัง MySQL จากหนึ่งในผู้ดูแลบั๊ก

ชนิดข้อมูล JSON ขัดแย้งกับมาตรฐาน SQL โดยตรงซึ่งระบุว่าฟังก์ชัน JSON_ * ใช้สตริงเป็นอาร์กิวเมนต์ นอกจากนี้MariaDB ที่ฉลาดหลักแหลม ไม่จำเป็นต้องใช้ JSON แบบไบนารีตามมาตรฐานของเราตัวแยกวิเคราะห์ JSON ของเรานั้นเร็วในข้อความ JSON เป็น MySQL บนไบนารี JSON นั่นคือใน MariaDB หนึ่งสามารถ VARCHAR หรือ TEXT สำหรับ JSON หากจำเป็นต้องมีการตรวจสอบความถูกต้องสามารถทำได้ด้วยข้อ จำกัด การตรวจสอบ:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

เราจะเพิ่ม JSON "type" เพื่อความเข้ากันได้ของ MySQL

จากการอ่านของฉันนั่นไม่ใช่จุดของไบนารี JSON ลองอ้างอิงเอกสาร MySQL

รูปแบบไบนารีมีโครงสร้างเพื่อให้เซิร์ฟเวอร์สามารถค้นหา subobjects หรือค่าที่ซ้อนกันโดยตรงโดยคีย์หรือดัชนีอาร์เรย์โดยไม่ต้องอ่านค่าทั้งหมดก่อนหรือหลังพวกเขาในเอกสาร

อีกครั้งของ PostgreSQLjsonbไม่มากไปกว่านั้น

ข้อมูล jsonb ถูกจัดเก็บในรูปแบบไบนารีที่แยกย่อยซึ่งทำให้อินพุตช้าลงเล็กน้อยเนื่องจากค่าใช้จ่ายในการแปลงเพิ่ม แต่ประมวลผลได้เร็วกว่ามากเนื่องจากไม่จำเป็นต้องทำการวิเคราะห์ซ้ำ jsonb ยังรองรับการจัดทำดัชนีซึ่งอาจเป็นข้อได้เปรียบที่สำคัญ

TLDR; Maria DB ยังไม่มีประเภท JSON แม้ว่าจะได้รับ "ประเภท" มันเป็นเพียงเสื้อคลุมบาง ๆ มากกว่าการตรวจสอบข้อความ (เช่นjsonประเภทของ PostgreSQL ) ไม่มีแผนสำหรับประเภท JSON แบบไบนารี (เช่น PostgreSQL jsonb) เนื่องจากผู้พัฒนาดูเหมือนจะไม่เข้าใจข้อดี


1
ผู้ใช้ไม่สนใจว่า JSON ใน Postgres จะถูกจัดเก็บหรือแยกส่วนประกอบหรือไม่ json เป็นไบนารีหรือไม่ สำคัญสำหรับ JSON ก) สิ่งที่คุณใส่คุณออกไปและมีความเป็นไปได้ที่จะตรวจสอบอินพุตที่ถูกต้อง b) คุณสามารถสร้างดัชนีและค้นหาบางส่วนของ JSON 3) มีฟังก์ชั่นการใช้งาน
Vladislav Vaintroub
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.