MariaDB yerel JSON sütun veri türünü destekliyor mu?


13

Dinamik sütunlardan bahsetmiyorum, yerel sütun JSON veri türünü soruyorum. Basit bir deyişle, herhangi bir MariaDB sürümünde aşağıdaki kodu çalıştırabilir miyim?

CREATE TABLE example (names JSON);

Bildiğim kadarıyla, emin değilim ama hala emin değilim çünkü MariaDB'de JSON desteği hakkında uzun zamandır konuşulan pek çok konu var, ancak hiçbiri sonunda uygulandığını söylemedi.

-- Güncelleme --

Sadece MariaDB Jira'da JSON veri türü desteği ile ilgili hala açık olan üç sorun bulundu, yani hala uygulanmadı, değil mi?


Bu güncelleme söz konusu olmamalı, cevap bu. Bunu dışarı çıkarmalı ve kendi kendine cevap vermelisin. @Omranic.
Evan Carroll

> JSON, MySQL'in JSON veri türüyle uyumluluk nedeniyle tanıtılan LONGTEXT için bir takma addır. mariadb.com/kb/tr/library/json-data-type
zx1986

Yanıtlar:


7

JSON desteği MariaDB 10.2'ye gelecek. 28.02.2017 tarihli resmi MariaDB blog yayınına bakın . Bazı örnek SQL ifadeleri ve doğrulama vardır.

JSON, hızlı bir şekilde veri değişimi ve yapılandırılmamış veriler için standart biçim haline geliyor ve MariaDB 10.2, henüz bir JSON veri türü uygulanmamış olsa bile, JSON destekleme işlevlerine bir dizi ekliyor. JSON veri türü olmamasının bazı nedenleri vardır, ancak bir tanesi, JSON'un metin tabanlı bir format olduğu için aslında bunun pek çok avantajı olmamasıdır. Bu blog yazısı, JSD ve bunun için kullanım örneklerini ve bunun yanı sıra MariaDB 10.2 JSON işlevlerini ve bunların kullanımlarını açıklamanın yanı sıra, MariaDB 10.2'ye JSON işlemesi için yararlı olan bazı eklemeler de göstermeyi amaçlamaktadır.


2
10.2.6'ya kadar, henüz yerel JSON'u desteklemiyor.
kittygirl

1
Json'u sadece 10.3'ten itibaren düz bir metin olarak saklarlar
Musa Haidari

Hala 2020-04'te MariaDB 10.5.2-beta ile, JSON hala LONGTEXT için bir takma addır, uygun bir JSON veri tipine sahip değiller (henüz?) - ancak MySQL 2015-08'den beri destekledi
hanshenrik

6

"Veri türü" derken ne demek istediğinize bağlıdır. PostgreSQL gibi bazı veritabanlarında, tam metin aramasına, ikili bir depolama mekanizmasına, dizine eklemeye ve tam işleç grubunun verilere erişmesine izin veren bir JSON veri türü vardır. Maria henüz buna sahip değil. Veri tipi özellikle MDEV-9144 tarafından izlenmektedir .

Yine de, hata koruyucularından birinden MySQL'e çok sınırlı bir tür getiriyor ,

JSON veri türü, JSON_ * işlevlerinin bir dizeyi bağımsız değişken olarak aldığını söyleyen SQL standardıyla doğrudan çelişir. Ayrıca, hız açısından MariaDB'nin ikili JSON'a ihtiyacı yoktur, kıyaslamalarımıza göre, JSON ayrıştırıcımız JSON metninde ikili JSON'daki MySQL kadar hızlıdır. Yani, MariaDB'de biri JSON için VARCHAR veya TEXT olabilir. Doğrulama gerekiyorsa, bunu CHECK kısıtlamasıyla yapabilirsiniz:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Yine de MySQL uyumluluğu için JSON "type" ekleyeceğiz.

Benim okumaya göre, bu tam olarak ikili JSON'un noktası değil, MySQL belgelerine bakalım

İkili biçim, sunucunun alt nesneleri veya iç içe değerleri, belgede önce veya sonra tüm değerleri okumadan doğrudan anahtar veya dizi diziniyle arayabilmesini sağlamak için yapılandırılmıştır.

Yine, PostgreSQL enjsonb does çok daha fazla.

jsonb verileri, eklenen dönüştürme yükü nedeniyle girişi biraz yavaşlatan, yeniden işlemeye gerek olmadığından işlemek için önemli ölçüde daha hızlı olan ayrıştırılmış bir ikili biçimde saklanır. jsonb ayrıca önemli bir avantaj olabilecek endekslemeyi de destekler.

TLDR; Maria DB henüz bir JSON tipine sahip değil. "Türü" aldığında bile, metin doğrulama (PostgreSQL'in jsontürü gibi ) üzerinde ince bir sargıdır . İkili bir JSON türü (PostgreSQL gibi jsonb) için bir plan yoktur, çünkü geliştiriciler görünüşte avantajları anlamıyorlar.


1
Kullanıcı gerçekten jg ikili olsun ya da olmasın Postgres JSON oluşan ya da ayrıştırılmış saklanır umurumda değil. Önemli JSON için a) ne koyduğunuz, dışarı çıkıyorsunuz ve geçerli girişi kontrol etme olasılığı var. b) JSON bölümlerini indeksleyebilir ve arayabilirsiniz. 3) Üzerinde çalışacak fonksiyonlar vardır.
Vladislav Vaintroub
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.