MariaDB có hỗ trợ kiểu dữ liệu cột JSON gốc không?


13

Tôi không nói về các cột động, tôi đang hỏi về kiểu dữ liệu JSON của cột gốc. Nói một cách đơn giản, tôi có thể chạy mã sau trên bất kỳ phiên bản MariaDB nào không?

CREATE TABLE example (names JSON);

Theo như tôi biết, thì không nhưng tôi vẫn không chắc vì có rất nhiều chủ đề nói về hỗ trợ JSON trên MariaDB từ lâu, nhưng không ai nói rằng cuối cùng nó đã được thực hiện.

- Cập nhật -

Chỉ tìm thấy ba vấn đề vẫn mở trên MariaDB Jira về hỗ trợ kiểu dữ liệu JSON, có nghĩa là nó vẫn chưa được triển khai, phải không?


Bản cập nhật đó không nên có trong câu hỏi, đó là câu trả lời. Bạn nên di chuyển nó ra và tự trả lời. @Oranranic.
Evan Carroll

> JSON là bí danh cho LONGTEXT được giới thiệu vì lý do tương thích với kiểu dữ liệu JSON của MySQL. mariadb.com/kb/en/l Library / json
zx1986

Câu trả lời:


7

Hỗ trợ JSON sẽ đến với MariaDB 10.2. Xem bài đăng trên blog MariaDB chính thức từ ngày 28.02.2017. Có một số câu lệnh SQL và xác nhận hợp lệ.

JSON nhanh chóng trở thành định dạng chuẩn để trao đổi dữ liệu và cho dữ liệu phi cấu trúc và MariaDB 10.2 thêm một phạm vi vào các hàm hỗ trợ JSON, ngay cả khi kiểu dữ liệu JSON chưa được triển khai. Có một số lý do tại sao không có kiểu dữ liệu JSON, nhưng một lý do là thực sự không có nhiều ưu điểm như vậy vì JSON là định dạng dựa trên văn bản. Bài đăng trên blog này nhằm mô tả JSON và các trường hợp sử dụng cho nó, cũng như để mô tả các hàm và sử dụng JSON của MariaDB 10.2, cũng như hiển thị một số bổ sung khác cho MariaDB 10.2 hữu ích cho việc xử lý JSON.


2
Cho đến 10.2.6, chưa hỗ trợ JSON gốc.
kittygirl

1
Họ lưu trữ json dưới dạng văn bản đơn giản vào ngày 10.3
Musa Haidari

5

Nó phụ thuộc vào ý của bạn khi bạn nói "kiểu dữ liệu". Một số cơ sở dữ liệu như PostgreSQL, có kiểu dữ liệu JSON cho phép tìm kiếm toàn văn bản, cơ chế lưu trữ nhị phân, lập chỉ mục và bộ toán tử đầy đủ để truy cập dữ liệu. Maria chưa có điều đó. Kiểu dữ liệu cụ thể đang được theo dõi bởi MDEV-9144 .

Mặc dù vậy, mang đến một loại rất hạn chế cho MySQL, từ một trong những người duy trì lỗi,

Kiểu dữ liệu JSON mâu thuẫn trực tiếp với tiêu chuẩn SQL, nghĩa là, các hàm JSON_ * lấy một chuỗi làm đối số. Ngoài ra, MariaDB thông minh về tốc độ không cần JSON nhị phân, theo điểm chuẩn của chúng tôi, trình phân tích cú pháp JSON của chúng tôi cũng nhanh như JSON văn bản như MySQL trên JSON nhị phân. Đó là, trong MariaDB, người ta có thể VARCHAR hoặc TEXT cho JSON. Nếu cần xác thực, người ta có thể thực hiện với ràng buộc KIỂM TRA:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Tuy nhiên, chúng tôi sẽ thêm "loại" JSON để tương thích với MySQL.

Từ cách đọc của tôi, đó không chính xác là điểm của JSON nhị phân, hãy tham khảo các tài liệu MySQL

Định dạng nhị phân được cấu trúc để cho phép máy chủ tra cứu các tiểu dự án hoặc các giá trị lồng nhau trực tiếp theo khóa hoặc chỉ mục mảng mà không cần đọc tất cả các giá trị trước hoặc sau chúng trong tài liệu.

Một lần nữa, PostgreSQL cònjsonb làm được nhiều hơn thế.

dữ liệu jsonb được lưu trữ ở định dạng nhị phân phân tách khiến đầu vào chậm hơn một chút do chi phí chuyển đổi được thêm vào, nhưng nhanh hơn đáng kể để xử lý, vì không cần phải xử lý lại. jsonb cũng hỗ trợ lập chỉ mục, đây có thể là một lợi thế đáng kể.

tldr; Maria DB chưa có loại JSON. Ngay cả khi nó có "kiểu", nó chỉ là một trình bao bọc mỏng trên xác thực văn bản (như jsonkiểu của PostgreQuery ). Không có kế hoạch cho loại JSON nhị phân (như PostgreSQL jsonb) vì các nhà phát triển dường như không hiểu được lợi thế.


Người dùng thực sự không quan tâm liệu JSON trong Postgres được lưu trữ sáng tác hay phân tách, liệu json có phải là nhị phân hay không. Điều quan trọng là đối với JSON a) những gì bạn đặt nó, bạn nhận ra và có khả năng kiểm tra đầu vào hợp lệ. b) bạn có thể lập chỉ mục và tìm kiếm các phần của JSON. 3) Có chức năng để hoạt động trên nó.
Vladislav Vaintroub
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.