Apakah MariaDB mendukung tipe data kolom JSON asli?

13

Saya tidak berbicara tentang kolom dinamis, saya bertanya tentang tipe data JSON kolom asli. Dengan kata sederhana, dapatkah saya menjalankan kode berikut pada versi MariaDB?

CREATE TABLE example (names JSON);

Sejauh yang saya tahu, itu tidak tetapi saya masih tidak yakin karena ada banyak topik berbicara tentang dukungan JSON di MariaDB selama berabad-abad, tetapi tidak ada yang mengatakan itu akhirnya dilaksanakan.

- Perbarui -

Baru menemukan tiga masalah masih terbuka di MariaDB Jira tentang dukungan tipe data JSON, yang berarti masih belum diimplementasikan, kan?

Omranic
sumber
Pembaruan itu seharusnya tidak ada dalam pertanyaan, itulah jawabannya. Anda harus memindahkannya dan menjawab sendiri. @ Otak.
Evan Carroll
> JSON adalah alias untuk LONGTEXT yang diperkenalkan karena alasan kompatibilitas dengan tipe data JSON MySQL. mariadb.com/kb/en/library/json-data-type
zx1986

Jawaban:

7

Dukungan JSON akan datang ke MariaDB 10.2. Lihat posting blog MariaDB resmi dari 28.02.2017. Ada beberapa contoh pernyataan dan validasi SQL.

JSON dengan cepat menjadi format standar untuk pertukaran data dan untuk data yang tidak terstruktur, dan MariaDB 10.2 menambahkan kisaran fungsi pendukung JSON, meskipun tipe data JSON belum diimplementasikan. Ada beberapa alasan mengapa tidak ada tipe data JSON, tetapi satu adalah bahwa sebenarnya tidak ada banyak manfaat untuk itu karena JSON adalah format berbasis teks. Posting blog ini bertujuan untuk menggambarkan JSON dan kasus penggunaan untuknya, serta untuk mendeskripsikan fungsi dan penggunaan JSON MariaDB 10.2 untuk ini, serta menunjukkan beberapa tambahan lain untuk MariaDB 10.2 yang berguna untuk pemrosesan JSON.

Ivanov
sumber
2
Hingga 10.2.6, belum mendukung JSON asli.
kittygirl
1
Mereka menyimpan json sebagai teks biasa hanya pada 10.3
Musa Haidari
5

Itu tergantung pada apa yang Anda maksud ketika Anda mengatakan "tipe data". Beberapa database seperti PostgreSQL, memiliki tipe data JSON yang memungkinkan pencarian teks lengkap, mekanisme penyimpanan biner, pengindeksan, dan rangkaian lengkap operator untuk mengakses data. Maria belum memilikinya. Tipe data secara khusus dilacak oleh MDEV-9144 .

Meskipun begitu, membawa tipe yang sangat terbatas ke MySQL, dari salah satu pengelola bug,

Tipe data JSON secara langsung bertentangan dengan standar SQL, yang mengatakan, bahwa fungsi JSON_ mengambil string sebagai argumen. Juga, MariaDB kecepatan-bijaksana tidak perlu JSON biner, menurut tolok ukur kami, parser JSON kami secepat JSON teks seperti MySQL pada biner JSON. Artinya, di MariaDB orang bisa VARCHAR atau TEXT untuk JSON. Jika validasi diperlukan, seseorang dapat melakukannya dengan kendala PERIKSA:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Kami akan menambahkan "tipe" JSON untuk kompatibilitas MySQL.

Dari bacaan saya, itu bukan titik biner JSON mari kita merujuk ke dokumen MySQL

Format biner disusun untuk memungkinkan server mencari sub-objek atau nilai-nilai bersarang secara langsung dengan indeks kunci atau array tanpa membaca semua nilai sebelum atau sesudahnya dalam dokumen.

Sekali lagi, PostgreSQLjsonb tidak banyak lebih dari itu.

data jsonb disimpan dalam format biner terurai yang membuatnya sedikit lebih lambat untuk input karena penambahan overhead konversi, tetapi secara signifikan lebih cepat untuk diproses, karena tidak diperlukan reparsing. jsonb juga mendukung pengindeksan, yang bisa menjadi keuntungan yang signifikan.

tldr; Maria DB belum memiliki tipe JSON. Bahkan ketika mendapat "tipe" itu hanya pembungkus tipis di atas validasi teks (seperti jsontipe PostgreSQL ). Tidak ada rencana untuk jenis JSON biner (seperti PostgreSQL jsonb) karena pengembang tampaknya tidak memahami kelebihannya.

Evan Carroll
sumber
Pengguna benar-benar tidak peduli apakah JSON di Postgres disimpan atau didekomposisi, apakah json adalah biner atau tidak. Penting untuk JSON a) apa yang Anda masukkan, Anda keluar, dan ada kemungkinan untuk memeriksa input yang valid. b) Anda dapat mengindeks dan mencari bagian-bagian JSON. 3) Ada fungsi untuk mengoperasikannya.
Vladislav Vaintroub