SlideShare a Scribd company logo
1 of 110
Download to read offline
1 / 110
2 / 110
ROOUG, December 2017
MySQL Document Store
How to replace a NoSQL database by MySQL without effort but with a lot of
gains ?
 
 
 
Frédéric Descamps - MySQL Community Manager - Oracle
3 / 110
 
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for
information purpose only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied up in
making purchasing decisions. The development, release and timing of any features or
functionality described for Oracle´s product remains at the sole discretion of Oracle.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
4 / 110
about.me/lefred
Who am I ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
5 / 110
Frédéric Descamps
@lefred
MySQL Evangelist
Hacking MySQL since 3.23
devops believer
living in Belgium 🇧🇪
http://lefred.be
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
6 / 110
RDBMS & MySQL
Relational Databases
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
7 / 110
Relational Databases
Data Integrity
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
8 / 110
Relational Databases
Data Integrity
normalization
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
9 / 110
Relational Databases
Data Integrity
normalization
constraints (foreign keys, ...)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
10 / 110
Relational Databases
Data Integrity
normalization
constraints (foreign keys, ...)
Atomicity, Consistency, Isolation, Durability
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
11 / 110
Relational Databases
Data Integrity
normalization
constraints (foreign keys, ...)
Atomicity, Consistency, Isolation, Durability
ACID compliant
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
12 / 110
Relational Databases
Data Integrity
normalization
constraints (foreign keys, ...)
Atomicity, Consistency, Isolation, Durability
ACID compliant
transactions
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
13 / 110
Relational Databases
Data Integrity
normalization
constraints (foreign keys, ...)
Atomicity, Consistency, Isolation, Durability
ACID compliant
transactions
SQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
14 / 110
Relational Databases
Data Integrity
normalization
constraints (foreign keys, ...)
Atomicity, Consistency, Isolation, Durability
ACID compliant
transactions
SQL
powerfull query language
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
15 / 110
NoSQL & MySQL
NoSQL Databases
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
16 / 110
NoSQL or Document Store
Schemaless
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
17 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
18 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
19 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Flexible data structure
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
20 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Flexible data structure
embedded arrays or objects
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
21 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Flexible data structure
embedded arrays or objects
valid solution when natural data can't be modelized optimaly into a relational
model
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
22 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Flexible data structure
embedded arrays or objects
valid solution when natural data can't be modelized optimaly into a relational
model
objects persistance without the use of any ORM - mapping oobject-oriented
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
23 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Flexible data structure
embedded arrays or objects
valid solution when natural data can't be modelized optimaly into a relational
model
objects persistance without the use of any ORM - mapping oobject-oriented
JSON
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
24 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Flexible data structure
embedded arrays or objects
valid solution when natural data can't be modelized optimaly into a relational
model
objects persistance without the use of any ORM - mapping oobject-oriented
JSON
close to frontend
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
25 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Flexible data structure
embedded arrays or objects
valid solution when natural data can't be modelized optimaly into a relational
model
objects persistance without the use of any ORM - mapping oobject-oriented
JSON
close to frontend
native in JS
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
26 / 110
NoSQL or Document Store
Schemaless
no schema design, no normalization, no foreign keys, no data types, ...
very quick initial development
Flexible data structure
embedded arrays or objects
valid solution when natural data can't be modelized optimaly into a relational
model
objects persistance without the use of any ORM - mapping oobject-oriented
JSON
close to frontend
native in JS
easy to learn
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
27 / 110
How DBAs see data
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
28 / 110
How DBAs see data How Developers see data
{
"GNP" : 249704,
"Name" : "Belgium",
"government" : {
"GovernmentForm" :
"Constitutional Monarchy, Federation",
"HeadOfState" : "Philippe I"
},
"_id" : "BEL",
"IndepYear" : 1830,
"demographics" : {
"Population" : 10239000,
"LifeExpectancy" : 77.8000030517578
},
"geography" : {
"Region" : "Western Europe",
"SurfaceArea" : 30518,
"Continent" : "Europe"
}
}
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
29 / 110
Relational Model
Higher upfront effort during design
stage
data modeling and normalization
physical schema definition
Database ensures integrity (invalid
data rejected)
Data types
Constraints (foreign keys etc.)
Relational Databases vs Document Store
Systems
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
30 / 110
Relational Model
Higher upfront effort during design
stage
data modeling and normalization
physical schema definition
Database ensures integrity (invalid
data rejected)
Data types
Constraints (foreign keys etc.)
Document Model
Lower upfront effort
data structure defined in
application code
Application responsible for data
integrity
possibility for bad data to creep
into the system (because of bugs,
application changes etc.)
Relational Databases vs Document Store
Systems
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
31 / 110
Relational Model
Steeper learning curve
requires knowledge of SQL
Query language allows optimizer to
execute complex queries efficiently
(specially for JOINs)
Schema changes can be problematic
(ex upgrades)
Relational Databases vs Document Store
Systems (2)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
32 / 110
Relational Model
Steeper learning curve
requires knowledge of SQL
Query language allows optimizer to
execute complex queries efficiently
(specially for JOINs)
Schema changes can be problematic
(ex upgrades)
Document Model
Easier to get started with
Limited or no JOINs, simple optimizer -
complexity off-loaded to application
Simpler deployment, different versions
of the document can coexist
Relational Databases vs Document Store
Systems (2)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
33 / 110
DMBS or NoSQL ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
34 / 110
DMBS or NoSQL ?
Why not both ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
35 / 110
Developers:
[x] schemaless
[x] rapid prototying/simpler APIs
[x] document model
[x] transactions
Operations:
[x] performance
management/visibility
[x] robust replication, backup,
restore
[x] comprehensive tooling
ecosystem
[x] simpler application schema
upgrades
Business Owner:
[x] don't lose my data == ACID trx
[x] capture all my data =
extensible/schemaless
[x] product on schedule/time to
market = rapid developement
A solution for all
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
36 / 110
MySQL as Document Store
Requirements
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
37 / 110
MySQL as Document Store: requirements
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
38 / 110
MySQL as Document Store: requirements
1. support of JSON datatype
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
39 / 110
MySQL as Document Store: requirements
1. support of JSON datatype
2. CRUD Operations
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
40 / 110
MySQL as Document Store: requirements
1. support of JSON datatype
2. CRUD Operations
3. X-Plugin & X Protocol
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
41 / 110
MySQL as Document Store: requirements
1. support of JSON datatype
2. CRUD Operations
3. X-Plugin & X Protocol
extends and replaces the traditional MySQL protocol
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
42 / 110
MySQL as Document Store: requirements
1. support of JSON datatype
2. CRUD Operations
3. X-Plugin & X Protocol
extends and replaces the traditional MySQL protocol
supports asynchronous communication to the server
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
43 / 110
MySQL as Document Store: requirements
1. support of JSON datatype
2. CRUD Operations
3. X-Plugin & X Protocol
extends and replaces the traditional MySQL protocol
supports asynchronous communication to the server
supports multiple API calls like Javascript, Python, SQL...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
44 / 110
MySQL as Document Store: requirements
1. support of JSON datatype
2. CRUD Operations
3. X-Plugin & X Protocol
extends and replaces the traditional MySQL protocol
supports asynchronous communication to the server
supports multiple API calls like Javascript, Python, SQL...
based on Google Protocol Buffers
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
45 / 110
MySQL as Document Store: requirements
1. support of JSON datatype
2. CRUD Operations
3. X-Plugin & X Protocol
extends and replaces the traditional MySQL protocol
supports asynchronous communication to the server
supports multiple API calls like Javascript, Python, SQL...
based on Google Protocol Buffers
4. MySQL Shell
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
46 / 110
MySQL Document Store
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
47 / 110
MySQL as Document Store
Starting with DS
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
48 / 110
Starting using MySQL DS in few minutes
Install X Plugin
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
49 / 110
Starting using MySQL DS in few minutes
 
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
50 / 110
Migration from MongoDB to MySQL DS
For this example, I will use the well known restaurants collection:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
51 / 110
Migration from MongoDB to MySQL DS
For this example, I will use the well known restaurants collection:
We need to dump the data to a file and we will use MySQL Shell with the Python
interpreter to load the data.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
52 / 110
Migration from MongoDB to MySQL DS
For this example, I will use the well known restaurants collection:
We need to dump the data to a file and we will use MySQL Shell with the Python
interpreter to load the data.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
53 / 110
Dump and load using MySQL Shell & Python
this example is inspired by @datacharmer's work:
https://www.slideshare.net/datacharmer/mysql-documentstore
$ mongo --quiet --eval 'DBQuery.shellBatchSize=30000;
db.restaurants. nd().shellPrint()' 
| perl -pe 's/(?:ObjectId|ISODate)(("[^"]+"))/ $1/g' > all_recs.json
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
54 / 110
Dump and load using MySQL Shell & Python
this example is inspired by @datacharmer's work:
https://www.slideshare.net/datacharmer/mysql-documentstore
$ mongo --quiet --eval 'DBQuery.shellBatchSize=30000;
db.restaurants. nd().shellPrint()' 
| perl -pe 's/(?:ObjectId|ISODate)(("[^"]+"))/ $1/g' > all_recs.json
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
55 / 110
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
56 / 110
Let´s query
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
57 / 110
Let´s query
That´s too much records to show it here... let´s limit it
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
58 / 110
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
59 / 110
Some more examples
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
60 / 110
Some more examples
Let´s add a selection criteria:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
61 / 110
Syntax slightly different than MongoDB
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
62 / 110
Syntax slightly different than MongoDB
> db.restaurants. nd({"cuisine": "French",
"borough": { $not: /^Manhattan/} },
{"_id":0, "name": 1,"cuisine": 1, "borough": 1}).limit(2)
{ "borough" : "Queens", "cuisine" : "French",
"name" : "La Baraka Restaurant" }
{ "borough" : "Queens", "cuisine" : "French",
"name" : "Air France Lounge" }
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
63 / 110
CRUD operations
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
64 / 110
8.0.3 what´s new ?
WL10446 - Customizable prompts
WL10568 - Handling of Ctrl+C has been improved on many scenarios
WL10708 and WL10823 - NodeSession disappeared in favor of simply Session
WL10912 - Changes on connection options handling:
case insensitive: i.e. ssl-mode == Ssl-Mode
renamed from camel case to word dashed format: sslMode --> ssl-mode
WL11054 - Admin API supports automatic turn of of super-read-only option on
several functions.
WL10682 - Mysqlx.CRUD.Update on top level document
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
65 / 110
8.0.3 what´s new ? (part 2)
WL10645 - X Protocol Crud.Find with row locking
WL10734 - Spatial index type
WL10744 - Full-Text Index Type
WL10797 - Mysqlx.Crud.Update: MERGE_PATCH
WL10447 - auto-completion by hitting in the middle of typing a shell command,
database object, object function, ...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
66 / 110
8.0.3 labs: auto-completion
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
67 / 110
8.0.3 labs: auto-completion
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
68 / 110
8.0.3 labs: auto-completion - even for SQL !
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
69 / 110
what about my old SQL ?
The hidden part of the iceberg
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
70 / 110
JSON datatype is behind the scene
native datatype (since 5.7.8)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
71 / 110
JSON datatype is behind the scene
native datatype (since 5.7.8)
JSON values are stored in MySQL tables using UTF8MB4
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
72 / 110
JSON datatype is behind the scene
native datatype (since 5.7.8)
JSON values are stored in MySQL tables using UTF8MB4
Conversion from "native" SQL types to JSON values
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
73 / 110
JSON datatype is behind the scene
native datatype (since 5.7.8)
JSON values are stored in MySQL tables using UTF8MB4
Conversion from "native" SQL types to JSON values
JSON manipulation functions (JSON_EXTRACT, JSON_KEYS,
JSON_SEARCH,...)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
74 / 110
JSON datatype is behind the scene
native datatype (since 5.7.8)
JSON values are stored in MySQL tables using UTF8MB4
Conversion from "native" SQL types to JSON values
JSON manipulation functions (JSON_EXTRACT, JSON_KEYS,
JSON_SEARCH,...)
Generated/virtual columns
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
75 / 110
JSON datatype is behind the scene
native datatype (since 5.7.8)
JSON values are stored in MySQL tables using UTF8MB4
Conversion from "native" SQL types to JSON values
JSON manipulation functions (JSON_EXTRACT, JSON_KEYS,
JSON_SEARCH,...)
Generated/virtual columns
Indexing JSON data
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
76 / 110
JSON datatype is behind the scene
native datatype (since 5.7.8)
JSON values are stored in MySQL tables using UTF8MB4
Conversion from "native" SQL types to JSON values
JSON manipulation functions (JSON_EXTRACT, JSON_KEYS,
JSON_SEARCH,...)
Generated/virtual columns
Indexing JSON data
Foreign Keys to JSON data
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
77 / 110
JSON datatype is behind the scene
native datatype (since 5.7.8)
JSON values are stored in MySQL tables using UTF8MB4
Conversion from "native" SQL types to JSON values
JSON manipulation functions (JSON_EXTRACT, JSON_KEYS,
JSON_SEARCH,...)
Generated/virtual columns
Indexing JSON data
Foreign Keys to JSON data
SQL Views to JSON data
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
78 / 110
How does it work ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
79 / 110
Mapping to SQL examples
createCollection('mycollection')
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
80 / 110
Mapping to SQL examples
createCollection('mycollection')
CREATE TABLE `test`.`mycoll` (
doc JSON,
_id VARCHAR(32)
GENERATED ALWAYS AS (doc->>'$._id') STORED
PRIMARY KEY
) CHARSET utf8mb4;
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
81 / 110
Mapping to SQL examples
createCollection('mycollection')
CREATE TABLE `test`.`mycoll` (
doc JSON,
_id VARCHAR(32)
GENERATED ALWAYS AS (doc->>'$._id') STORED
PRIMARY KEY
) CHARSET utf8mb4;
mycollection.add({'test': 1234})
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
82 / 110
Mapping to SQL examples
createCollection('mycollection')
CREATE TABLE `test`.`mycoll` (
doc JSON,
_id VARCHAR(32)
GENERATED ALWAYS AS (doc->>'$._id') STORED
PRIMARY KEY
) CHARSET utf8mb4;
mycollection.add({'test': 1234})
INSERT INTO `test`.`mycoll` (doc)
VALUES (
JSON_OBJECT('_id','663807fe367ee6114e0e5458bdac28bf',
'test',1234)
);
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
83 / 110
Mapping to SQL examples (2)
mycollection.find("test > 100")
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
84 / 110
Mapping to SQL examples (2)
mycollection.find("test > 100")
SELECT doc
FROM `test`.`mycoll`
WHERE (JSON_EXTRACT(doc,'$.test') > 100);
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
85 / 110
SQL and JSON Example
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
86 / 110
SQL and JSON Example
same as:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
87 / 110
SQL and JSON Example
same as:
we can use it in SQL:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
88 / 110
SQL and JSON Example (2): validation
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
89 / 110
SQL and JSON Example (2): validation
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
90 / 110
SQL and JSON Example (2): validation
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
91 / 110
SQL and JSON Example (3): explain
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
92 / 110
SQL and JSON Example (3): explain
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
93 / 110
SQL and JSON Example (4): add index
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
94 / 110
SQL and JSON Example (4): add index
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
95 / 110
SQL and JSON Example (5): arrays
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
96 / 110
SQL and JSON Example (5): arrays
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
97 / 110
SQL and JSON Example (5): arrays
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
98 / 110
SQL and JSON Example (5): arrays
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
99 / 110
NoSQL as SQL
New in MySQL 8.0.3-labs: JSON_TABLE
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
100 / 110
NoSQL as SQL (2)
New in MySQL 8.0.3-labs: JSON_TABLE
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
101 / 110
SQL and NoSQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
102 / 110
SQL and NoSQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
103 / 110
SQL and NoSQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
104 / 110
SQL and NoSQL (2)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
105 / 110
SQL and NoSQL (2)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
106 / 110
SQL and NoSQL (2)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
107 / 110
what do I gain ?
Conclusion
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
108 / 110
schemaless
flexible data structure
easy to start (CRUD)
Conclusion
This is the best of the two worlds in one product !
Data integrity
ACID Compliant
SQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
109 / 110
Thank you !
Any Questions ?
http://lefred.be
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
110 / 110

More Related Content

What's hot

Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterFrederic Descamps
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterFrederic Descamps
 
MySQL Community Meetup in China : Innovation driven by the Community
MySQL Community Meetup in China : Innovation driven by the CommunityMySQL Community Meetup in China : Innovation driven by the Community
MySQL Community Meetup in China : Innovation driven by the CommunityFrederic Descamps
 
MySQL User Group NL: MySQL 8.0 Document Store- NoSQL with all the benefits of...
MySQL User Group NL: MySQL 8.0 Document Store- NoSQL with all the benefits of...MySQL User Group NL: MySQL 8.0 Document Store- NoSQL with all the benefits of...
MySQL User Group NL: MySQL 8.0 Document Store- NoSQL with all the benefits of...Frederic Descamps
 
MySQL Innovation: from 5.7 to 8.0
MySQL Innovation:  from 5.7 to 8.0MySQL Innovation:  from 5.7 to 8.0
MySQL Innovation: from 5.7 to 8.0Frederic Descamps
 
Introduction to MySQL Document Store
Introduction to MySQL Document StoreIntroduction to MySQL Document Store
Introduction to MySQL Document StoreFrederic Descamps
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorialFrederic Descamps
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterFrederic Descamps
 
Swedish MySQL User Group - MySQL InnoDB Cluster
Swedish MySQL User Group - MySQL InnoDB ClusterSwedish MySQL User Group - MySQL InnoDB Cluster
Swedish MySQL User Group - MySQL InnoDB ClusterFrederic Descamps
 
Oracle Open World 2018 / Code One : MySQL 8.0 Document Store
Oracle Open World 2018 /  Code One : MySQL 8.0 Document StoreOracle Open World 2018 /  Code One : MySQL 8.0 Document Store
Oracle Open World 2018 / Code One : MySQL 8.0 Document StoreFrederic Descamps
 
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...Frederic Descamps
 
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!Frederic Descamps
 
Webinar Slides: MySQL HA/DR/Geo-Scale - High Noon #5: Oracle’s InnoDB Cluster
Webinar Slides: MySQL HA/DR/Geo-Scale - High Noon #5: Oracle’s InnoDB ClusterWebinar Slides: MySQL HA/DR/Geo-Scale - High Noon #5: Oracle’s InnoDB Cluster
Webinar Slides: MySQL HA/DR/Geo-Scale - High Noon #5: Oracle’s InnoDB ClusterContinuent
 
Oracle Open World 2018 / Code One : MySQL 8.0 High Availability with MySQL I...
Oracle Open World 2018 / Code One  : MySQL 8.0 High Availability with MySQL I...Oracle Open World 2018 / Code One  : MySQL 8.0 High Availability with MySQL I...
Oracle Open World 2018 / Code One : MySQL 8.0 High Availability with MySQL I...Frederic Descamps
 
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Frederic Descamps
 
High Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterHigh Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterSven Sandberg
 
Percona Live Europe 2018 MySQL Group Replication... the magic explained
Percona Live Europe 2018  MySQL Group Replication... the magic explainedPercona Live Europe 2018  MySQL Group Replication... the magic explained
Percona Live Europe 2018 MySQL Group Replication... the magic explainedFrederic Descamps
 
Boston meetup : MySQL Innodb Cluster - May 1st 2017
Boston meetup : MySQL Innodb Cluster - May 1st  2017Boston meetup : MySQL Innodb Cluster - May 1st  2017
Boston meetup : MySQL Innodb Cluster - May 1st 2017Frederic Descamps
 
Helsinki MySQL User Group - MySQL InnoDB Cluster
Helsinki MySQL User Group - MySQL InnoDB ClusterHelsinki MySQL User Group - MySQL InnoDB Cluster
Helsinki MySQL User Group - MySQL InnoDB ClusterFrederic Descamps
 
MySQL InnoDB Cluster and Group Replication in a Nutshell: hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a Nutshell:  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a Nutshell:  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a Nutshell: hands-on tutorialFrederic Descamps
 

What's hot (20)

Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB Cluster
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB Cluster
 
MySQL Community Meetup in China : Innovation driven by the Community
MySQL Community Meetup in China : Innovation driven by the CommunityMySQL Community Meetup in China : Innovation driven by the Community
MySQL Community Meetup in China : Innovation driven by the Community
 
MySQL User Group NL: MySQL 8.0 Document Store- NoSQL with all the benefits of...
MySQL User Group NL: MySQL 8.0 Document Store- NoSQL with all the benefits of...MySQL User Group NL: MySQL 8.0 Document Store- NoSQL with all the benefits of...
MySQL User Group NL: MySQL 8.0 Document Store- NoSQL with all the benefits of...
 
MySQL Innovation: from 5.7 to 8.0
MySQL Innovation:  from 5.7 to 8.0MySQL Innovation:  from 5.7 to 8.0
MySQL Innovation: from 5.7 to 8.0
 
Introduction to MySQL Document Store
Introduction to MySQL Document StoreIntroduction to MySQL Document Store
Introduction to MySQL Document Store
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB Cluster
 
Swedish MySQL User Group - MySQL InnoDB Cluster
Swedish MySQL User Group - MySQL InnoDB ClusterSwedish MySQL User Group - MySQL InnoDB Cluster
Swedish MySQL User Group - MySQL InnoDB Cluster
 
Oracle Open World 2018 / Code One : MySQL 8.0 Document Store
Oracle Open World 2018 /  Code One : MySQL 8.0 Document StoreOracle Open World 2018 /  Code One : MySQL 8.0 Document Store
Oracle Open World 2018 / Code One : MySQL 8.0 Document Store
 
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
 
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
 
Webinar Slides: MySQL HA/DR/Geo-Scale - High Noon #5: Oracle’s InnoDB Cluster
Webinar Slides: MySQL HA/DR/Geo-Scale - High Noon #5: Oracle’s InnoDB ClusterWebinar Slides: MySQL HA/DR/Geo-Scale - High Noon #5: Oracle’s InnoDB Cluster
Webinar Slides: MySQL HA/DR/Geo-Scale - High Noon #5: Oracle’s InnoDB Cluster
 
Oracle Open World 2018 / Code One : MySQL 8.0 High Availability with MySQL I...
Oracle Open World 2018 / Code One  : MySQL 8.0 High Availability with MySQL I...Oracle Open World 2018 / Code One  : MySQL 8.0 High Availability with MySQL I...
Oracle Open World 2018 / Code One : MySQL 8.0 High Availability with MySQL I...
 
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
 
High Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterHigh Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB Cluster
 
Percona Live Europe 2018 MySQL Group Replication... the magic explained
Percona Live Europe 2018  MySQL Group Replication... the magic explainedPercona Live Europe 2018  MySQL Group Replication... the magic explained
Percona Live Europe 2018 MySQL Group Replication... the magic explained
 
Boston meetup : MySQL Innodb Cluster - May 1st 2017
Boston meetup : MySQL Innodb Cluster - May 1st  2017Boston meetup : MySQL Innodb Cluster - May 1st  2017
Boston meetup : MySQL Innodb Cluster - May 1st 2017
 
Helsinki MySQL User Group - MySQL InnoDB Cluster
Helsinki MySQL User Group - MySQL InnoDB ClusterHelsinki MySQL User Group - MySQL InnoDB Cluster
Helsinki MySQL User Group - MySQL InnoDB Cluster
 
MySQL InnoDB Cluster and Group Replication in a Nutshell: hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a Nutshell:  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a Nutshell:  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a Nutshell: hands-on tutorial
 

Similar to MySQL Document Store - How to replace a NoSQL database by MySQL without effort but with a lot gains ?

Oracle Code Roma: NoSQL + SQL = MySQL
Oracle Code Roma:   NoSQL + SQL = MySQLOracle Code Roma:   NoSQL + SQL = MySQL
Oracle Code Roma: NoSQL + SQL = MySQLFrederic Descamps
 
Looking Inside the MySQL 8.0 Document Store
Looking Inside the MySQL 8.0 Document StoreLooking Inside the MySQL 8.0 Document Store
Looking Inside the MySQL 8.0 Document StoreFrederic Descamps
 
DOAG Big Data Days 2017 - Cloud Journey
DOAG Big Data Days 2017 - Cloud JourneyDOAG Big Data Days 2017 - Cloud Journey
DOAG Big Data Days 2017 - Cloud JourneyHarald Erb
 
MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...Olivier DASINI
 
MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL Brasil
 
MySQL Document Store for Modern Applications
MySQL Document Store for Modern ApplicationsMySQL Document Store for Modern Applications
MySQL Document Store for Modern ApplicationsOlivier DASINI
 
MySQL 8.0 Document Store - Discovery of a New World
MySQL 8.0 Document Store - Discovery of a New WorldMySQL 8.0 Document Store - Discovery of a New World
MySQL 8.0 Document Store - Discovery of a New WorldFrederic Descamps
 
OpenExpo Virtual Experience 2020: MySQL 8.0 Document Store - Discovery of a n...
OpenExpo Virtual Experience 2020: MySQL 8.0 Document Store - Discovery of a n...OpenExpo Virtual Experience 2020: MySQL 8.0 Document Store - Discovery of a n...
OpenExpo Virtual Experience 2020: MySQL 8.0 Document Store - Discovery of a n...Frederic Descamps
 
Solution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataSolution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataInfiniteGraph
 
MySQL Document Store (Oracle Code Warsaw 2018)
MySQL Document Store (Oracle Code Warsaw 2018)MySQL Document Store (Oracle Code Warsaw 2018)
MySQL Document Store (Oracle Code Warsaw 2018)Vittorio Cioe
 
Oracle NoSQL Database release 3.0 overview
Oracle NoSQL Database release 3.0 overviewOracle NoSQL Database release 3.0 overview
Oracle NoSQL Database release 3.0 overviewPaulo Fagundes
 
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...Olivier DASINI
 
MySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document StoreMySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document StoreOlivier DASINI
 
OUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
OUG Scotland 2014 - NoSQL and MySQL - The best of both worldsOUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
OUG Scotland 2014 - NoSQL and MySQL - The best of both worldsAndrew Morgan
 
20171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v120171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v1Ivan Ma
 
MySQL 8.0 in a nutshell
MySQL 8.0 in a nutshellMySQL 8.0 in a nutshell
MySQL 8.0 in a nutshellOracleMySQL
 
State ofdolphin short
State ofdolphin shortState ofdolphin short
State ofdolphin shortMandy Ang
 
MySQL Innovation from 5.7 to 8.0
MySQL Innovation from 5.7 to 8.0MySQL Innovation from 5.7 to 8.0
MySQL Innovation from 5.7 to 8.0Frederic Descamps
 
Con8862 no sql, json and time series data
Con8862   no sql, json and time series dataCon8862   no sql, json and time series data
Con8862 no sql, json and time series dataAnuj Sahni
 
Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Dave Stokes
 

Similar to MySQL Document Store - How to replace a NoSQL database by MySQL without effort but with a lot gains ? (20)

Oracle Code Roma: NoSQL + SQL = MySQL
Oracle Code Roma:   NoSQL + SQL = MySQLOracle Code Roma:   NoSQL + SQL = MySQL
Oracle Code Roma: NoSQL + SQL = MySQL
 
Looking Inside the MySQL 8.0 Document Store
Looking Inside the MySQL 8.0 Document StoreLooking Inside the MySQL 8.0 Document Store
Looking Inside the MySQL 8.0 Document Store
 
DOAG Big Data Days 2017 - Cloud Journey
DOAG Big Data Days 2017 - Cloud JourneyDOAG Big Data Days 2017 - Cloud Journey
DOAG Big Data Days 2017 - Cloud Journey
 
MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...
 
MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017
 
MySQL Document Store for Modern Applications
MySQL Document Store for Modern ApplicationsMySQL Document Store for Modern Applications
MySQL Document Store for Modern Applications
 
MySQL 8.0 Document Store - Discovery of a New World
MySQL 8.0 Document Store - Discovery of a New WorldMySQL 8.0 Document Store - Discovery of a New World
MySQL 8.0 Document Store - Discovery of a New World
 
OpenExpo Virtual Experience 2020: MySQL 8.0 Document Store - Discovery of a n...
OpenExpo Virtual Experience 2020: MySQL 8.0 Document Store - Discovery of a n...OpenExpo Virtual Experience 2020: MySQL 8.0 Document Store - Discovery of a n...
OpenExpo Virtual Experience 2020: MySQL 8.0 Document Store - Discovery of a n...
 
Solution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataSolution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big Data
 
MySQL Document Store (Oracle Code Warsaw 2018)
MySQL Document Store (Oracle Code Warsaw 2018)MySQL Document Store (Oracle Code Warsaw 2018)
MySQL Document Store (Oracle Code Warsaw 2018)
 
Oracle NoSQL Database release 3.0 overview
Oracle NoSQL Database release 3.0 overviewOracle NoSQL Database release 3.0 overview
Oracle NoSQL Database release 3.0 overview
 
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
 
MySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document StoreMySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document Store
 
OUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
OUG Scotland 2014 - NoSQL and MySQL - The best of both worldsOUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
OUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
 
20171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v120171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v1
 
MySQL 8.0 in a nutshell
MySQL 8.0 in a nutshellMySQL 8.0 in a nutshell
MySQL 8.0 in a nutshell
 
State ofdolphin short
State ofdolphin shortState ofdolphin short
State ofdolphin short
 
MySQL Innovation from 5.7 to 8.0
MySQL Innovation from 5.7 to 8.0MySQL Innovation from 5.7 to 8.0
MySQL Innovation from 5.7 to 8.0
 
Con8862 no sql, json and time series data
Con8862   no sql, json and time series dataCon8862   no sql, json and time series data
Con8862 no sql, json and time series data
 
Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016
 

More from Frederic Descamps

MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...Frederic Descamps
 
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionMySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionFrederic Descamps
 
RivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsRivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsFrederic Descamps
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfRivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfFrederic Descamps
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8Frederic Descamps
 
State of the Dolphin - May 2022
State of the Dolphin - May 2022State of the Dolphin - May 2022
State of the Dolphin - May 2022Frederic Descamps
 
Percona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodePercona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodeFrederic Descamps
 
Percona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemPercona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemFrederic Descamps
 
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesFrederic Descamps
 
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemLinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemFrederic Descamps
 
Open Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsOpen Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsFrederic Descamps
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database ServiceFrederic Descamps
 
Confoo 2022 - le cycle d'une instance MySQL
Confoo 2022  - le cycle d'une instance MySQLConfoo 2022  - le cycle d'une instance MySQL
Confoo 2022 - le cycle d'une instance MySQLFrederic Descamps
 
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...Frederic Descamps
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Frederic Descamps
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Frederic Descamps
 
State of The Dolphin - May 2021
State of The Dolphin - May 2021State of The Dolphin - May 2021
State of The Dolphin - May 2021Frederic Descamps
 
Deploying Magento on OCI with MDS
Deploying Magento on OCI with MDSDeploying Magento on OCI with MDS
Deploying Magento on OCI with MDSFrederic Descamps
 

More from Frederic Descamps (20)

MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
 
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionMySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
 
RivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsRivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and Histograms
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfRivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8
 
State of the Dolphin - May 2022
State of the Dolphin - May 2022State of the Dolphin - May 2022
State of the Dolphin - May 2022
 
Percona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodePercona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio Code
 
Percona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemPercona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database System
 
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
 
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemLinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
 
Open Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsOpen Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and Histograms
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
 
Confoo 2022 - le cycle d'une instance MySQL
Confoo 2022  - le cycle d'une instance MySQLConfoo 2022  - le cycle d'une instance MySQL
Confoo 2022 - le cycle d'une instance MySQL
 
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
 
State of The Dolphin - May 2021
State of The Dolphin - May 2021State of The Dolphin - May 2021
State of The Dolphin - May 2021
 
MySQL Shell for DBAs
MySQL Shell for DBAsMySQL Shell for DBAs
MySQL Shell for DBAs
 
Deploying Magento on OCI with MDS
Deploying Magento on OCI with MDSDeploying Magento on OCI with MDS
Deploying Magento on OCI with MDS
 
MySQL Router REST API
MySQL Router REST APIMySQL Router REST API
MySQL Router REST API
 

Recently uploaded

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Recently uploaded (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

MySQL Document Store - How to replace a NoSQL database by MySQL without effort but with a lot gains ?

  • 3. ROOUG, December 2017 MySQL Document Store How to replace a NoSQL database by MySQL without effort but with a lot of gains ?       Frédéric Descamps - MySQL Community Manager - Oracle 3 / 110
  • 4.   Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purpose only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied up in making purchasing decisions. The development, release and timing of any features or functionality described for Oracle´s product remains at the sole discretion of Oracle. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 4 / 110
  • 5. about.me/lefred Who am I ? Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 5 / 110
  • 6. Frédéric Descamps @lefred MySQL Evangelist Hacking MySQL since 3.23 devops believer living in Belgium 🇧🇪 http://lefred.be Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 6 / 110
  • 7. RDBMS & MySQL Relational Databases Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 7 / 110
  • 8. Relational Databases Data Integrity Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 8 / 110
  • 9. Relational Databases Data Integrity normalization Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 9 / 110
  • 10. Relational Databases Data Integrity normalization constraints (foreign keys, ...) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 10 / 110
  • 11. Relational Databases Data Integrity normalization constraints (foreign keys, ...) Atomicity, Consistency, Isolation, Durability Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 11 / 110
  • 12. Relational Databases Data Integrity normalization constraints (foreign keys, ...) Atomicity, Consistency, Isolation, Durability ACID compliant Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 12 / 110
  • 13. Relational Databases Data Integrity normalization constraints (foreign keys, ...) Atomicity, Consistency, Isolation, Durability ACID compliant transactions Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 13 / 110
  • 14. Relational Databases Data Integrity normalization constraints (foreign keys, ...) Atomicity, Consistency, Isolation, Durability ACID compliant transactions SQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 14 / 110
  • 15. Relational Databases Data Integrity normalization constraints (foreign keys, ...) Atomicity, Consistency, Isolation, Durability ACID compliant transactions SQL powerfull query language Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 15 / 110
  • 16. NoSQL & MySQL NoSQL Databases Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 16 / 110
  • 17. NoSQL or Document Store Schemaless Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 17 / 110
  • 18. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 18 / 110
  • 19. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 19 / 110
  • 20. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Flexible data structure Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 20 / 110
  • 21. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Flexible data structure embedded arrays or objects Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 21 / 110
  • 22. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Flexible data structure embedded arrays or objects valid solution when natural data can't be modelized optimaly into a relational model Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 22 / 110
  • 23. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Flexible data structure embedded arrays or objects valid solution when natural data can't be modelized optimaly into a relational model objects persistance without the use of any ORM - mapping oobject-oriented Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 23 / 110
  • 24. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Flexible data structure embedded arrays or objects valid solution when natural data can't be modelized optimaly into a relational model objects persistance without the use of any ORM - mapping oobject-oriented JSON Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 24 / 110
  • 25. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Flexible data structure embedded arrays or objects valid solution when natural data can't be modelized optimaly into a relational model objects persistance without the use of any ORM - mapping oobject-oriented JSON close to frontend Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 25 / 110
  • 26. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Flexible data structure embedded arrays or objects valid solution when natural data can't be modelized optimaly into a relational model objects persistance without the use of any ORM - mapping oobject-oriented JSON close to frontend native in JS Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 26 / 110
  • 27. NoSQL or Document Store Schemaless no schema design, no normalization, no foreign keys, no data types, ... very quick initial development Flexible data structure embedded arrays or objects valid solution when natural data can't be modelized optimaly into a relational model objects persistance without the use of any ORM - mapping oobject-oriented JSON close to frontend native in JS easy to learn Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 27 / 110
  • 28. How DBAs see data Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 28 / 110
  • 29. How DBAs see data How Developers see data { "GNP" : 249704, "Name" : "Belgium", "government" : { "GovernmentForm" : "Constitutional Monarchy, Federation", "HeadOfState" : "Philippe I" }, "_id" : "BEL", "IndepYear" : 1830, "demographics" : { "Population" : 10239000, "LifeExpectancy" : 77.8000030517578 }, "geography" : { "Region" : "Western Europe", "SurfaceArea" : 30518, "Continent" : "Europe" } } Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 29 / 110
  • 30. Relational Model Higher upfront effort during design stage data modeling and normalization physical schema definition Database ensures integrity (invalid data rejected) Data types Constraints (foreign keys etc.) Relational Databases vs Document Store Systems Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 30 / 110
  • 31. Relational Model Higher upfront effort during design stage data modeling and normalization physical schema definition Database ensures integrity (invalid data rejected) Data types Constraints (foreign keys etc.) Document Model Lower upfront effort data structure defined in application code Application responsible for data integrity possibility for bad data to creep into the system (because of bugs, application changes etc.) Relational Databases vs Document Store Systems Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 31 / 110
  • 32. Relational Model Steeper learning curve requires knowledge of SQL Query language allows optimizer to execute complex queries efficiently (specially for JOINs) Schema changes can be problematic (ex upgrades) Relational Databases vs Document Store Systems (2) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 32 / 110
  • 33. Relational Model Steeper learning curve requires knowledge of SQL Query language allows optimizer to execute complex queries efficiently (specially for JOINs) Schema changes can be problematic (ex upgrades) Document Model Easier to get started with Limited or no JOINs, simple optimizer - complexity off-loaded to application Simpler deployment, different versions of the document can coexist Relational Databases vs Document Store Systems (2) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 33 / 110
  • 34. DMBS or NoSQL ? Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 34 / 110
  • 35. DMBS or NoSQL ? Why not both ? Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 35 / 110
  • 36. Developers: [x] schemaless [x] rapid prototying/simpler APIs [x] document model [x] transactions Operations: [x] performance management/visibility [x] robust replication, backup, restore [x] comprehensive tooling ecosystem [x] simpler application schema upgrades Business Owner: [x] don't lose my data == ACID trx [x] capture all my data = extensible/schemaless [x] product on schedule/time to market = rapid developement A solution for all Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 36 / 110
  • 37. MySQL as Document Store Requirements Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 37 / 110
  • 38. MySQL as Document Store: requirements Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 38 / 110
  • 39. MySQL as Document Store: requirements 1. support of JSON datatype Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 39 / 110
  • 40. MySQL as Document Store: requirements 1. support of JSON datatype 2. CRUD Operations Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 40 / 110
  • 41. MySQL as Document Store: requirements 1. support of JSON datatype 2. CRUD Operations 3. X-Plugin & X Protocol Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 41 / 110
  • 42. MySQL as Document Store: requirements 1. support of JSON datatype 2. CRUD Operations 3. X-Plugin & X Protocol extends and replaces the traditional MySQL protocol Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 42 / 110
  • 43. MySQL as Document Store: requirements 1. support of JSON datatype 2. CRUD Operations 3. X-Plugin & X Protocol extends and replaces the traditional MySQL protocol supports asynchronous communication to the server Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 43 / 110
  • 44. MySQL as Document Store: requirements 1. support of JSON datatype 2. CRUD Operations 3. X-Plugin & X Protocol extends and replaces the traditional MySQL protocol supports asynchronous communication to the server supports multiple API calls like Javascript, Python, SQL... Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 44 / 110
  • 45. MySQL as Document Store: requirements 1. support of JSON datatype 2. CRUD Operations 3. X-Plugin & X Protocol extends and replaces the traditional MySQL protocol supports asynchronous communication to the server supports multiple API calls like Javascript, Python, SQL... based on Google Protocol Buffers Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 45 / 110
  • 46. MySQL as Document Store: requirements 1. support of JSON datatype 2. CRUD Operations 3. X-Plugin & X Protocol extends and replaces the traditional MySQL protocol supports asynchronous communication to the server supports multiple API calls like Javascript, Python, SQL... based on Google Protocol Buffers 4. MySQL Shell Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 46 / 110
  • 47. MySQL Document Store Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 47 / 110
  • 48. MySQL as Document Store Starting with DS Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 48 / 110
  • 49. Starting using MySQL DS in few minutes Install X Plugin Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 49 / 110
  • 50. Starting using MySQL DS in few minutes   Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 50 / 110
  • 51. Migration from MongoDB to MySQL DS For this example, I will use the well known restaurants collection: Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 51 / 110
  • 52. Migration from MongoDB to MySQL DS For this example, I will use the well known restaurants collection: We need to dump the data to a file and we will use MySQL Shell with the Python interpreter to load the data. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 52 / 110
  • 53. Migration from MongoDB to MySQL DS For this example, I will use the well known restaurants collection: We need to dump the data to a file and we will use MySQL Shell with the Python interpreter to load the data. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 53 / 110
  • 54. Dump and load using MySQL Shell & Python this example is inspired by @datacharmer's work: https://www.slideshare.net/datacharmer/mysql-documentstore $ mongo --quiet --eval 'DBQuery.shellBatchSize=30000; db.restaurants. nd().shellPrint()' | perl -pe 's/(?:ObjectId|ISODate)(("[^"]+"))/ $1/g' > all_recs.json Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 54 / 110
  • 55. Dump and load using MySQL Shell & Python this example is inspired by @datacharmer's work: https://www.slideshare.net/datacharmer/mysql-documentstore $ mongo --quiet --eval 'DBQuery.shellBatchSize=30000; db.restaurants. nd().shellPrint()' | perl -pe 's/(?:ObjectId|ISODate)(("[^"]+"))/ $1/g' > all_recs.json Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 55 / 110
  • 56. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 56 / 110
  • 57. Let´s query Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 57 / 110
  • 58. Let´s query That´s too much records to show it here... let´s limit it Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 58 / 110
  • 59. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 59 / 110
  • 60. Some more examples Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 60 / 110
  • 61. Some more examples Let´s add a selection criteria: Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 61 / 110
  • 62. Syntax slightly different than MongoDB Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 62 / 110
  • 63. Syntax slightly different than MongoDB > db.restaurants. nd({"cuisine": "French", "borough": { $not: /^Manhattan/} }, {"_id":0, "name": 1,"cuisine": 1, "borough": 1}).limit(2) { "borough" : "Queens", "cuisine" : "French", "name" : "La Baraka Restaurant" } { "borough" : "Queens", "cuisine" : "French", "name" : "Air France Lounge" } Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 63 / 110
  • 64. CRUD operations Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 64 / 110
  • 65. 8.0.3 what´s new ? WL10446 - Customizable prompts WL10568 - Handling of Ctrl+C has been improved on many scenarios WL10708 and WL10823 - NodeSession disappeared in favor of simply Session WL10912 - Changes on connection options handling: case insensitive: i.e. ssl-mode == Ssl-Mode renamed from camel case to word dashed format: sslMode --> ssl-mode WL11054 - Admin API supports automatic turn of of super-read-only option on several functions. WL10682 - Mysqlx.CRUD.Update on top level document Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 65 / 110
  • 66. 8.0.3 what´s new ? (part 2) WL10645 - X Protocol Crud.Find with row locking WL10734 - Spatial index type WL10744 - Full-Text Index Type WL10797 - Mysqlx.Crud.Update: MERGE_PATCH WL10447 - auto-completion by hitting in the middle of typing a shell command, database object, object function, ... Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 66 / 110
  • 67. 8.0.3 labs: auto-completion Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 67 / 110
  • 68. 8.0.3 labs: auto-completion Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 68 / 110
  • 69. 8.0.3 labs: auto-completion - even for SQL ! Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 69 / 110
  • 70. what about my old SQL ? The hidden part of the iceberg Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 70 / 110
  • 71. JSON datatype is behind the scene native datatype (since 5.7.8) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 71 / 110
  • 72. JSON datatype is behind the scene native datatype (since 5.7.8) JSON values are stored in MySQL tables using UTF8MB4 Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 72 / 110
  • 73. JSON datatype is behind the scene native datatype (since 5.7.8) JSON values are stored in MySQL tables using UTF8MB4 Conversion from "native" SQL types to JSON values Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 73 / 110
  • 74. JSON datatype is behind the scene native datatype (since 5.7.8) JSON values are stored in MySQL tables using UTF8MB4 Conversion from "native" SQL types to JSON values JSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH,...) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 74 / 110
  • 75. JSON datatype is behind the scene native datatype (since 5.7.8) JSON values are stored in MySQL tables using UTF8MB4 Conversion from "native" SQL types to JSON values JSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH,...) Generated/virtual columns Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 75 / 110
  • 76. JSON datatype is behind the scene native datatype (since 5.7.8) JSON values are stored in MySQL tables using UTF8MB4 Conversion from "native" SQL types to JSON values JSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH,...) Generated/virtual columns Indexing JSON data Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 76 / 110
  • 77. JSON datatype is behind the scene native datatype (since 5.7.8) JSON values are stored in MySQL tables using UTF8MB4 Conversion from "native" SQL types to JSON values JSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH,...) Generated/virtual columns Indexing JSON data Foreign Keys to JSON data Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 77 / 110
  • 78. JSON datatype is behind the scene native datatype (since 5.7.8) JSON values are stored in MySQL tables using UTF8MB4 Conversion from "native" SQL types to JSON values JSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH,...) Generated/virtual columns Indexing JSON data Foreign Keys to JSON data SQL Views to JSON data Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 78 / 110
  • 79. How does it work ? Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 79 / 110
  • 80. Mapping to SQL examples createCollection('mycollection') Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 80 / 110
  • 81. Mapping to SQL examples createCollection('mycollection') CREATE TABLE `test`.`mycoll` ( doc JSON, _id VARCHAR(32) GENERATED ALWAYS AS (doc->>'$._id') STORED PRIMARY KEY ) CHARSET utf8mb4; Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 81 / 110
  • 82. Mapping to SQL examples createCollection('mycollection') CREATE TABLE `test`.`mycoll` ( doc JSON, _id VARCHAR(32) GENERATED ALWAYS AS (doc->>'$._id') STORED PRIMARY KEY ) CHARSET utf8mb4; mycollection.add({'test': 1234}) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 82 / 110
  • 83. Mapping to SQL examples createCollection('mycollection') CREATE TABLE `test`.`mycoll` ( doc JSON, _id VARCHAR(32) GENERATED ALWAYS AS (doc->>'$._id') STORED PRIMARY KEY ) CHARSET utf8mb4; mycollection.add({'test': 1234}) INSERT INTO `test`.`mycoll` (doc) VALUES ( JSON_OBJECT('_id','663807fe367ee6114e0e5458bdac28bf', 'test',1234) ); Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 83 / 110
  • 84. Mapping to SQL examples (2) mycollection.find("test > 100") Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 84 / 110
  • 85. Mapping to SQL examples (2) mycollection.find("test > 100") SELECT doc FROM `test`.`mycoll` WHERE (JSON_EXTRACT(doc,'$.test') > 100); Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 85 / 110
  • 86. SQL and JSON Example Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 86 / 110
  • 87. SQL and JSON Example same as: Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 87 / 110
  • 88. SQL and JSON Example same as: we can use it in SQL: Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 88 / 110
  • 89. SQL and JSON Example (2): validation Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 89 / 110
  • 90. SQL and JSON Example (2): validation Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 90 / 110
  • 91. SQL and JSON Example (2): validation Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 91 / 110
  • 92. SQL and JSON Example (3): explain Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 92 / 110
  • 93. SQL and JSON Example (3): explain Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 93 / 110
  • 94. SQL and JSON Example (4): add index Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 94 / 110
  • 95. SQL and JSON Example (4): add index Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 95 / 110
  • 96. SQL and JSON Example (5): arrays Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 96 / 110
  • 97. SQL and JSON Example (5): arrays Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 97 / 110
  • 98. SQL and JSON Example (5): arrays Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 98 / 110
  • 99. SQL and JSON Example (5): arrays Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 99 / 110
  • 100. NoSQL as SQL New in MySQL 8.0.3-labs: JSON_TABLE Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 100 / 110
  • 101. NoSQL as SQL (2) New in MySQL 8.0.3-labs: JSON_TABLE Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 101 / 110
  • 102. SQL and NoSQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 102 / 110
  • 103. SQL and NoSQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 103 / 110
  • 104. SQL and NoSQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 104 / 110
  • 105. SQL and NoSQL (2) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 105 / 110
  • 106. SQL and NoSQL (2) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 106 / 110
  • 107. SQL and NoSQL (2) Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 107 / 110
  • 108. what do I gain ? Conclusion Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 108 / 110
  • 109. schemaless flexible data structure easy to start (CRUD) Conclusion This is the best of the two worlds in one product ! Data integrity ACID Compliant SQL Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 109 / 110
  • 110. Thank you ! Any Questions ? http://lefred.be Copyright @ 2017 Oracle and/or its affiliates. All rights reserved. 110 / 110