1 / 90
2 / 90
 
Safe Harbor Statement
The following is intended to outline our generalproduct direction. It isintended for
information purpose only, and may not be incorporated into any contract. It isnot a
commitment to deliver any material, code, or functionality, and should not be relied up in
making purchasing decisions. Thedevelopment, release and timing of any features or
functionality described for Oracle's product remains at thesole 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
Frédéric Descamps
@lefred
Évangéliste MySQL
BidouilleMySQLdepuis la version 3.23
devops croyant et praticant
MySQLCommunity Manager depuis mai
2016
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
5 / 90
SGDB & MySQL
Base de données Relationnelles
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
6 / 90
Bases de données Relationnelles
Intégrité des données
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
7 / 90
Bases de données Relationnelles
Intégrité des données
normalization
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
8 / 90
Bases de données Relationnelles
Intégrité des données
normalization
contraintes (clés étrangères, ...)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
9 / 90
Bases de données Relationnelles
Intégrité des données
normalization
contraintes (clés étrangères, ...)
Atomicité, Cohérence, Isolarion et Durabilité - ACID
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
10 / 90
Bases de données Relationnelles
Intégrité des données
normalization
contraintes (clés étrangères, ...)
Atomicité, Cohérence, Isolarion et Durabilité - ACID
transactions
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
11 / 90
Bases de données Relationnelles
Intégrité des données
normalization
contraintes (clés étrangères, ...)
Atomicité, Cohérence, Isolarion et Durabilité - ACID
transactions
SQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
12 / 90
Bases de données Relationnelles
Intégrité des données
normalization
contraintes (clés étrangères, ...)
Atomicité, Cohérence, Isolarion et Durabilité - ACID
transactions
SQL
puissant language de requêtes
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
13 / 90
SGDB & MySQL
Base de données NoSQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
14 / 90
NoSQL ou Document Store
Sans schéma
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
15 / 90
NoSQL ou Document Store
Sans schéma
pas de design de schémas, pasde normalization, de clés étrangères, de
contraintes, de type de données (data types), etc...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
16 / 90
NoSQL ou Document Store
Sans schéma
pas de design de schémas, pasde normalization, de clés étrangères, de
contraintes, de type de données (data types), etc...
dévelopement initial très rapide
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
17 / 90
NoSQL ou Document Store
Sans schéma
pas de design de schémas, pasde normalization, de clés étrangères, de
contraintes, de type de données (data types), etc...
dévelopement initial très rapide
Structures flexibles des données
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
18 / 90
NoSQL ou Document Store
Sans schéma
pas de design de schémas, pasde normalization, de clés étrangères, de
contraintes, de type de données (data types), etc...
dévelopement initial très rapide
Structures flexibles des données
objets et tableaux imbriqués
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
19 / 90
NoSQL ou Document Store
Sans schéma
pas de design de schémas, pasde normalization, de clés étrangères, de
contraintes, de type de données (data types), etc...
dévelopement initial très rapide
Structures flexibles des données
objets et tableaux imbriqués
certaines données sont simplement naturellement non structurées et ne
peuvent être modélisées de façon optimale dans un modèle relationel
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
20 / 90
NoSQL ou Document Store
Sans schéma
pas de design de schémas, pasde normalization, de clés étrangères, de
contraintes, de type de données (data types), etc...
dévelopement initial très rapide
Structures flexibles des données
objets et tableaux imbriqués
certaines données sont simplement naturellement non structurées et ne
peuvent être modélisées de façon optimale dans un modèle relationel
persistence 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 Javascript
utilisé 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 Javascript
utilisé en Node.js
Aprentissage facile, et facile àutiliser
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
26 / 90
Les challenges actuels
les développeurs veulent avancer plus rapidement
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
27 / 90
Les challenges actuels
les développeurs veulent avancer plus rapidement
le délai de mise en productionest un coût supérieur
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
28 / 90
Les challenges actuels
les développeurs veulent avancer plus rapidement
le délai de mise en productionest un coût supérieur
rapidité de création de prototypes, itérations 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 données Relationnelles ou Document Store ??
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
31 / 90
Et donc, Bases de données 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 Store
1.support de JSON datatype
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
35 / 90
Faire de MySQL un Document Store
1.support de JSON datatype
2.CRUD Operations
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
36 / 90
Faire de MySQL un Document Store
1.support de JSON datatype
2.CRUD Operations
3.X Plugin
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
37 / 90
Faire de MySQL un Document Store
1.support de JSON datatype
2.CRUD Operations
3.X Plugin
4.X protocol &MySQLShell
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 JSON
Type natif de données (native datatype)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
40 / 90
Support JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
41 / 90
Support JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Format de stokage JSON en binaire (UTF8MB4)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
42 / 90
Support JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Format de stokage JSON en binaire (UTF8MB4)
Conversion à partir des typesSQL"natifs" vers des valeurs JSON
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
43 / 90
Support JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Format de stokage JSON en binaire (UTF8MB4)
Conversion à partir des typesSQL"natifs" vers des valeurs JSON
Functions de manipulation du JSON
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
44 / 90
Support JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Format de stokage JSON en binaire (UTF8MB4)
Conversion à partir des typesSQL"natifs" vers des valeurs JSON
Functions de manipulation du JSON
extraire (JSON_EXTRACT, JSON_KEYS, ...)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
45 / 90
Support JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Format de stokage JSON en binaire (UTF8MB4)
Conversion à partir des typesSQL"natifs" vers des valeurs JSON
Functions 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 JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Format de stokage JSON en binaire (UTF8MB4)
Conversion à partir des typesSQL"natifs" vers des valeurs JSON
Functions 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 JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Format de stokage JSON en binaire (UTF8MB4)
Conversion à partir des typesSQL"natifs" vers des valeurs JSON
Functions de manipulation du JSON
extraire (JSON_EXTRACT, JSON_KEYS, ...)
inpecter (JSON_CONTAINS, ...)
modifier (JSON_SET, JSON_INSERT, JSON_REMOVE, ...)
création de tableaux et d'objets (JSON_ARRAY, JSON_OBJECT)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
48 / 90
Support JSON
Type natif de données (native datatype)
Valeurs en JSON stockées dansdes tables MySQL
Format de stokage JSON en binaire (UTF8MB4)
Conversion à partir des typesSQL"natifs" vers des valeurs JSON
Functions de manipulation du JSON
extraire (JSON_EXTRACT, JSON_KEYS, ...)
inpecter (JSON_CONTAINS, ...)
modifier (JSON_SET, JSON_INSERT, JSON_REMOVE, ...)
création 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
Opérateurs booléens (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 Générées/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 Générées/Virtuelles(generated/virtual columns)
Index de données JSON
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
54 / 90
Support JSON (3)
le meilleur pour la fin...
Colonnes Générées/Virtuelles(generated/virtual columns)
Index de données JSON
Clés étrangères vers données JSON
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
55 / 90
Support JSON (3)
le meilleur pour la fin...
Colonnes Générées/Virtuelles(generated/virtual columns)
Index de données JSON
Clés étrangères vers données JSON
Vues SQL pour des données JSON
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
56 / 90
Support JSON (3)
le meilleur pour la fin...
Colonnes Générées/Virtuelles(generated/virtual columns)
Index de données JSON
Clés étrangères vers données JSON
Vues SQL pour des données 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
Opérations CRUD
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
58 / 90
Opérations CRUD
Create, Read, Update et Delete (CRUD) sont les 4 opérations qui peuvent être exécutées
sur une collection (DocumentStore Schema) ou une table.
CREATE - collection.add()
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
59 / 90
Opérations CRUD (2)
READ - collection.find()
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
60 / 90
Opérations CRUD (3)
UPDATE - collection.modify()
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
61 / 90
Opérations 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 Plugin
Plugin du serveurMySQLqui active la communication en utilisant le X Protocol.
Ce pluging:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
64 / 90
X Plugin
Plugin du serveurMySQLqui active la communication en utilisant le X Protocol.
Ce pluging:
supporte les clients ayant implémenté le X DevAPI
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
65 / 90
X Plugin
Plugin du serveurMySQLqui active la communication en utilisant le X Protocol.
Ce pluging:
supporte les clients ayant implémenté le X DevAPI
transformeMySQLen Document Store.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
66 / 90
X Plugin
Plugin du serveurMySQLqui active la communication en utilisant le X Protocol.
Ce pluging:
supporte les clients ayant implémenté le X DevAPI
transformeMySQLen 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 Protocol
Protocole qui permet de communiquer avec un MySQLServer sur lequel X Plugin est activé.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
69 / 90
X Protocol
Protocole qui permet de communiquer avec un MySQLServer sur lequel X Plugin est activé.
Et donc le X Protocol permet d´effectuer des opéarations CRUD et SQL, l´authentification
via 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
Opérations orientées Document via SQL
Très puissant
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
72 / 90
Opérations orientées Document via SQL
Très puissant
Permet la construction de requêtes complexes
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
73 / 90
Opérations orientées Document via SQL
Très puissant
Permet la construction de requêtes complexes
Mais... encore et toujours difficile à utiliser pour les non initiés
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
74 / 90
Opérations orientées Document via SQL
Très puissant
Permet la construction de requêtes complexes
Mais... encore et toujours difficile à utiliser pour les non initiés
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 DevAPI
Abstraction au-dessus de SQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
76 / 90
The X DevAPI
Abstraction au-dessus de SQL
Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
77 / 90
The X DevAPI
Abstraction au-dessus de SQL
Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete)
Native Language API
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
78 / 90
The X DevAPI
Abstraction au-dessus de SQL
Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete)
Native Language API
Pas nécessaire de connaître le SQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
79 / 90
The X DevAPI
Abstraction au-dessus de SQL
Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete)
Native Language API
Pas nécessaire de connaître le SQL
X Protocol
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
80 / 90
The X DevAPI
Abstraction au-dessus de SQL
Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete)
Native Language API
Pas nécessaire de connaître le SQL
X Protocol
les requêtes CRUD sont encodées auniveaudu protocol
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
81 / 90
Exemple
mysql-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
Exemple
mysql-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"
}
]
EtMySQLle transforme de manière 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 démo ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
84 / 90
Démo (1)
[fred@imac2 ~] $ mysqlsh --py
Welcome to MySQL Shell 1.0.8-rc
Copyright (c) 2016, 2017, Oracle and/or its af liates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
af liates. Other names may be trademarks of their respective
owners.
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 root@localhost
Creating a Session to 'root@localhost'
Enter password:
Node Session successfully established. No default schema selected.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
85 / 90
Démo (2)
mysql-py> db=session.create_schema("books")
mysql-py> mybooks=db.create_collection('mybooks')
mysql-py> from isbntools.app import *
mysql-py> isbn=9781449314286
mysql-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=9780596009571
mysql-py> doc=meta(str(isbn))
mysql-py> doc["Annee"]=doc.pop("Year")
mysql-py> mybooks.add(doc)
mysql-py> isbn=9781430230571
mysql-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
Démo (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
Démo (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
Démo (5)
mysql> show create table books.mybooksG
*************************** 1. row ***************************
Table: mybooks
Create 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

Jeudis du Libre - MySQL comme Document Store

  • 1.
  • 2.
  • 3.
      Safe Harbor Statement Thefollowing is intended to outline our generalproduct direction. It isintended for information purpose only, and may not be incorporated into any contract. It isnot a commitment to deliver any material, code, or functionality, and should not be relied up in making purchasing decisions. Thedevelopment, release and timing of any features or functionality described for Oracle's product remains at thesole discretion of Oracle. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 3 / 90
  • 4.
    about.me/lefred Qui suis-je ? Copyright@ 2017 Oracle and/or its affiliates. All rights reserved. 4 / 90
  • 5.
    Frédéric Descamps @lefred Évangéliste MySQL BidouilleMySQLdepuisla version 3.23 devops croyant et praticant MySQLCommunity Manager depuis mai 2016 Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 5 / 90
  • 6.
    SGDB & MySQL Basede données Relationnelles Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 6 / 90
  • 7.
    Bases de donnéesRelationnelles Intégrité des données Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 7 / 90
  • 8.
    Bases de donnéesRelationnelles Intégrité des données normalization Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 8 / 90
  • 9.
    Bases de donnéesRelationnelles Intégrité des données normalization contraintes (clés étrangères, ...) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 9 / 90
  • 10.
    Bases de donnéesRelationnelles Intégrité des données normalization contraintes (clés étrangères, ...) Atomicité, Cohérence, Isolarion et Durabilité - ACID Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 10 / 90
  • 11.
    Bases de donnéesRelationnelles Intégrité des données normalization contraintes (clés étrangères, ...) Atomicité, Cohérence, Isolarion et Durabilité - ACID transactions Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 11 / 90
  • 12.
    Bases de donnéesRelationnelles Intégrité des données normalization contraintes (clés étrangères, ...) Atomicité, Cohérence, Isolarion et Durabilité - ACID transactions SQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 12 / 90
  • 13.
    Bases de donnéesRelationnelles Intégrité des données normalization contraintes (clés étrangères, ...) Atomicité, Cohérence, Isolarion et Durabilité - ACID transactions SQL puissant language de requêtes Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 13 / 90
  • 14.
    SGDB & MySQL Basede données NoSQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 14 / 90
  • 15.
    NoSQL ou DocumentStore Sans schéma Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 15 / 90
  • 16.
    NoSQL ou DocumentStore Sans schéma pas de design de schémas, pasde normalization, de clés étrangères, de contraintes, de type de données (data types), etc... Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 16 / 90
  • 17.
    NoSQL ou DocumentStore Sans schéma pas de design de schémas, pasde normalization, de clés étrangères, de contraintes, de type de données (data types), etc... dévelopement initial très rapide Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 17 / 90
  • 18.
    NoSQL ou DocumentStore Sans schéma pas de design de schémas, pasde normalization, de clés étrangères, de contraintes, de type de données (data types), etc... dévelopement initial très rapide Structures flexibles des données Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 18 / 90
  • 19.
    NoSQL ou DocumentStore Sans schéma pas de design de schémas, pasde normalization, de clés étrangères, de contraintes, de type de données (data types), etc... dévelopement initial très rapide Structures flexibles des données objets et tableaux imbriqués Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 19 / 90
  • 20.
    NoSQL ou DocumentStore Sans schéma pas de design de schémas, pasde normalization, de clés étrangères, de contraintes, de type de données (data types), etc... dévelopement initial très rapide Structures flexibles des données objets et tableaux imbriqués certaines données sont simplement naturellement non structurées et ne peuvent être modélisées de façon optimale dans un modèle relationel Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 20 / 90
  • 21.
    NoSQL ou DocumentStore Sans schéma pas de design de schémas, pasde normalization, de clés étrangères, de contraintes, de type de données (data types), etc... dévelopement initial très rapide Structures flexibles des données objets et tableaux imbriqués certaines données sont simplement naturellement non structurées et ne peuvent être modélisées de façon optimale dans un modèle relationel persistence des objets sans utilisation d'un ORM(mapping objet-relationnel) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 21 / 90
  • 22.
    NoSQL ou DocumentStore (2) JSON Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 22 / 90
  • 23.
    NoSQL ou DocumentStore (2) JSON proche du frontend Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 23 / 90
  • 24.
    NoSQL ou DocumentStore (2) JSON proche du frontend "natif" en Javascript Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 24 / 90
  • 25.
    NoSQL ou DocumentStore (2) JSON proche du frontend "natif" en Javascript utilisé en Node.js Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 25 / 90
  • 26.
    NoSQL ou DocumentStore (2) JSON proche du frontend "natif" en Javascript utilisé en Node.js Aprentissage facile, et facile àutiliser Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 26 / 90
  • 27.
    Les challenges actuels lesdéveloppeurs veulent avancer plus rapidement Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 27 / 90
  • 28.
    Les challenges actuels lesdéveloppeurs veulent avancer plus rapidement le délai de mise en productionest un coût supérieur Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 28 / 90
  • 29.
    Les challenges actuels lesdéveloppeurs veulent avancer plus rapidement le délai de mise en productionest un coût supérieur rapidité de création de prototypes, itérations rapides, ... Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 29 / 90
  • 30.
    Avantages de SQLet de NoSQL NoSQL SQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 30 / 90
  • 31.
    Et donc, Basesde données Relationnelles ou Document Store ?? Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 31 / 90
  • 32.
    Et donc, Basesde données Relationnelles ou Document Store ?? Pourquoi pas les deux ? Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 32 / 90
  • 33.
    Quelles sont lesétapes ? NoSQL avec MySQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 33 / 90
  • 34.
    Faire de MySQLun Document Store Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 34 / 90
  • 35.
    Faire de MySQLun Document Store 1.support de JSON datatype Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 35 / 90
  • 36.
    Faire de MySQLun Document Store 1.support de JSON datatype 2.CRUD Operations Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 36 / 90
  • 37.
    Faire de MySQLun Document Store 1.support de JSON datatype 2.CRUD Operations 3.X Plugin Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 37 / 90
  • 38.
    Faire de MySQLun Document Store 1.support de JSON datatype 2.CRUD Operations 3.X Plugin 4.X protocol &MySQLShell Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 38 / 90
  • 39.
    MySQL 5.7 Support deJSON Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 39 / 90
  • 40.
    Support JSON Type natifde données (native datatype) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 40 / 90
  • 41.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 41 / 90
  • 42.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Format de stokage JSON en binaire (UTF8MB4) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 42 / 90
  • 43.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Format de stokage JSON en binaire (UTF8MB4) Conversion à partir des typesSQL"natifs" vers des valeurs JSON Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 43 / 90
  • 44.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Format de stokage JSON en binaire (UTF8MB4) Conversion à partir des typesSQL"natifs" vers des valeurs JSON Functions de manipulation du JSON Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 44 / 90
  • 45.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Format de stokage JSON en binaire (UTF8MB4) Conversion à partir des typesSQL"natifs" vers des valeurs JSON Functions de manipulation du JSON extraire (JSON_EXTRACT, JSON_KEYS, ...) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 45 / 90
  • 46.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Format de stokage JSON en binaire (UTF8MB4) Conversion à partir des typesSQL"natifs" vers des valeurs JSON Functions de manipulation du JSON extraire (JSON_EXTRACT, JSON_KEYS, ...) inpecter (JSON_CONTAINS, ...) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 46 / 90
  • 47.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Format de stokage JSON en binaire (UTF8MB4) Conversion à partir des typesSQL"natifs" vers des valeurs JSON Functions 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
  • 48.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Format de stokage JSON en binaire (UTF8MB4) Conversion à partir des typesSQL"natifs" vers des valeurs JSON Functions de manipulation du JSON extraire (JSON_EXTRACT, JSON_KEYS, ...) inpecter (JSON_CONTAINS, ...) modifier (JSON_SET, JSON_INSERT, JSON_REMOVE, ...) création de tableaux et d'objets (JSON_ARRAY, JSON_OBJECT) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 48 / 90
  • 49.
    Support JSON Type natifde données (native datatype) Valeurs en JSON stockées dansdes tables MySQL Format de stokage JSON en binaire (UTF8MB4) Conversion à partir des typesSQL"natifs" vers des valeurs JSON Functions de manipulation du JSON extraire (JSON_EXTRACT, JSON_KEYS, ...) inpecter (JSON_CONTAINS, ...) modifier (JSON_SET, JSON_INSERT, JSON_REMOVE, ...) création 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
  • 50.
    Support JSON (2) InlineSQL JSON path expressions SELECT doc->'$.object.array[0].item' FROM some_table Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 50 / 90
  • 51.
    Support JSON (2) InlineSQL JSON path expressions SELECT doc->'$.object.array[0].item' FROM some_table Opérateurs booléens (comparaison de valeurs JSON, ...) foo = doc->'$. eld' Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 51 / 90
  • 52.
    Support JSON (3) lemeilleur pour la fin... Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 52 / 90
  • 53.
    Support JSON (3) lemeilleur pour la fin... Colonnes Générées/Virtuelles(generated/virtual columns) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 53 / 90
  • 54.
    Support JSON (3) lemeilleur pour la fin... Colonnes Générées/Virtuelles(generated/virtual columns) Index de données JSON Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 54 / 90
  • 55.
    Support JSON (3) lemeilleur pour la fin... Colonnes Générées/Virtuelles(generated/virtual columns) Index de données JSON Clés étrangères vers données JSON Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 55 / 90
  • 56.
    Support JSON (3) lemeilleur pour la fin... Colonnes Générées/Virtuelles(generated/virtual columns) Index de données JSON Clés étrangères vers données JSON Vues SQL pour des données JSON Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 56 / 90
  • 57.
    Support JSON (3) lemeilleur pour la fin... Colonnes Générées/Virtuelles(generated/virtual columns) Index de données JSON Clés étrangères vers données JSON Vues SQL pour des données 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
  • 58.
    Document Store Opérations CRUD Copyright@ 2017 Oracle and/or its affiliates. All rights reserved. 58 / 90
  • 59.
    Opérations CRUD Create, Read,Update et Delete (CRUD) sont les 4 opérations qui peuvent être exécutées sur une collection (DocumentStore Schema) ou une table. CREATE - collection.add() Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 59 / 90
  • 60.
    Opérations CRUD (2) READ- collection.find() Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 60 / 90
  • 61.
    Opérations CRUD (3) UPDATE- collection.modify() Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 61 / 90
  • 62.
    Opérations CRUD (4) DELETE- collection.remove() Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 62 / 90
  • 63.
    Document Store X Plugin Copyright@ 2017 Oracle and/or its affiliates. All rights reserved. 63 / 90
  • 64.
    X Plugin Plugin duserveurMySQLqui active la communication en utilisant le X Protocol. Ce pluging: Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 64 / 90
  • 65.
    X Plugin Plugin duserveurMySQLqui active la communication en utilisant le X Protocol. Ce pluging: supporte les clients ayant implémenté le X DevAPI Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 65 / 90
  • 66.
    X Plugin Plugin duserveurMySQLqui active la communication en utilisant le X Protocol. Ce pluging: supporte les clients ayant implémenté le X DevAPI transformeMySQLen Document Store. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 66 / 90
  • 67.
    X Plugin Plugin duserveurMySQLqui active la communication en utilisant le X Protocol. Ce pluging: supporte les clients ayant implémenté le X DevAPI transformeMySQLen 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
  • 68.
    Document Store X Protocol Copyright@ 2017 Oracle and/or its affiliates. All rights reserved. 68 / 90
  • 69.
    X Protocol Protocole quipermet de communiquer avec un MySQLServer sur lequel X Plugin est activé. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 69 / 90
  • 70.
    X Protocol Protocole quipermet de communiquer avec un MySQLServer sur lequel X Plugin est activé. Et donc le X Protocol permet d´effectuer des opéarations CRUD et SQL, l´authentification via SASL, le "streaming" (pipelining) des commandes. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 70 / 90
  • 71.
    Document Store The XDevAPI Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 71 / 90
  • 72.
    Opérations orientées Documentvia SQL Très puissant Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 72 / 90
  • 73.
    Opérations orientées Documentvia SQL Très puissant Permet la construction de requêtes complexes Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 73 / 90
  • 74.
    Opérations orientées Documentvia SQL Très puissant Permet la construction de requêtes complexes Mais... encore et toujours difficile à utiliser pour les non initiés Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 74 / 90
  • 75.
    Opérations orientées Documentvia SQL Très puissant Permet la construction de requêtes complexes Mais... encore et toujours difficile à utiliser pour les non initiés 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
  • 76.
    The X DevAPI Abstractionau-dessus de SQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 76 / 90
  • 77.
    The X DevAPI Abstractionau-dessus de SQL Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 77 / 90
  • 78.
    The X DevAPI Abstractionau-dessus de SQL Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete) Native Language API Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 78 / 90
  • 79.
    The X DevAPI Abstractionau-dessus de SQL Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete) Native Language API Pas nécessaire de connaître le SQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 79 / 90
  • 80.
    The X DevAPI Abstractionau-dessus de SQL Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete) Native Language API Pas nécessaire de connaître le SQL X Protocol Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 80 / 90
  • 81.
    The X DevAPI Abstractionau-dessus de SQL Axé sur 4 opérations CRUD debase (Create, Read, Update, Delete) Native Language API Pas nécessaire de connaître le SQL X Protocol les requêtes CRUD sont encodées auniveaudu protocol Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 81 / 90
  • 82.
    Exemple mysql-py> mybooks. nd("TitleLIKE '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
  • 83.
    Exemple mysql-py> mybooks. nd("TitleLIKE '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" } ] EtMySQLle transforme de manière 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
  • 84.
    Document Store &X DevAPI & MySQL Shell petite démo ? Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 84 / 90
  • 85.
    Démo (1) [fred@imac2 ~]$ mysqlsh --py Welcome to MySQL Shell 1.0.8-rc Copyright (c) 2016, 2017, Oracle and/or its af liates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its af liates. Other names may be trademarks of their respective owners. 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 root@localhost Creating a Session to 'root@localhost' Enter password: Node Session successfully established. No default schema selected. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 85 / 90
  • 86.
    Démo (2) mysql-py> db=session.create_schema("books") mysql-py>mybooks=db.create_collection('mybooks') mysql-py> from isbntools.app import * mysql-py> isbn=9781449314286 mysql-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=9780596009571 mysql-py> doc=meta(str(isbn)) mysql-py> doc["Annee"]=doc.pop("Year") mysql-py> mybooks.add(doc) mysql-py> isbn=9781430230571 mysql-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
  • 87.
    Démo (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
  • 88.
    Démo (4) mysql-py> mybooks. nd("TitleLIKE '%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
  • 89.
    Démo (5) mysql> showcreate table books.mybooksG *************************** 1. row *************************** Table: mybooks Create 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
  • 90.
    Merci Des Questions ? Copyright@ 2017 Oracle and/or its affiliates. All rights reserved. 90 / 90