of 90 /90
1 / 90

Jeudis du Libre - MySQL comme Document Store

Embed Size (px)

Text of Jeudis du Libre - MySQL comme Document Store

  • 1 / 90

  • 2 / 90

  • Safe Harbor StatementThe following is intended to outline our general product direction. It is intended forinformation purpose only, and may not be incorporated into any contract. It is not acommitment to deliver any material, code, or functionality, and should not be relied up inmaking purchasing decisions. The development, release and timing of any features orfunctionality described for Oracle's product remains at the sole discretion of Oracle.

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    3 / 90

  • about.me/lefred

    Qui suis-je ?

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    4 / 90

  • Frdric [email protected] MySQLBidouille MySQL depuis la version 3.23devops croyant et praticantMySQL Community Manager depuis mai2016

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    5 / 90

  • SGDB & MySQL

    Base de donnes Relationnelles

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    6 / 90

  • Bases de donnes RelationnellesIntgrit des donnes

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    7 / 90

  • Bases de donnes RelationnellesIntgrit des donnes

    normalization

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    8 / 90

  • Bases de donnes RelationnellesIntgrit des donnes

    normalizationcontraintes (cls trangres, ...)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    9 / 90

  • Bases de donnes RelationnellesIntgrit des donnes

    normalizationcontraintes (cls trangres, ...)

    Atomicit, Cohrence, Isolarion et Durabilit - ACID

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    10 / 90

  • Bases de donnes RelationnellesIntgrit des donnes

    normalizationcontraintes (cls trangres, ...)

    Atomicit, Cohrence, Isolarion et Durabilit - ACIDtransactions

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    11 / 90

  • Bases de donnes RelationnellesIntgrit des donnes

    normalizationcontraintes (cls trangres, ...)

    Atomicit, Cohrence, Isolarion et Durabilit - ACIDtransactions

    SQL

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    12 / 90

  • Bases de donnes RelationnellesIntgrit des donnes

    normalizationcontraintes (cls trangres, ...)

    Atomicit, Cohrence, Isolarion et Durabilit - ACIDtransactions

    SQLpuissant language de requtes

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    13 / 90

  • SGDB & MySQL

    Base de donnes NoSQL

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    14 / 90

  • NoSQL ou Document StoreSans schma

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    15 / 90

  • NoSQL ou Document StoreSans schma

    pas de design de schmas, pas de normalization, de cls trangres, decontraintes, de type de donnes (data types), etc...

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    16 / 90

  • NoSQL ou Document StoreSans schma

    pas de design de schmas, pas de normalization, de cls trangres, decontraintes, de type de donnes (data types), etc...dvelopement initial trs rapide

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    17 / 90

  • NoSQL ou Document StoreSans schma

    pas de design de schmas, pas de normalization, de cls trangres, decontraintes, de type de donnes (data types), etc...dvelopement initial trs rapide

    Structures flexibles des donnes

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    18 / 90

  • NoSQL ou Document StoreSans schma

    pas de design de schmas, pas de normalization, de cls trangres, decontraintes, de type de donnes (data types), etc...dvelopement initial trs rapide

    Structures flexibles des donnesobjets et tableaux imbriqus

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    19 / 90

  • NoSQL ou Document StoreSans schma

    pas de design de schmas, pas de normalization, de cls trangres, decontraintes, de type de donnes (data types), etc...dvelopement initial trs rapide

    Structures flexibles des donnesobjets et tableaux imbriquscertaines donnes sont simplement naturellement non structures et nepeuvent tre modlises de faon optimale dans un modle relationel

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    20 / 90

  • NoSQL ou Document StoreSans schma

    pas de design de schmas, pas de normalization, de cls trangres, decontraintes, de type de donnes (data types), etc...dvelopement initial trs rapide

    Structures flexibles des donnesobjets et tableaux imbriquscertaines donnes sont simplement naturellement non structures et nepeuvent tre modlises de faon optimale dans un modle relationelpersistence des objets sans utilisation d'un ORM (mapping objet-relationnel)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    21 / 90

  • NoSQL ou Document Store (2)JSON

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    22 / 90

  • NoSQL ou Document Store (2)JSON

    proche du frontend

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    23 / 90

  • NoSQL ou Document Store (2)JSON

    proche du frontend"natif " en Javascript

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    24 / 90

  • NoSQL ou Document Store (2)JSON

    proche du frontend"natif " en Javascriptutilis en Node.js

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    25 / 90

  • NoSQL ou Document Store (2)JSON

    proche du frontend"natif " en Javascriptutilis en Node.js

    Aprentissage facile, et facile utiliser

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    26 / 90

  • Les challenges actuelsles dveloppeurs veulent avancer plus rapidement

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    27 / 90

  • Les challenges actuelsles dveloppeurs veulent avancer plus rapidementle dlai de mise en production est un cot suprieur

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    28 / 90

  • Les challenges actuelsles dveloppeurs veulent avancer plus rapidementle dlai de mise en production est un cot suprieurrapidit de cration de prototypes, itrations rapides, ...

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    29 / 90

  • Avantages de SQL et de NoSQL

    NoSQL SQL

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    30 / 90

  • Et donc, Bases de donnes Relationnelles ou Document Store ??

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    31 / 90

  • Et donc, Bases de donnes Relationnelles ou Document Store ??

    Pourquoi pas les deux ?

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    32 / 90

  • Quelles sont les tapes ?

    NoSQL avec MySQL

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    33 / 90

  • Faire de MySQL un Document Store

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    34 / 90

  • Faire de MySQL un Document Store1. support de JSON datatype

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    35 / 90

  • Faire de MySQL un Document Store1. support de JSON datatype2. CRUD Operations

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    36 / 90

  • Faire de MySQL un Document Store1. support de JSON datatype2. CRUD Operations3. X Plugin

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    37 / 90

  • Faire de MySQL un Document Store1. support de JSON datatype2. CRUD Operations3. X Plugin4. X protocol & MySQL Shell

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    38 / 90

  • MySQL 5.7

    Support de JSON

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    39 / 90

  • Support JSONType natif de donnes (native datatype)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    40 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQL

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    41 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQLFormat de stokage JSON en binaire (UTF8MB4)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    42 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQLFormat de stokage JSON en binaire (UTF8MB4)Conversion partir des types SQL "natifs" vers des valeurs JSON

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    43 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQLFormat de stokage JSON en binaire (UTF8MB4)Conversion partir des types SQL "natifs" vers des valeurs JSONFunctions de manipulation du JSON

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    44 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQLFormat de stokage JSON en binaire (UTF8MB4)Conversion partir des types SQL "natifs" vers des valeurs JSONFunctions de manipulation du JSON

    extraire (JSON_EXTRACT, JSON_KEYS, ...)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    45 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQLFormat de stokage JSON en binaire (UTF8MB4)Conversion partir des types SQL "natifs" vers des valeurs JSONFunctions de manipulation du JSON

    extraire (JSON_EXTRACT, JSON_KEYS, ...)inpecter (JSON_CONTAINS, ...)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    46 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQLFormat de stokage JSON en binaire (UTF8MB4)Conversion partir des types SQL "natifs" vers des valeurs JSONFunctions de manipulation du JSON

    extraire (JSON_EXTRACT, JSON_KEYS, ...)inpecter (JSON_CONTAINS, ...)modifier (JSON_SET, JSON_INSERT, JSON_REMOVE, ...)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    47 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQLFormat de stokage JSON en binaire (UTF8MB4)Conversion partir des types SQL "natifs" vers des valeurs JSONFunctions de manipulation du JSON

    extraire (JSON_EXTRACT, JSON_KEYS, ...)inpecter (JSON_CONTAINS, ...)modifier (JSON_SET, JSON_INSERT, JSON_REMOVE, ...)cration de tableaux et d'objets (JSON_ARRAY, JSON_OBJECT)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    48 / 90

  • Support JSONType natif de donnes (native datatype)Valeurs en JSON stockes dans des tables MySQLFormat de stokage JSON en binaire (UTF8MB4)Conversion partir des types SQL "natifs" vers des valeurs JSONFunctions de manipulation du JSON

    extraire (JSON_EXTRACT, JSON_KEYS, ...)inpecter (JSON_CONTAINS, ...)modifier (JSON_SET, JSON_INSERT, JSON_REMOVE, ...)cration de tableaux et d'objets (JSON_ARRAY, JSON_OBJECT)recherche d'objets (JSON_SEARCH)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    49 / 90

  • Support JSON (2)Inline SQL JSON path expressions

    SELECT doc->'$.object.array[0].item' FROM some_table

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    50 / 90

  • Support JSON (2)Inline SQL JSON path expressions

    SELECT doc->'$.object.array[0].item' FROM some_table

    Oprateurs boolens (comparaison de valeurs JSON, ...)

    foo = doc->'$.eld'

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    51 / 90

  • Support JSON (3)

    le meilleur pour la fin...

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    52 / 90

  • Support JSON (3)

    le meilleur pour la fin...

    Colonnes Gnres/Virtuelles (generated/virtual columns)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    53 / 90

  • Support JSON (3)

    le meilleur pour la fin...

    Colonnes Gnres/Virtuelles (generated/virtual columns)Index de donnes JSON

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    54 / 90

  • Support JSON (3)

    le meilleur pour la fin...

    Colonnes Gnres/Virtuelles (generated/virtual columns)Index de donnes JSONCls trangres vers donnes JSON

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    55 / 90

  • Support JSON (3)

    le meilleur pour la fin...

    Colonnes Gnres/Virtuelles (generated/virtual columns)Index de donnes JSONCls trangres vers donnes JSONVues SQL pour des donnes JSON

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    56 / 90

  • Support JSON (3)

    le meilleur pour la fin...

    Colonnes Gnres/Virtuelles (generated/virtual columns)Index de donnes JSONCls trangres vers donnes JSONVues SQL pour des donnes JSON

    ALTER TABLE test_features ADD COLUMN street VARCHAR(30) GENERATED ALWAYS AS (json_unquote(json_extract(`feature`,'$.properties.STREET'))) VIRTUAL;

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    57 / 90

  • Document Store

    Oprations CRUD

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    58 / 90

  • Oprations CRUDCreate, Read, Update et Delete (CRUD) sont les 4 oprations qui peuvent tre excutessur une collection (Document Store Schema) ou une table.

    CREATE - collection.add()

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    59 / 90

  • Oprations CRUD (2)

    READ - collection.find()

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    60 / 90

  • Oprations CRUD (3)

    UPDATE - collection.modify()

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    61 / 90

  • Oprations CRUD (4)

    DELETE - collection.remove()

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    62 / 90

  • Document Store

    X Plugin

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    63 / 90

  • X PluginPlugin du serveur MySQL qui active la communication en utilisant le X Protocol.

    Ce pluging:

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    64 / 90

  • X PluginPlugin du serveur MySQL qui active la communication en utilisant le X Protocol.

    Ce pluging:

    supporte les clients ayant implment le X DevAPI

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    65 / 90

  • X PluginPlugin du serveur MySQL qui active la communication en utilisant le X Protocol.

    Ce pluging:

    supporte les clients ayant implment le X DevAPItransforme MySQL en Document Store.

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    66 / 90

  • X PluginPlugin du serveur MySQL qui active la communication en utilisant le X Protocol.

    Ce pluging:

    supporte les clients ayant implment le X DevAPItransforme MySQL en Document Store.

    mysql> INSTALL PLUGIN mysqlx SONAME "mysqlx.so"

    ou

    mysqlsh -u user --classic --dba enableXProtocol

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    67 / 90

  • Document Store

    X Protocol

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    68 / 90

  • X ProtocolProtocole qui permet de communiquer avec un MySQL Server sur lequel X Plugin est activ.

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    69 / 90

  • X ProtocolProtocole qui permet de communiquer avec un MySQL Server sur lequel X Plugin est activ.

    Et donc le X Protocol permet deffectuer des oparations CRUD et SQL, lauthentificationvia SASL, le "streaming" (pipelining) des commandes.

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    70 / 90

  • Document Store

    The X DevAPI

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    71 / 90

  • Oprations orientes Document via SQLTrs puissant

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    72 / 90

  • Oprations orientes Document via SQLTrs puissantPermet la construction de requtes complexes

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    73 / 90

  • Oprations orientes Document via SQLTrs puissantPermet la construction de requtes complexesMais... encore et toujours difficile utiliser pour les non initis

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    74 / 90

  • Oprations orientes Document via SQLTrs puissantPermet la construction de requtes complexesMais... encore et toujours difficile utiliser pour les non initis

    CREATE TABLE product ( id VARCHAR(32) GENERATED ALWAYS AS (JSON_EXTRACT(doc, '$.id')) STORED, doc JSON);INSERT INTO product VALUYES (1, '{...}');SELECT * FROM product WHERE JSON_EXTRACT(doc, '$.eld') = value;

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    75 / 90

  • The X DevAPIAbstraction au-dessus de SQL

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    76 / 90

  • The X DevAPIAbstraction au-dessus de SQLAx sur 4 oprations CRUD de base (Create, Read, Update, Delete)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    77 / 90

  • The X DevAPIAbstraction au-dessus de SQLAx sur 4 oprations CRUD de base (Create, Read, Update, Delete)Native Language API

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    78 / 90

  • The X DevAPIAbstraction au-dessus de SQLAx sur 4 oprations CRUD de base (Create, Read, Update, Delete)Native Language APIPas ncessaire de connatre le SQL

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    79 / 90

  • The X DevAPIAbstraction au-dessus de SQLAx sur 4 oprations CRUD de base (Create, Read, Update, Delete)Native Language APIPas ncessaire de connatre le SQLX Protocol

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    80 / 90

  • The X DevAPIAbstraction au-dessus de SQLAx sur 4 oprations CRUD de base (Create, Read, Update, Delete)Native Language APIPas ncessaire de connatre le SQLX Protocol

    les requtes CRUD sont encodes au niveau du protocol

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    81 / 90

  • Exemplemysql-py> mybooks.nd("Title LIKE 'Und%'")[ { "Authors": [ "Alexander Sasha Pachev", "Sasha Pachev" ], "ISBN-13": "9780596009571", "Language": "en", "Publisher": ""O'Reilly Media, Inc."", "Title": "Understanding MySQL Internals", "Year": "2007", "_id": "ce9fd5b762ffe6117055685b359e77d5" }]

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    82 / 90

  • Exemplemysql-py> mybooks.nd("Title LIKE 'Und%'")[ { "Authors": [ "Alexander Sasha Pachev", "Sasha Pachev" ], "ISBN-13": "9780596009571", "Language": "en", "Publisher": ""O'Reilly Media, Inc."", "Title": "Understanding MySQL Internals", "Year": "2007", "_id": "ce9fd5b762ffe6117055685b359e77d5" }]

    Et MySQL le transforme de manire transparente en:

    SELECT doc FROM `books`.`mybooks` WHERE (JSON_UNQUOTE(JSON_EXTRACT(doc,'$.Title')) LIKE 'Und%');

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    83 / 90

  • Document Store & X DevAPI & MySQL Shell

    petite dmo ?

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    84 / 90

  • Dmo (1)[[email protected] ~] $ mysqlsh --py Welcome to MySQL Shell 1.0.8-rc

    Copyright (c) 2016, 2017, Oracle and/or its afliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or itsafliates. Other names may be trademarks of their respectiveowners.

    Type '\help', '\h' or '\?' for help, type '\quit' or '\q' to exit.

    Currently in Python mode. Use \sql to switch to SQL mode and execute queries.mysql-py> \c [email protected] a Session to '[email protected]'Enter password: Node Session successfully established. No default schema selected.

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    85 / 90

  • Dmo (2)mysql-py> db=session.create_schema("books")mysql-py> mybooks=db.create_collection('mybooks')

    mysql-py> from isbntools.app import *

    mysql-py> isbn=9781449314286mysql-py> doc=meta(str(isbn))mysql-py> doc["Annee"]=doc.pop("Year")mysql-py> mybooks.add(doc)Query OK, 1 item affected (0.10 sec)

    mysql-py> isbn=9780596009571mysql-py> doc=meta(str(isbn))mysql-py> doc["Annee"]=doc.pop("Year")mysql-py> mybooks.add(doc)

    mysql-py> isbn=9781430230571mysql-py> doc=meta(str(isbn))mysql-py> doc["Annee"]=doc.pop("Year")mysql-py> mybooks.add(doc)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    86 / 90

  • Dmo (3)mysql-py> mybooks.nd()[ { "Authors": [ "Baron Schwartz", "Peter Zaitsev", "Vadim Tkachenko" ], "ISBN-13": "9781449314286", "Language": "en", "Publisher": ""O'Reilly Media, Inc."", "Title": "High Performance MySQL", "Annee": "2012", "_id": "66f01d3762ffe6117055685b359e77d5" }, ...]3 documents in set (0.00 sec)

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    87 / 90

  • Dmo (4)mysql-py> mybooks.nd("Title LIKE '%MySQL%'").elds(["Title","Annee"]).sort("Annee")[ { "Annee": "2007", "Title": "Understanding MySQL Internals" }, { "Annee": "2012", "Title": "High Performance MySQL" }]

    mysql-py> mybooks.create_index("Annee_idx").eld("Annee","TEXT(4)", False).execute();

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    88 / 90

  • Dmo (5)mysql> show create table books.mybooks\G *************************** 1. row *************************** Table: mybooksCreate Table: CREATE TABLE `mybooks` ( `doc` json DEFAULT NULL, `_id` varchar(32) GENERATED ALWAYS AS (json_unquote(json_extract(`doc`,'$._id'))) STORED NOT NULL, `$ix_t4_589943C550621CA4FF9A742745C76C955B6DDE8E` text GENERATED ALWAYS AS (json_unquote(json_extract(`doc`,'$.Annee'))) VIRTUAL, PRIMARY KEY (`_id`), KEY `Annee_idx` (`$ix_t4_589943C550621CA4FF9A742745C76C955B6DDE8E`(4))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    89 / 90

  • Merci

    Des Questions ?

    Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

    90 / 90