1 / 120 - databases · [x] document model [x] transactions operations: [x] performance...
TRANSCRIPT
1 / 120
2 / 120
MySQL 8.0
a Document Store with all the benefits of a transactional RDBMS
Frédéric Descamps - MySQL Community Manager - Oracle
3 / 120
Save the date !
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
4 / 120
Safe Harbor StatementThe following is intended to outline our general product direction. It is intended for information purpose only, and may notbe incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not berelied up in making purchasing decisions. The development, release and timing of any features or functionality describedfor Oracle´s product remains at the sole discretion of Oracle.
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
5 / 120
about me - http://about.me/lefred
Who am I ?
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
6 / 120
Frédéric Descamps@lefredMySQL EvangelistHacking MySQL since 3.23devops believerliving in Belgium 🇧🇪http://lefred.be
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
7 / 120
RDBMS & MySQL
Relational Databases
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
8 / 120
Relational DatabasesData Integrity
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
9 / 120
Relational DatabasesData Integrity
normalization
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
10 / 120
Relational DatabasesData Integrity
normalizationconstraints (foreign keys, ...)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
11 / 120
Relational DatabasesData Integrity
normalizationconstraints (foreign keys, ...)
Atomicity, Consistency, Isolation, Durability
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
12 / 120
Relational DatabasesData Integrity
normalizationconstraints (foreign keys, ...)
Atomicity, Consistency, Isolation, DurabilityACID compliant
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
13 / 120
Relational DatabasesData Integrity
normalizationconstraints (foreign keys, ...)
Atomicity, Consistency, Isolation, DurabilityACID complianttransactions
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
14 / 120
Relational DatabasesData Integrity
normalizationconstraints (foreign keys, ...)
Atomicity, Consistency, Isolation, DurabilityACID complianttransactions
SQL
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
15 / 120
Relational DatabasesData Integrity
normalizationconstraints (foreign keys, ...)
Atomicity, Consistency, Isolation, DurabilityACID complianttransactions
SQLpowerfull query language
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
16 / 120
NoSQL & MySQL
NoSQL Databases
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
17 / 120
NoSQL or Document StoreSchemaless
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
18 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
19 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
20 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Flexible data structure
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
21 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Flexible data structureembedded arrays or objects
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
22 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Flexible data structureembedded arrays or objectsvalid solution when natural data can´t be modelized optimaly into a relational model
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
23 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Flexible data structureembedded arrays or objectsvalid solution when natural data can´t be modelized optimaly into a relational modelobjects persistance without the use of any ORM - mapping oobject-oriented
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
24 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Flexible data structureembedded arrays or objectsvalid solution when natural data can´t be modelized optimaly into a relational modelobjects persistance without the use of any ORM - mapping oobject-oriented
JSON
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
25 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Flexible data structureembedded arrays or objectsvalid solution when natural data can´t be modelized optimaly into a relational modelobjects persistance without the use of any ORM - mapping oobject-oriented
JSONclose to frontend
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
26 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Flexible data structureembedded arrays or objectsvalid solution when natural data can´t be modelized optimaly into a relational modelobjects persistance without the use of any ORM - mapping oobject-oriented
JSONclose to frontendnative in JS
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
27 / 120
NoSQL or Document StoreSchemaless
no schema design, no normalization, no foreign keys, no data types, ...very quick initial development
Flexible data structureembedded arrays or objectsvalid solution when natural data can´t be modelized optimaly into a relational modelobjects persistance without the use of any ORM - mapping oobject-oriented
JSONclose to frontendnative in JSeasy to learn
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
28 / 120
How DBAs see data
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
29 / 120
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 @ 2018 Oracle and/or its affiliates. All rights reserved.
30 / 120
What if there was a way to provide both SQL and NoSQL on onestable platform that has proven stability on well know
technology with a large Community and a diverse ecosystem ?
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
31 / 120
DBMS or NoSQL ?
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
32 / 120
DBMS or NoSQL ?
Why not both ?
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
33 / 120
The MySQL Document Store !
SQL is now optional !
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
34 / 120
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 = rapiddevelopement
A solution for all
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
35 / 120
MySQL Document Store
the Solution
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
36 / 120
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
37 / 120
Built on theMySQL JSONData type andProven MySQLServerTechnology
Provides a schema flexible JSON Document StoreNo SQL requiredNo need to define all possible attributes, tables, etc.Uses new X DevAPICan leverage generated column to extract JSON values into materialized columnsthat can be indexed for fast SQL searches.Document can be ~1GB
It's a column in a row of a tableIt cannot exceed max_allowed_packet
Allows use of modern programming stylesNo more embedded strings of SQL in your codeEasy to read
Also works with relational TablesProven MySQL Technology
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
38 / 120
X DevAPI Connectors forC++, Java, .Net, Node.js, Python, PHPworking with Communities to help them supporting it too
New MySQL ShellCommand CompletionPython, JavaScrips & SQL modesAdmin functionsNew Util objectA new high-level session concept that can scale from single MySQL Server toa multiple server environment
Non-blocking, asynchronous calls follow common language patternsSupports CRUD operations
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
39 / 120
Starting using MySQL DS in few minutes
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
40 / 120
MySQL Shell Info
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
41 / 120
Migration from MongoDB to MySQL DSFor this example, I will use the well known restaurants collection:
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
42 / 120
Migration from MongoDB to MySQL DSFor 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 @ 2018 Oracle and/or its affiliates. All rights reserved.
43 / 120
Migration from MongoDB to MySQL DSFor 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 @ 2018 Oracle and/or its affiliates. All rights reserved.
44 / 120
Dump and load using MySQL Shell & Pythonthis 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 @ 2018 Oracle and/or its affiliates. All rights reserved.
45 / 120
Dump and load using MySQL Shell & Pythonthis 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 @ 2018 Oracle and/or its affiliates. All rights reserved.
46 / 120
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
47 / 120
Let´s query
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
48 / 120
Let´s query
That´s too much records to show it here... let´s limit it
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
49 / 120
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
50 / 120
Some more examples
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
51 / 120
Some more examples
Let´s add a selection criteria:
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
52 / 120
Using IN...
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
53 / 120
Syntax slightly different than MongoDB
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
54 / 120
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",
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
55 / 120
CRUD operations
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
56 / 120
CRUD operations for collections
Add a document
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
57 / 120
CRUD operations for collections
Modify a document
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
58 / 120
CRUD operations for collections
Remove a document
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
59 / 120
MySQL Document Store Objects Summary
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
60 / 120
Document Store Full ACID !It relies on the proven MySQL InnoDB´s strength & robustness:
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
61 / 120
Document Store Full ACID !It relies on the proven MySQL InnoDB´s strength & robustness:
innodb_�ush_log_at_trx_commit = 1
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
62 / 120
Document Store Full ACID !It relies on the proven MySQL InnoDB´s strength & robustness:
innodb_�ush_log_at_trx_commit = 1
innodb_doublewrite = ON
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
63 / 120
Document Store Full ACID !It relies on the proven MySQL InnoDB´s strength & robustness:
innodb_�ush_log_at_trx_commit = 1
innodb_doublewrite = ON
sync_binlog = 1
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
64 / 120
Document Store Full ACID !It relies on the proven MySQL InnoDB´s strength & robustness:
innodb_�ush_log_at_trx_commit = 1
innodb_doublewrite = ON
sync_binlog = 1
transaction_isolation = REPEATABLE-READ|READ-COMMITTED|...
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
65 / 120
Document Store Full ACID !It relies on the proven MySQL InnoDB´s strength & robustness:
innodb_�ush_log_at_trx_commit = 1
innodb_doublewrite = ON
sync_binlog = 1
transaction_isolation = REPEATABLE-READ|READ-COMMITTED|...
We do care about your data !
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
66 / 120
Document Store Full ACID !
MySQL Document Store supports transactions
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
67 / 120
Document Store Full ACID !
MySQL Document Store supports transactions
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
68 / 120
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
69 / 120
what about my old SQL ?
The hidden part of the iceberg
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
70 / 120
JSON datatype is behind the scenenative datatype (since 5.7.8)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
71 / 120
JSON datatype is behind the scenenative datatype (since 5.7.8)JSON values are stored in MySQL tables using UTF8MB4
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
72 / 120
JSON datatype is behind the scenenative datatype (since 5.7.8)JSON values are stored in MySQL tables using UTF8MB4Conversion from "native" SQL types to JSON values
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
73 / 120
JSON datatype is behind the scenenative datatype (since 5.7.8)JSON values are stored in MySQL tables using UTF8MB4Conversion from "native" SQL types to JSON valuesJSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH, JSON_TABLES, ...)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
74 / 120
JSON datatype is behind the scenenative datatype (since 5.7.8)JSON values are stored in MySQL tables using UTF8MB4Conversion from "native" SQL types to JSON valuesJSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH, JSON_TABLES, ...)Generated/virtual columns
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
75 / 120
JSON datatype is behind the scenenative datatype (since 5.7.8)JSON values are stored in MySQL tables using UTF8MB4Conversion from "native" SQL types to JSON valuesJSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH, JSON_TABLES, ...)Generated/virtual columns
Indexing JSON data
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
76 / 120
JSON datatype is behind the scenenative datatype (since 5.7.8)JSON values are stored in MySQL tables using UTF8MB4Conversion from "native" SQL types to JSON valuesJSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH, JSON_TABLES, ...)Generated/virtual columns
Indexing JSON dataForeign Keys to JSON data
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
77 / 120
JSON datatype is behind the scenenative datatype (since 5.7.8)JSON values are stored in MySQL tables using UTF8MB4Conversion from "native" SQL types to JSON valuesJSON manipulation functions (JSON_EXTRACT, JSON_KEYS, JSON_SEARCH, JSON_TABLES, ...)Generated/virtual columns
Indexing JSON dataForeign Keys to JSON dataSQL Views to JSON data
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
78 / 120
How does the MySQL Document Store work ?
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
79 / 120
What does a collection look like on the server ?
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
80 / 120
_id Every document has a unique identifier called the document ID, which can be thoughtof as the equivalent of a table´s primary key. The document ID value can be manuallyassigned when adding a document. If no value is assigned, a document ID isgenerated and assigned to the document automatically !
Use getDocumentId() or getDocumentIds() to get _ids(s)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
81 / 120
Mapping to SQL examplescreateCollection('mycollection')
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
82 / 120
Mapping to SQL examplescreateCollection('mycollection')
CREATE TABLE `test`.`mycoll` ( doc JSON, _id VARCHAR(32) GENERATED ALWAYS AS (doc->>'$._id') STORED PRIMARY KEY ) CHARSET utf8mb4;
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
83 / 120
Mapping to SQL examplescreateCollection('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 @ 2018 Oracle and/or its affiliates. All rights reserved.
84 / 120
Mapping to SQL examplescreateCollection('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 @ 2018 Oracle and/or its affiliates. All rights reserved.
85 / 120
Mapping to SQL examples (2)mycollection.find("test > 100")
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
86 / 120
Mapping to SQL examples (2)mycollection.find("test > 100")
SELECT doc FROM `test`.`mycoll` WHERE (JSON_EXTRACT(doc,'$.test') > 100);
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
87 / 120
SQL and JSON Example
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
88 / 120
SQL and JSON Example
same as:
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
89 / 120
SQL and JSON Example
same as:
we can use it in SQL:
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
90 / 120
Indexes in Document StoreIt's also possible to create indexes without using SQL syntax:
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
91 / 120
Indexes in Document StoreIt's also possible to create indexes without using SQL syntax:
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
92 / 120
SQL and JSON Example (2): validation
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
93 / 120
SQL and JSON Example (2): validation
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
94 / 120
SQL and JSON Example (2): validation
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
95 / 120
SQL and JSON Example (3): explain
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
96 / 120
SQL and JSON Example (3): explain
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
97 / 120
SQL and JSON Example (4): add index
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
98 / 120
SQL and JSON Example (4): add index
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
99 / 120
SQL and JSON Example (5): arrays
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
100 / 120
SQL and JSON Example (5): arrays
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
101 / 120
SQL and JSON Example (5): arrays
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
102 / 120
SQL and JSON Example (5): arrays
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
103 / 120
NoSQL as SQL
JSON_TABLE
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
104 / 120
NoSQL as SQL (2)
JSON_TABLE
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
105 / 120
NoSQL as SQL - aggregation
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
106 / 120
NoSQL as SQL - aggregation (2)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
107 / 120
SQL and NoSQL - JOINS
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
108 / 120
SQL and NoSQL - JOINS
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
109 / 120
SQL and NoSQL - JOINS
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
110 / 120
SQL and NoSQL - JOINS (2)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
111 / 120
SQL and NoSQL - JOINS (2)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
112 / 120
SQL and NoSQL - JOINS (2)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
113 / 120
SQL and NoSQL - and back to JSON Document
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
114 / 120
NoSQL or SQLJS> session.sql("select doc->>'$.name', doc->>'$.cuisine' from restaurants where doc->>'$.cuisine'='Italian' limit 2")
+----------------------------+-------------------+| doc->>'$.name' | doc->>'$.cuisine' |+----------------------------+-------------------+| Philadelhia Grille Express | Italian || Isle Of Capri Resturant | Italian |+----------------------------+-------------------+2 rows in set (0.0287 sec)
JS> db.restaurants.�nd("cuisine='Italian'").�elds('name','cuisine').limit(2)[ { "cuisine": "Italian", "name": "Philadelhia Grille Express" }, { "cuisine": "Italian", "name": "Isle Of Capri Resturant" }]2 documents in set (0.0015 sec)
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
115 / 120
what do I gain ?
Conclusion
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
116 / 120
schemalessflexible data structureeasy to start (CRUD)
ConclusionThis is the best of the two worlds in one product !
Data integrityACID CompliantTransactionsSQL
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
117 / 120
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
118 / 120
http://lefred.be/content/top-10-reasons-for-nosql-with-mysql/
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
119 / 120
Thank you !
Any Questions ?
share your 💕 for MySQL on social media using @mysql #DataOpsBarcelona
Copyright @ 2018 Oracle and/or its affiliates. All rights reserved.
120 / 120