O MariaDB suporta o tipo de dados da coluna JSON nativa?

13

Não estou falando de colunas dinâmicas, estou perguntando sobre o tipo de dados JSON da coluna nativa. Em palavras simples, posso executar o seguinte código em qualquer versão do MariaDB?

CREATE TABLE example (names JSON);

Até onde eu sei, isso não acontece, mas ainda não tenho certeza, pois há muitos tópicos falando sobre o suporte a JSON no MariaDB há muito tempo, mas nenhum disse que finalmente foi implementado.

- Atualização -

Apenas encontrei três problemas ainda abertos no MariaDB Jira sobre o suporte ao tipo de dados JSON, o que significa que ainda não foi implementado, certo?

Omranic
fonte
Essa atualização não deve estar em questão, essa é a resposta. Você deve mudar isso e responder a si mesmo. @Omranic.
Evan Carroll
> JSON é um apelido para LONGTEXT introduzido por razões de compatibilidade com o tipo de dados JSON do MySQL. mariadb.com/kb/en/library/json-data-type
zx1986

Respostas:

7

O suporte JSON chegará ao MariaDB 10.2. Veja a publicação oficial do blog MariaDB de 28.02.2017. Existem alguns exemplos de instruções e validação SQL.

O JSON está rapidamente se tornando o formato padrão para intercâmbio de dados e dados não estruturados, e o MariaDB 10.2 adiciona um intervalo nas funções de suporte a JSON, mesmo que um tipo de dados JSON ainda não tenha sido implementado. Existem algumas razões pelas quais não há um tipo de dados JSON, mas uma é que, na verdade, não existem muitas vantagens nisso, pois o JSON é um formato baseado em texto. Esta postagem no blog tem como objetivo descrever o JSON e os casos de uso dele, bem como descrever as funções JSON do MariaDB 10.2 e seus usos, além de mostrar algumas outras adições ao MariaDB 10.2 que são úteis para o processamento do JSON.

Ivanov
fonte
2
Até 10.2.6, ainda não suporta JSON nativo.
kittyGirl
1
Eles armazenam o json como um texto sem formatação somente a partir de 10.3
Musa Haidari
5

Depende do que você quer dizer quando diz "tipo de dados". Alguns bancos de dados como o PostgreSQL, possuem um tipo de dados JSON que permite a pesquisa de texto completo, um mecanismo de armazenamento binário, indexação e um conjunto completo de operadores para acessar os dados. Maria ainda não tem isso. O tipo de dados especificamente está sendo rastreado pelo MDEV-9144 .

Mesmo assim, traz um tipo muito limitado ao MySQL, de um dos mantenedores de erros,

O tipo de dados JSON contradiz diretamente o padrão SQL, que diz que as funções JSON_ * usam uma sequência como argumento. Além disso, o MariaDB em velocidade não precisa de JSON binário, de acordo com nossos benchmarks, nosso analisador JSON é tão rápido no JSON de texto quanto o MySQL no JSON binário. Ou seja, no MariaDB, é possível VARCHAR ou TEXT for JSON. Se for necessária uma validação, é possível fazê-lo com uma restrição CHECK:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Nós vamos adicionar JSON "type" para compatibilidade com MySQL.

Pela minha leitura, esse não é exatamente o ponto do JSON binário, vamos nos referir aos documentos do MySQL

O formato binário é estruturado para permitir que o servidor pesquise subobjetos ou valores aninhados diretamente pelo índice de chave ou matriz sem ler todos os valores antes ou depois deles no documento.

Novamente, o PostgreSQLjsonb faz muito mais que isso.

Os dados do jsonb são armazenados em um formato binário decomposto que torna um pouco mais lento a entrada devido à sobrecarga adicional da conversão, mas significativamente mais rápido de processar, pois não é necessária nenhuma nova correção. O jsonb também suporta indexação, o que pode ser uma vantagem significativa.

tldr; Maria DB ainda não tem um tipo JSON. Mesmo quando obtém o "tipo", é apenas um invólucro fino sobre uma validação de texto (como o jsontipo do PostgreSQL ). Não há planos para um tipo JSON binário (como o PostgreSQL jsonb) porque os desenvolvedores aparentemente não entendem as vantagens.

Evan Carroll
fonte
O usuário realmente não se importa se o JSON no Postgres é armazenado composto ou decomposto, se o json é binário ou não. Importante é para o JSON a) o que você coloca, sai e existe a possibilidade de verificar a entrada válida. b) você pode indexar e procurar partes do JSON. 3) Existem funções para operar nele.
Vladislav Vaintroub