web-dev-qa-db-fra.com

MariaDB prend-il en charge le type de données de colonne JSON natif?

Je ne parle pas des colonnes dynamiques, je pose des questions sur le type de données JSON des colonnes natives. En termes simples, puis-je exécuter le code suivant sur n'importe quelle version de MariaDB?

CREATE TABLE example (names JSON);

Pour autant que je sache, ce n'est pas le cas, mais je ne suis toujours pas sûr car il y a beaucoup de sujets qui parlent de la prise en charge JSON sur MariaDB depuis des lustres, mais aucun n'a dit qu'il était finalement implémenté.

-- Mise à jour --

Je viens de trouver trois problèmes encore ouverts sur MariaDB Jira concernant la prise en charge du type de données JSON, ce qui signifie qu'il n'est toujours pas encore implémenté, non?

13
Omranic

Le support JSON viendra à MariaDB 10.2. Voir le blog officiel de MariaDB du 28.02.2017. Il existe quelques exemples d'instructions SQL et de validation.

JSON devient rapidement le format standard pour l'échange de données et pour les données non structurées, et MariaDB 10.2 ajoute une gamme sur les fonctions de support JSON, même si un type de données JSON n'est pas encore implémenté. Il y a quelques raisons pour lesquelles il n'y a pas de type de données JSON, mais l'une est qu'il n'y a en fait pas beaucoup d'avantages car JSON est un format texte. Ce billet de blog vise à décrire JSON et ses cas d'utilisation, ainsi qu'à décrire les fonctions JSON de MariaDB 10.2 et leurs utilisations, ainsi qu'à montrer quelques autres ajouts à MariaDB 10.2 qui sont utiles pour le traitement JSON.

7
Ivanov

Cela dépend de ce que vous voulez dire lorsque vous dites "type de données". Certaines bases de données comme PostgreSQL, ont un type de données JSON qui permet la recherche en texte intégral, un mécanisme de stockage binaire, l'indexation et une suite complète d'opérateurs pour accéder aux données. Maria n'a pas encore ça. Le type de données en particulier est suivi par MDEV-9144 .

Même si cela apporte un type limité très à MySQL, de l'un des responsables de bogues,

Le type de données JSON contredit directement la norme SQL, c'est-à-dire que les fonctions JSON_ * prennent une chaîne en argument. En outre, en termes de vitesse MariaDB n'a pas besoin de JSON binaire, selon nos benchmarks, notre analyseur JSON est aussi rapide sur JSON texte que MySQL sur JSON binaire. Autrement dit, dans MariaDB, on pourrait VARCHAR ou TEXT pour JSON. Si une validation est nécessaire, on peut le faire avec une contrainte CHECK:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Nous ajouterons cependant le "type" JSON pour la compatibilité avec MySQL.

D'après ma lecture, ce n'est pas exactement le point de JSON binaire, nous allons nous référer aux documents MySQL

Le format binaire est structuré pour permettre au serveur de rechercher des sous-objets ou des valeurs imbriquées directement par clé ou index de tableau sans lire toutes les valeurs avant ou après dans le document.

Encore une fois, jsonb de PostgreSQL fait beaucoup plus que cela.

les données jsonb sont stockées dans un format binaire décomposé qui les rend légèrement plus lentes à entrer en raison de la surcharge de conversion ajoutée, mais nettement plus rapides à traiter, car aucune nouvelle analyse n'est nécessaire. jsonb prend également en charge l'indexation, ce qui peut être un avantage significatif.

tldr; Maria DB n'a pas encore de type JSON. Même quand il obtient le "type", c'est juste une enveloppe mince sur une validation de texte (comme le type json de PostgreSQL). Il n'y a pas de plan pour un type JSON binaire (comme jsonb de PostgreSQL) car les développeurs ne comprennent apparemment pas les avantages.

6
Evan Carroll