SlideShare a Scribd company logo
1 of 42
Download to read offline
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
MySQL 8 Loves JavaScript
Sanjay Manwani
MySQL India Director
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.
1
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
MySQL Innovation: 5.7 -> 8.0
- 3x Better Performance
- Replication Enhancements
- Optimizer Cost Model
- JSON Support
- Improved Security
- Sys & Performance Schema
- GIS
MySQL 5.7
MySQL InnoDB Cluster
- MySQL Group Replication
- MySQL Router
- MySQL Shell
MySQL 8.0
- NoSQL Document Store
- JSON
- CTEs
- Window Functions
- Data Dictionary
- InnoDB
- Replication
- Roles
- Unicode
- GIS
2 Years in Development
400+ Worklogs
5000+ Bugs Fixed
500 New Tests
GA
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 3
MySQL 8.0: Document Store
• Document oriented data storage for MySQL
– Full JSON document support through SQL and new X DevAPI NoSQL interface
• Schema-less and schema based data in the same technology stack
– Use COLLECTIONs of documents & relational TABLEs together
• Rapid Prototyping & Simple CRUD APIs
– Modern APIs using “method chaining” and asynchronous execution (e.g. promises, callbacks, etc.)
• Connectors for many different languages and frameworks
– Node.JS, Java, NET, C++/C, PHP, Python
NoSQL + SQL
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 4
X ProtocolStd Protocol
SQL API CRUD and SQL APIs
JSON Collections
SQL Tables
MySQL Databases
SQL and NoSQL
{“_id: “232342”,
“firstname”: “John”,
“lastname”: “Doe”,
“city”: “anytown”};
City
Name Pop Area
Anytown 2003 33
Othertown 23000 400
Relational Tables
MySQL Shell
Scripting
MySQL Connectors (Node.js, Python, Java, .Net)
SQL NoSQL
JSON Collections
Applications
MySQL 8.0: Document Store Architecture
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 5
Collections
• A Collection is a set of JSON Documents
• Each document has it's unique ID in an _id property
• Easy to search within documents
• Implemented as a table with a JSON column and indexes on generated
columns
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 6
X Protocol
• New Protocol implemented in X Plugin
• Based on Google Protocol Buffers
• More flexibility for future extensions
• Better understanding of content
• CRUD Expression trees in protocol
• Expectations to attach conditions on pipelined statements
• Bound parameters
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
• Full Node.js integration
– Support for “Promises”
• Autocompletion support in IDEs
– Due to method chaining support
• Intuitive Documentation & Tutorials
– Example:
7
MySQL 8.0: Document Store
Designed for modern Developers
COLLECTION.add Function
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 8
Node.JS
• Programming model
• Single-threaded environment (it's JavaScript after all)
• Asynchronous callback-based core
• Non-blocking operations run immediately and sequentially
• Blocking operations queued outside execution scope
• Result of a blocking operation is handled "eventually"
• Concurrency with C++ APIs (threads) or multiple processes
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 9
Node.JS : Dealing with asynchronicity
• Push-based abstractions for asynchronous callbacks:
• Event emitters
• Streams (special kind of event emitters)
• Promises
• Pull-based abstractions for asynchronous callbacks:
• Generators
• Async/await
• Many other userland experiments of both kinds
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 10
Node.JS :Callback pattern
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 11
No.JS : Promise
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 12
MySQL Connector/Node.js
• Official implementation
• Based on the brand new X protocol
• Asynchronous and Promise-based
• Supports async/await
• Fluent/chainable API (out-of-the-box query builder)
• Flexible parameter methods
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 13
MySQL Connector/Node.js
Some features
• Document store CRUD API
• Relational CRUD API
• Fallback to plain old SQL
• Transactions and row locking
• Secure sessions (SSL/TLS)
• Authentication
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 14
Collections : CRUD
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 15
Simple push-based "cursors"
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 16
Operation completion
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 17
Boilerplate, sessions and schemas
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 18
Some Schema
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 19
CRUD : Create
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 20
CRUD : Update
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 21
CRUD : Delete
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 22
Transaction Support
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 23
Fallback to plain-old SQL
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 24
SSL Options
The sha256_password authentication can be used on MySQL 8.0.0 or later versions.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
InnoDB Cluster
25
App Servers with
MySQL Router
MySQL Group Replication
MySQL Shell
Setup, Manage,
Orchestrate
“High Availability becomes a core
first class feature of MySQL!”
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 26
Get started in minutes
MySQL 8.0: Shell
• Rapid prototyping capabilities
– Using JavaScript and Python
• Full SQL and X DevAPI support
– With built in auto-completion
• InnoDB Cluster support
– Setup your HA solution within minutes
• DevOps Tool
– Designed for DevOps operations
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: JSON Functions
27
JSON_ARRAY_APPEND()
JSON_ARRAY_INSERT()
JSON_ARRAY()
JSON_CONTAINS_PATH()
JSON_CONTAINS()
JSON_DEPTH()
JSON_EXTRACT()
JSON_INSERT()
JSON_KEYS()
JSON_LENGTH()
JSON_MERGE[_PRESERVE]()
JSON_OBJECT()
JSON_QUOTE()
JSON_REMOVE()
JSON_REPLACE()
JSON_SEARCH()
JSON_SET()
JSON_TYPE()
JSON_UNQUOTE()
JSON_VALID()
JSON_PRETTY()
JSON_STORAGE_SIZE()
JSON_STORAGE_FREE()
JSON_ARRAYAGG()
JSON_OBJECTAGG()
JSON_MERGE_PATCH()
JSON_TABLE()
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Documentation :Tutorials
• https://dev.mysql.com/doc/x-devapi-userguide/en/
• https://www.npmjs.com/package/@mysql/xdevapi
• https://github.com/mysql/mysql-connector-nodejs
• https://dev.mysql.com/doc/dev/connector-nodejs/
28
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: Efficient Replication of JSON Documents
Replicate only changed fields of documents (Partial JSON Updates)
0
10000
20000
30000
40000
50000
60000
Entire JSON Partial JSON
Bytespertransaction
Binary Log Space Per Transaction
FULL MINIMAL
• Numbers are from a specially
designed benchmark:
• tables have 10 JSON fields,
• each transaction modifies
around 10% of the data
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: Invisible Indexes
• Indexes are “hidden” to the MySQL Optimizer
– Not the same as “disabled indexes”
– Contents are fully up to date and maintained by DML
• Two use cases:
– Soft Delete (Recycle Bin)
– Staged Rollout
30
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: SQL Roles
• Fully Function, Flexible, Properly Architected Roles
• Create and Drop Roles, Grant to Roles
• Grant Roles to Roles, Grant Roles to Users
• Limit Hosts that can use roles, Define Default Roles
• And even visualize Roles with SQL function ROLES_GRAPHML()
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
• Simple
– Completely built in and ready to use
– No extra configuration or Installation
• Powerful
– Full Geography Support
• Projected – Flat/Across 2 dimensions
• Geographic – Spheroid
MySQL 8.0: GIS
32
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: Persist Configuration
• Persist GLOBAL Server Variables
– SET PERSIST max_connections = 500;
• Examples Include:
– Offline_mode
– Read_Only
• Requires no filesystem access
• New! Captures timestamp and change user
33
Cloud Friendly
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: Better Handling of Hot Row Contention
34
SELECT * FROM tickets
WHERE id IN (1,2,3,4)
AND order_id IS NULL
FOR UPDATE
NOWAIT;
SELECT * FROM tickets
WHERE id IN (1,2,3,4)
AND order_id IS NULL
FOR UPDATE
SKIP LOCKED;
Error immediately if
a row is already
locked
Non
deterministically
skip over locked
rows
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: CTEs & Window Functions
• Common Table Expression (WITH clause)
– Non-recursive
– Recursive
– Used for hierarchy traversal
• Window functions
– Aggregation, ranking, analytics
– Used for analytics and reporting
35
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: Alter Table - Instant Add Column
• Contribution from Tencent
– Only a metadata change
– No copying of data
– Smaller final data size
– Forward compatibility with old data file
• ALTER TABLE … ADD COLUMN c, ALGORITHM = INSTANT
• Supports DYNAMIC/COMPACT/REDUNDANT row formats
36
Labs
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
All these features plus…
• Source code now documented with
Doxygen
• Plugin Infrastructure!
• Expanded GIS Support
• Expanded Query Hints Support
• Improved Scan Query Performance
• Improved BLOB Storage
• Improved Memcached Interface
• Cost Model Improvements
• Scalability Improvements
• Atomicity in Privileges
• Parser Refactoring
• Improvements to Temporary Tables
• C++11 and Toolchain Improvements
• GTID_PURGED always settable
• Persistent Auto Increment
• Native InnoDB Data dictionary
• Improved Information Schema performance
• New! SQL Grouping Function
• New! Optimizer Trace detailed sort statistics
• New! Descending Indexes
• New! Smaller Package Downloads
• New! JSON Aggregate, Pretty print functions
• New! JSON performance improvements
• New! Expanded Query Hints
• New! Improved usability of cost constant
configuration
• Group Replication in 8.0
• New! Transaction Save Point support in
Group Replication
• New! Improved Replication Applier Lag
Statistics in Performance Schema
• New! Per Multi-source Channel Replication
Filters
• New! Atomic DDL extended to the Binary
Log
• New! Performance Improvements on the
Replication Applier
• New! Parallel Replication Applier Policy
• New! Binary Log Management
Enhancements
• New! Additional Metadata Into the Binary
Log
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL 8.0: Upgrade Checker
38
• Quick and Easy MySQL Shell Utility
– JavaScript
– Python
• Identifies Issues Based on Severity
– No Issues
– Potential Errors
– Errors that must be fixed before Upgrading
• Recommends Fixes
– Schema, Configuration
– Data on Server, etc.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Learn More
• MySQL Blogs : https://blogs.oracle.com/mysql
• MySQL Support team Blogs : https://dev.mysql.com/support/blogs
• Planet MySQL : https://planet.mysql.com
• MySQL User Camp in Bangalore
• MySQL forums across the internet : Thank you MySQL community
• When all else fails: Documentation : https://dev.mysql.com/doc
39
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
MySQL Powers the Web
40
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for
information purposes 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 upon
in making purchasing decisions. The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 42
8
8
8

More Related Content

What's hot

My sql fabric webinar tw2
My sql fabric webinar tw2My sql fabric webinar tw2
My sql fabric webinar tw2
Ivan Tu
 

What's hot (20)

InnoDB Tablespace Encryption
InnoDB Tablespace Encryption InnoDB Tablespace Encryption
InnoDB Tablespace Encryption
 
MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?
 
20190817 coscup-oracle my sql innodb cluster sharing
20190817 coscup-oracle my sql innodb cluster sharing20190817 coscup-oracle my sql innodb cluster sharing
20190817 coscup-oracle my sql innodb cluster sharing
 
MySQL 8.0, what's new ? - Forum PHP 2018
MySQL 8.0, what's new ? - Forum PHP 2018MySQL 8.0, what's new ? - Forum PHP 2018
MySQL 8.0, what's new ? - Forum PHP 2018
 
Containerized MySQL OpenWorld talk
Containerized MySQL OpenWorld talkContainerized MySQL OpenWorld talk
Containerized MySQL OpenWorld talk
 
20180420 hk-the powerofmysql8
20180420 hk-the powerofmysql820180420 hk-the powerofmysql8
20180420 hk-the powerofmysql8
 
Provisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerProvisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack Manager
 
20190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev220190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev2
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17
 
PLNOG19 - Krzysztof Mazepa - Yang Development Kit – stwórz swój pierwszy prog...
PLNOG19 - Krzysztof Mazepa - Yang Development Kit – stwórz swój pierwszy prog...PLNOG19 - Krzysztof Mazepa - Yang Development Kit – stwórz swój pierwszy prog...
PLNOG19 - Krzysztof Mazepa - Yang Development Kit – stwórz swój pierwszy prog...
 
MySQL Spatial
MySQL SpatialMySQL Spatial
MySQL Spatial
 
Oracle OpenWo2014 review part 03 three_paa_s_database
Oracle OpenWo2014 review part 03 three_paa_s_databaseOracle OpenWo2014 review part 03 three_paa_s_database
Oracle OpenWo2014 review part 03 three_paa_s_database
 
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document StoreConnector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
 
Welcome to databases in the Cloud
Welcome to databases in the CloudWelcome to databases in the Cloud
Welcome to databases in the Cloud
 
Using Atlassian UAL and ActiveObjects for Rapid Plugin Development - AtlasCam...
Using Atlassian UAL and ActiveObjects for Rapid Plugin Development - AtlasCam...Using Atlassian UAL and ActiveObjects for Rapid Plugin Development - AtlasCam...
Using Atlassian UAL and ActiveObjects for Rapid Plugin Development - AtlasCam...
 
Unlocking Big Data Insights with MySQL
Unlocking Big Data Insights with MySQLUnlocking Big Data Insights with MySQL
Unlocking Big Data Insights with MySQL
 
My sql fabric webinar tw2
My sql fabric webinar tw2My sql fabric webinar tw2
My sql fabric webinar tw2
 
OEM12c, DB12c and You! - RMOUG TD2014 Edition
OEM12c, DB12c and You! - RMOUG TD2014 EditionOEM12c, DB12c and You! - RMOUG TD2014 Edition
OEM12c, DB12c and You! - RMOUG TD2014 Edition
 
Oracle golden gate training course
Oracle golden gate training courseOracle golden gate training course
Oracle golden gate training course
 
MySQL For Linux Sysadmins
MySQL For Linux SysadminsMySQL For Linux Sysadmins
MySQL For Linux Sysadmins
 

Similar to MySQL 8 loves JavaScript

2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
Geir Høydalsvik
 

Similar to MySQL 8 loves JavaScript (20)

2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
 
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
 
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
 
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 Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQLMySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQL
 
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)
 
MySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The DolphinMySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The Dolphin
 
What's New in MySQL 8.0 @ HKOSC 2017
What's New in MySQL 8.0 @ HKOSC 2017What's New in MySQL 8.0 @ HKOSC 2017
What's New in MySQL 8.0 @ HKOSC 2017
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document Store
 
MySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document StoreMySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document Store
 
My sql5.7 whatsnew_presentedatgids2015
My sql5.7 whatsnew_presentedatgids2015My sql5.7 whatsnew_presentedatgids2015
My sql5.7 whatsnew_presentedatgids2015
 
제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL
 
MySQL Day Paris 2018 - Introduction & The State of the Dolphin
MySQL Day Paris 2018 - Introduction & The State of the DolphinMySQL Day Paris 2018 - Introduction & The State of the Dolphin
MySQL Day Paris 2018 - Introduction & The State of the Dolphin
 
Novinky v Oracle Database 18c
Novinky v Oracle Database 18cNovinky v Oracle Database 18c
Novinky v Oracle Database 18c
 
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: security
 
Upgrade to MySQL 8.0!
Upgrade to MySQL 8.0!Upgrade to MySQL 8.0!
Upgrade to MySQL 8.0!
 
01 upgrade to my sql8
01 upgrade to my sql8 01 upgrade to my sql8
01 upgrade to my sql8
 
ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)
 
What's New in MySQL 5.7
What's New in MySQL 5.7What's New in MySQL 5.7
What's New in MySQL 5.7
 

Recently uploaded

在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
ydyuyu
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Monica Sydney
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Monica Sydney
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Monica Sydney
 
一比一原版贝德福特大学毕业证学位证书
一比一原版贝德福特大学毕业证学位证书一比一原版贝德福特大学毕业证学位证书
一比一原版贝德福特大学毕业证学位证书
F
 

Recently uploaded (20)

Dubai Call Girls First Class O525547819 Call Girls Dubai Hot New Girlfriend
Dubai Call Girls First Class O525547819 Call Girls Dubai Hot New GirlfriendDubai Call Girls First Class O525547819 Call Girls Dubai Hot New Girlfriend
Dubai Call Girls First Class O525547819 Call Girls Dubai Hot New Girlfriend
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
 
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
 
Mira Road Housewife Call Girls 07506202331, Nalasopara Call Girls
Mira Road Housewife Call Girls 07506202331, Nalasopara Call GirlsMira Road Housewife Call Girls 07506202331, Nalasopara Call Girls
Mira Road Housewife Call Girls 07506202331, Nalasopara Call Girls
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
 
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
一比一原版贝德福特大学毕业证学位证书
一比一原版贝德福特大学毕业证学位证书一比一原版贝德福特大学毕业证学位证书
一比一原版贝德福特大学毕业证学位证书
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
 
Local Call Girls in Jharsuguda 9332606886 HOT & SEXY Models beautiful and ch...
Local Call Girls in Jharsuguda  9332606886 HOT & SEXY Models beautiful and ch...Local Call Girls in Jharsuguda  9332606886 HOT & SEXY Models beautiful and ch...
Local Call Girls in Jharsuguda 9332606886 HOT & SEXY Models beautiful and ch...
 
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...
 

MySQL 8 loves JavaScript

  • 1. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | MySQL 8 Loves JavaScript Sanjay Manwani MySQL India Director Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 1
  • 2. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | MySQL Innovation: 5.7 -> 8.0 - 3x Better Performance - Replication Enhancements - Optimizer Cost Model - JSON Support - Improved Security - Sys & Performance Schema - GIS MySQL 5.7 MySQL InnoDB Cluster - MySQL Group Replication - MySQL Router - MySQL Shell MySQL 8.0 - NoSQL Document Store - JSON - CTEs - Window Functions - Data Dictionary - InnoDB - Replication - Roles - Unicode - GIS 2 Years in Development 400+ Worklogs 5000+ Bugs Fixed 500 New Tests GA
  • 3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 3 MySQL 8.0: Document Store • Document oriented data storage for MySQL – Full JSON document support through SQL and new X DevAPI NoSQL interface • Schema-less and schema based data in the same technology stack – Use COLLECTIONs of documents & relational TABLEs together • Rapid Prototyping & Simple CRUD APIs – Modern APIs using “method chaining” and asynchronous execution (e.g. promises, callbacks, etc.) • Connectors for many different languages and frameworks – Node.JS, Java, NET, C++/C, PHP, Python NoSQL + SQL
  • 4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 4 X ProtocolStd Protocol SQL API CRUD and SQL APIs JSON Collections SQL Tables MySQL Databases SQL and NoSQL {“_id: “232342”, “firstname”: “John”, “lastname”: “Doe”, “city”: “anytown”}; City Name Pop Area Anytown 2003 33 Othertown 23000 400 Relational Tables MySQL Shell Scripting MySQL Connectors (Node.js, Python, Java, .Net) SQL NoSQL JSON Collections Applications MySQL 8.0: Document Store Architecture
  • 5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 5 Collections • A Collection is a set of JSON Documents • Each document has it's unique ID in an _id property • Easy to search within documents • Implemented as a table with a JSON column and indexes on generated columns
  • 6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 6 X Protocol • New Protocol implemented in X Plugin • Based on Google Protocol Buffers • More flexibility for future extensions • Better understanding of content • CRUD Expression trees in protocol • Expectations to attach conditions on pipelined statements • Bound parameters
  • 7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. • Full Node.js integration – Support for “Promises” • Autocompletion support in IDEs – Due to method chaining support • Intuitive Documentation & Tutorials – Example: 7 MySQL 8.0: Document Store Designed for modern Developers COLLECTION.add Function
  • 8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 8 Node.JS • Programming model • Single-threaded environment (it's JavaScript after all) • Asynchronous callback-based core • Non-blocking operations run immediately and sequentially • Blocking operations queued outside execution scope • Result of a blocking operation is handled "eventually" • Concurrency with C++ APIs (threads) or multiple processes
  • 9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 9 Node.JS : Dealing with asynchronicity • Push-based abstractions for asynchronous callbacks: • Event emitters • Streams (special kind of event emitters) • Promises • Pull-based abstractions for asynchronous callbacks: • Generators • Async/await • Many other userland experiments of both kinds
  • 10. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 10 Node.JS :Callback pattern
  • 11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 11 No.JS : Promise
  • 12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 12 MySQL Connector/Node.js • Official implementation • Based on the brand new X protocol • Asynchronous and Promise-based • Supports async/await • Fluent/chainable API (out-of-the-box query builder) • Flexible parameter methods
  • 13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 13 MySQL Connector/Node.js Some features • Document store CRUD API • Relational CRUD API • Fallback to plain old SQL • Transactions and row locking • Secure sessions (SSL/TLS) • Authentication
  • 14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 14 Collections : CRUD
  • 15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 15 Simple push-based "cursors"
  • 16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 16 Operation completion
  • 17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 17 Boilerplate, sessions and schemas
  • 18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 18 Some Schema
  • 19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 19 CRUD : Create
  • 20. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 20 CRUD : Update
  • 21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 21 CRUD : Delete
  • 22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 22 Transaction Support
  • 23. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 23 Fallback to plain-old SQL
  • 24. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 24 SSL Options The sha256_password authentication can be used on MySQL 8.0.0 or later versions.
  • 25. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. InnoDB Cluster 25 App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate “High Availability becomes a core first class feature of MySQL!”
  • 26. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 26 Get started in minutes MySQL 8.0: Shell • Rapid prototyping capabilities – Using JavaScript and Python • Full SQL and X DevAPI support – With built in auto-completion • InnoDB Cluster support – Setup your HA solution within minutes • DevOps Tool – Designed for DevOps operations
  • 27. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: JSON Functions 27 JSON_ARRAY_APPEND() JSON_ARRAY_INSERT() JSON_ARRAY() JSON_CONTAINS_PATH() JSON_CONTAINS() JSON_DEPTH() JSON_EXTRACT() JSON_INSERT() JSON_KEYS() JSON_LENGTH() JSON_MERGE[_PRESERVE]() JSON_OBJECT() JSON_QUOTE() JSON_REMOVE() JSON_REPLACE() JSON_SEARCH() JSON_SET() JSON_TYPE() JSON_UNQUOTE() JSON_VALID() JSON_PRETTY() JSON_STORAGE_SIZE() JSON_STORAGE_FREE() JSON_ARRAYAGG() JSON_OBJECTAGG() JSON_MERGE_PATCH() JSON_TABLE()
  • 28. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Documentation :Tutorials • https://dev.mysql.com/doc/x-devapi-userguide/en/ • https://www.npmjs.com/package/@mysql/xdevapi • https://github.com/mysql/mysql-connector-nodejs • https://dev.mysql.com/doc/dev/connector-nodejs/ 28
  • 29. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: Efficient Replication of JSON Documents Replicate only changed fields of documents (Partial JSON Updates) 0 10000 20000 30000 40000 50000 60000 Entire JSON Partial JSON Bytespertransaction Binary Log Space Per Transaction FULL MINIMAL • Numbers are from a specially designed benchmark: • tables have 10 JSON fields, • each transaction modifies around 10% of the data
  • 30. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: Invisible Indexes • Indexes are “hidden” to the MySQL Optimizer – Not the same as “disabled indexes” – Contents are fully up to date and maintained by DML • Two use cases: – Soft Delete (Recycle Bin) – Staged Rollout 30
  • 31. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: SQL Roles • Fully Function, Flexible, Properly Architected Roles • Create and Drop Roles, Grant to Roles • Grant Roles to Roles, Grant Roles to Users • Limit Hosts that can use roles, Define Default Roles • And even visualize Roles with SQL function ROLES_GRAPHML()
  • 32. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | • Simple – Completely built in and ready to use – No extra configuration or Installation • Powerful – Full Geography Support • Projected – Flat/Across 2 dimensions • Geographic – Spheroid MySQL 8.0: GIS 32
  • 33. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: Persist Configuration • Persist GLOBAL Server Variables – SET PERSIST max_connections = 500; • Examples Include: – Offline_mode – Read_Only • Requires no filesystem access • New! Captures timestamp and change user 33 Cloud Friendly
  • 34. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: Better Handling of Hot Row Contention 34 SELECT * FROM tickets WHERE id IN (1,2,3,4) AND order_id IS NULL FOR UPDATE NOWAIT; SELECT * FROM tickets WHERE id IN (1,2,3,4) AND order_id IS NULL FOR UPDATE SKIP LOCKED; Error immediately if a row is already locked Non deterministically skip over locked rows
  • 35. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: CTEs & Window Functions • Common Table Expression (WITH clause) – Non-recursive – Recursive – Used for hierarchy traversal • Window functions – Aggregation, ranking, analytics – Used for analytics and reporting 35
  • 36. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: Alter Table - Instant Add Column • Contribution from Tencent – Only a metadata change – No copying of data – Smaller final data size – Forward compatibility with old data file • ALTER TABLE … ADD COLUMN c, ALGORITHM = INSTANT • Supports DYNAMIC/COMPACT/REDUNDANT row formats 36 Labs
  • 37. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. All these features plus… • Source code now documented with Doxygen • Plugin Infrastructure! • Expanded GIS Support • Expanded Query Hints Support • Improved Scan Query Performance • Improved BLOB Storage • Improved Memcached Interface • Cost Model Improvements • Scalability Improvements • Atomicity in Privileges • Parser Refactoring • Improvements to Temporary Tables • C++11 and Toolchain Improvements • GTID_PURGED always settable • Persistent Auto Increment • Native InnoDB Data dictionary • Improved Information Schema performance • New! SQL Grouping Function • New! Optimizer Trace detailed sort statistics • New! Descending Indexes • New! Smaller Package Downloads • New! JSON Aggregate, Pretty print functions • New! JSON performance improvements • New! Expanded Query Hints • New! Improved usability of cost constant configuration • Group Replication in 8.0 • New! Transaction Save Point support in Group Replication • New! Improved Replication Applier Lag Statistics in Performance Schema • New! Per Multi-source Channel Replication Filters • New! Atomic DDL extended to the Binary Log • New! Performance Improvements on the Replication Applier • New! Parallel Replication Applier Policy • New! Binary Log Management Enhancements • New! Additional Metadata Into the Binary Log
  • 38. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL 8.0: Upgrade Checker 38 • Quick and Easy MySQL Shell Utility – JavaScript – Python • Identifies Issues Based on Severity – No Issues – Potential Errors – Errors that must be fixed before Upgrading • Recommends Fixes – Schema, Configuration – Data on Server, etc.
  • 39. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Learn More • MySQL Blogs : https://blogs.oracle.com/mysql • MySQL Support team Blogs : https://dev.mysql.com/support/blogs • Planet MySQL : https://planet.mysql.com • MySQL User Camp in Bangalore • MySQL forums across the internet : Thank you MySQL community • When all else fails: Documentation : https://dev.mysql.com/doc 39
  • 40. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. MySQL Powers the Web 40
  • 41. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes 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 upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
  • 42. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 42 8 8 8