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


13

Je ne parle pas de colonnes dynamiques, je pose des questions sur le type de données JSON de la colonne native. 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 du support JSON sur MariaDB depuis des lustres, mais aucun n'a dit qu'il a finalement été 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?


Cette mise à jour ne devrait pas être dans la question, c'est la réponse. Vous devez déplacer cela et répondre par vous-même. @Omranic.
Evan Carroll

> JSON est un alias pour LONGTEXT introduit pour des raisons de compatibilité avec le type de données JSON de MySQL. mariadb.com/kb/en/library/json-data-type
zx1986

Réponses:


7

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.


2
Jusqu'à 10.2.6, ne prend pas encore en charge le JSON natif.
kittygirl

1
Ils stockent le json sous forme de texte brut uniquement à partir du 10.3
Musa Haidari

5

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 est spécifiquement suivi par MDEV-9144 .

Même si cela apporte un type très limité à 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. De plus, MariaDB en termes de vitesse 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 index de clé ou de tableau sans lire toutes les valeurs avant ou après dans le document.

Encore une fois, PostgreSQLjsonb fait bien 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 jsontype de PostgreSQL ). Il n'y a pas de plan pour un type JSON binaire (comme celui de PostgreSQL jsonb) car les développeurs ne comprennent apparemment pas les avantages.


L'utilisateur ne se soucie vraiment pas de savoir si JSON dans Postgres est stocké composé ou décomposé, que json soit binaire ou non. L'important est pour JSON a) ce que vous mettez, vous sortez et il y a une possibilité de vérifier une entrée valide. b) vous pouvez indexer et rechercher des parties de JSON. 3) Il existe des fonctions pour l'utiliser.
Vladislav Vaintroub
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.