JSON en base de données,
manipulons un peu cela

2020-10 @Grummfy

JSON en DB?

  • DB relationnel
  • JSON
    • simple et lisible
    • transversale au langage
    • "validable"
  • alternatives
    • vs serialize()
    • vs blob, text, ...
    • vs N colonnes
    • ...

Structure de DB simplifiée

VS

DB Structure

Simple

=>

type JSON

MySql vs MariaDb vs PostgreSql

MySql MariaDb PostgreSql
json column ✘*
jsonb column
index ✘** ✘**

mysql 5.7 - octobre 2015
mariadb 10.2 - avril 2016
postgresql 9.2 - septembre 2013

php 5.6 (EOL) <-> PHP 7.1 (EOL)

Index sur un champ

  • MySql
    • "GENERATED ALWAYS"
  • MariaDB
    • "virtual column"
  • PostgreSql
    • même stratégie
    • recommande jsonb

Manipulation

  • fonction JSON_*
    • lire, écrire, chercher, transformer, ...
  • short syntax
    • lire, extraire de la valeur
    • ->, ->> (champs)
    • #>, #>> (chemin)

Manipulation - lire/ecrire

  • recherche
    • JSON_CONTAINS, JSON_EXTRACT, JSON_UNQUOTE, JSON_TABLE ...
      • JSON_EXTRACT(field, "$.id") field->$.id
    • valeur, clef, type, collection, ...
  • modification
    • JSON_ARRAY_*, JSON_INSERT, JSON_REPLACE, ...
      • JSON_REPLACE(field, '$.a', 10)
    • complet ou partiel

ORM

Quand utiliser du JSON ?

  • Value Object
  • Collection de V.O.
  • Structure/déstructure simple
  • ...

It depends!

Performances

Je n'ai pas fait de test, car je n'ai jamais rencontré de soucis

¯\_(ツ)_/¯

Il faut des problèmes pour pouvoir évaluer la performances

Questions ?

Grummfy

Jonathan Van Belle

@Grummfy

@Grummfy@mamot.fr

me@grummfy.be

github.com/grummfy

gitlab.com/grummfy