SlideShare a Scribd company logo
1Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL JSON Functions
Sveta Smirnova
Principal Technical Support Engineer

2Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Insert Picture Here
Program Agenda
 Introduction: NoSQL involvement on MySQL
 Overview of the functions
 Function descriptions
 Where to get
 The future

3Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
NoSQL history
4
3.5
3
2.5
2
1.5

Main historic points of
NoSQL

1
0.5

WebSphere
MongoDB
Virtuoso
Redis
DynamoDB
MemcacheDB
Tarantool
Hbase
CouchDB
BigTable
db40 memcached
NoSQL
NoSQL Insert Chart Here term
database

0
1997

1998

2000

2003

2004

2008

Databases

4Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

2009

2010

2012

2013
NoSQL in MySQL world
Hadoop Applier
mysqlv8udfs
JSON UDFs
InnoDB with memcached
Memcache API for
MySQL Cluster

6
5
4
3

Main points for NoSQL
features in MySQL

HandlerSocket NoSQL Connector
Insert Chart Here
for JavaScript
1 Memcached bugs
EXPLAIN in JSON
at mysql.com
0

2

2009

5Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

2010

2011

2012

2013
JSON functions in MySQL

A little bit before this year

0.2
0.18
0.16
0.14
0.12
0.1
0.08
0.06
0.04
0.02
0

Version 0.2

Version 0.1
Never published
Insert Chart Here
2012
2013

6Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
JSON functions overview
What are they doing?

Functions
Manipulate JSON text
●
Validate
●
Search
●
Modify
UDF functions
●
Easy to install
●
Independent from MySQL server version
Work on all MySQL supported platforms
Binaries for Linux, Mac OSX 7 and Windows

7Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
How to install?
UNIX
create function json_valid returns integer
soname 'libmy_json_udf.so';
create function json_search returns string
soname 'libmy_json_udf.so';
create function json_extract returns string
soname 'libmy_json_udf.so';
create function json_replace returns string
soname 'libmy_json_udf.so';
create function json_append returns string
soname 'libmy_json_udf.so';
...

8Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
How to install?
Windows
create function json_remove returns string 
soname 'my_json_udf.dll';
create function json_set returns string 
soname 'my_json_udf.dll';
create function json_merge returns string 
soname 'my_json_udf.dll';
create function json_contains_key returns integer
soname 'my_json_udf.dll';
create function json_test_parser returns string
soname 'my_json_udf.dll';
...
9Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Dependencies

Regex library
UNIX
●
Usually already exists
Windows
●
Provided with sources
●
Compiled statically
You don't need to install additional libraries to run the UDF!

10Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
How to compile?
UNIX
You need:
●
cmake
●
Regex library (usually already exists)
●
Working compiler
To build:
●
cmake . ­DMYSQL_DIR=/home/sveta/src/mysql­5.5
●
make

11Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
How to compile?
Windows
You need: PCRE static libraries, Visual Studio and cmake (cmake.org)
To build PCRE:
●
Download sources from http://www.pcre.org/ Recommended version is 8.33 or cd pcre­8.33
●
Unpack archive and run:
●
"C:Program Files (x86)CMake 2.8bincmake.exe" ­G "Visual Studio 
11 Win64"
●

●

devenv PCRE.sln /build Release

To build JSON UDFs copy pcre.h, pcreposix.h, Release/pcre.lib, 
Release/pcreposix.lib into JSON UDFs source directory, then run:
●
"C:Program Files (x86)CMake 2.8bincmake.exe" ­G "Visual Studio 
11 Win64" . ­DMYSQL_DIR="C:/MySQL/mysql­5.5"
●

devenv my_json_udf.sln /build Release

12Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Disadvantages of UDFs

They are slow
●
Can not use certain server features, available for internal functions
●
Full-text
●

Indexes

●

Built-in optimization

13Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Why UDFs?

Flexibility
●
You can install as many functions as you want: single, few or all of them
Compatible with any server version
●
You don't need to upgrade to not stable version only to try these functions
Easy to add
Easy to change
Easy to remove
Feature requests are easy to implement
●
Report bugs!
●
Raise your opinion!

14Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Functions descriptions
Insert Picture Here

15Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_valid(doc)

Checks if doc is valid JSON document.
Returns 1 if document is valid, 0 if document is invalid.
Strict format as described at http://json.org

16Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_valid(doc)

mysql> select json_valid('{"MySQL connect": ["conference", 2013]}');
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| json_valid('{"MySQL connect": ["conference", 2013]}') |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
|                                                     1 |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.01 sec)

17Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_valid(doc)

mysql> select json_valid('{"MySQL connect"}');
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| json_valid('{"MySQL connect"}') |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
|                               0 |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)

18Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_contains_key(doc, keypart1, keypart2, ...)

Checks if documents contains specified key.
Returns 1 if key exists, 0 if not exists or NULL if parsing failed.
Warning! This version does not check whole document for validity.

19Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_contains_key(doc, keypart1, keypart2, ...)

SET optimizer_trace=1;
mysql> select user from mysql.user;
+­­­­­­+
...
mysql> select json_contains_key(trace, 'steps', '0', 
'join_optimization', 'steps', '0', 'condition_processing') as contains 
from information_schema.optimizer_trace;
+­­­­­­­­­­+
| contains |
+­­­­­­­­­­+
|        0 |
+­­­­­­­­­­+
1 row in set (0.01 sec)
20Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_contains_key(doc, keypart1, keypart2, ...)

mysql> select user from mysql.user where user='Sveta';
+­­­­­­+
...
mysql> select json_contains_key(trace, 'steps', '0', 
'join_optimization', 'steps', '0', 'condition_processing') as 
contains from information_schema.optimizer_trace;
+­­­­­­­­­­+
| contains |
+­­­­­­­­­­+
|        1 |
+­­­­­­­­­­+
1 row in set (0.01 sec)
21Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_extract(doc, keypart1, keypart2, ...)

Extracts value of the specified key.
Returns value of the key specified, NULL if the key does not exist or if
parsing failed.
Warning! This version does not check whole document for validity.

22Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_extract(doc, keypart1, keypart2, ...)

SET optimizer_trace=1;
mysql> select user from mysql.user;
+­­­­­­+
...
mysql> select json_extract(trace, 'steps', '0', 'join_optimization', 
'steps', '0', 'condition_processing') as value from 
information_schema.optimizer_trace;
+­­­­­­­­­­+
| value    |
+­­­­­­­­­­+
|     NULL |
+­­­­­­­­­­+
1 row in set (0.01 sec)
23Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Search path

{“steps”:
  [
    {“join_optimization”:
        {“steps”:
            [
              {“condition_processing”: .....
json_extract(trace, 'steps', '0', 
'join_optimization', 'steps', '0', 
'condition_processing')
24Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_extract(doc, keypart1, keypart2, ...)

mysql> select user from mysql.user where user='Sveta';
+­­­­­­+
...
mysql> select json_extract(trace, 'steps', '0', 'join_optimization', 
'steps', '0', 'condition_processing') as value from 
information_schema.optimizer_traceG
*************************** 1. row ***************************
value: {
              "condition": "WHERE",
              "original_condition": "(`mysql`.`user`.`User` = 
'sveta')",
              "steps": [
....
25Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_append(doc, keypart1, keypart2, ...,
new_element)
Inserts new element into JSON document.
Returns document with appended element, original document if no
place to insert or NULL if parsing failed.
Warning! This version does not check whole document for validity.

26Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_append(doc, keypart1, keypart2, ...,
new_element)
mysql> select json_append('{"MySQL connect": ["conference", 2013]}', 'MySQL 
connect', '2', '”San Francisco”') as 'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                                          |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["conference", 2013, “San Francisco”]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)

27Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_append(doc, keypart1, keypart2, ...,
new_element)
mysql> select json_append('{"MySQL connect": 
["conference", 2013]}', 'MySQL connect', '1', '”San 
Francisco”') as 'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                           |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["conference", 2013]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)
28Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_replace(doc, keypart1, keypart2, ...,
new_value)
Updates value of the specified key.
Returns document with replaced key or original document if no such an
element found, NULL if parsing failed.
Warning! This version does not check whole document for validity.

29Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_replace(doc, keypart1, keypart2, ...,
new_value)
mysql> select json_replace('{"MySQL connect": 
["conference", 2013]}', 'MySQL connect', '0', '"User 
conference"') as 'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                                |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["User conference", 2013]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)
30Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_replace(doc, keypart1, keypart2, ...,
new_value)
mysql> select json_replace('{"MySQL connect": 
["conference", 2013]}', 'MySQL connect', '2', '"User 
conference"') as 'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                           |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["conference", 2013]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)
31Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_set(doc, keypart1, keypart2, ..., new_value)

Performs kind of INSERT ... ON DUPLICATE KEY UPDATE operation.
Returns document with updated or inserted element or NULL if parsing
failed.
Warning! This version does not check whole document for validity.

32Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_set(doc, keypart1, keypart2, ..., new_value)

mysql> select json_set('{"MySQL connect": 
["conference", 2013]}', 'MySQL connect', '0', '"User 
conference"') as 'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                                |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["User conference", 2013]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)
33Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_set(doc, keypart1, keypart2, ..., new_value)

mysql> select json_set('{"MySQL connect": ["conference", 2013]}', 'MySQL 
connect', '2', '"San Francisco"') as 'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                                            |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["conference", 2013, "San Francisco"]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)

34Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_remove(doc, keypart1, keypart2, ...)

Removes element specified by the key.
Returns document without the element, original document if no element
found or NULL if parsing failed.
Warning! This version does not check whole document for validity.

35Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_remove(doc, keypart1, keypart2, ...)

mysql> select json_remove('{"MySQL connect": 
["conference", 2013]}', 'MySQL connect', '1') as 
'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                     |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["conference"]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)
36Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_remove(doc, keypart1, keypart2, ...)

mysql> select json_remove('{"MySQL connect": 
["conference", 2013]}', 'MySQL connect', '2') as 
'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                           |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["conference", 2013]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)
37Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_search(doc, value)

Searches for specified value in the document.
Returns key path of the element which contains the value in reverse
order or NULL if not found or parsing failed.
Warning! This version does not check whole document for validity.

38Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_search(doc, value)

mysql> select json_search(trace, '"trivial_condition_removal"') from 
information_schema.optimizer_trace;
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| json_search(trace, '"trivial_condition_removal"')                               |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| transformation:0:steps:condition_processing:0:steps:join_optimization:0:steps:: |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)

39Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_search(doc, value)

mysql> select json_search(trace, '"trivial_condition"') 
from information_schema.optimizer_trace;
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| json_search(trace, '"trivial_condition"') |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| NULL                                      |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.01 sec)

40Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_merge(doc1, doc2, ...)

Merges 2 or more documents into one.
Returns first document with following documents appended.
Warning! This version does not check whole document for validity.
If one of following documents does not contain an opening curly
bracket first documents merged are returned and warning is generated.
NULL if first document does not contain an opening curly bracket.

41Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_merge(doc1, doc2, ...)

mysql> select json_merge('{"MySQL connect": ["conference", 2012]}', '{"MySQL 
connect": ["conference", 2013]}') as 'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                                                                  |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["conference", 2012], "MySQL connect": ["conference", 2013]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)

42Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_merge(doc1, doc2, ...)

mysql> select json_merge('{"MySQL connect": ["conference", 2012]}', '{"MySQL 
connect": ["conference", 2013]}', '1') as 'MySQL connect';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| MySQL connect                                                                  |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| {"MySQL connect": ["conference", 2012], "MySQL connect": ["conference", 2013]} |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)

43Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_test_parser(doc)

Returns text representation of parse tree of the JSON document,
partial parse tree or empty string if document is invalid.
This function is supposed to use for tests only and should not be used
in production.

44Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_test_parser(doc)

mysql> select json_test_parser('{"MySQL connect": 
["conference", 2013]}') as 'Parse tree'G
********************** 1. row **********************
Parse tree:  => "conference";
             => 2013;
         "MySQL connect" => ["conference", 2013];
       => {"MySQL connect": ["conference", 2013]};

45Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
json_test_parser(doc)

mysql> select json_test_parser('{"MySQL connect": ["conference", 
2013]') as 'Parse tree';
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
| Parse tree                                                         |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
|  => "conference"; => 2013;"MySQL connect" => ["conference", 2013]; |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
1 row in set (0.00 sec)

46Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Where to get
Insert Picture Here

47Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Source code and binaries

MySQL Labs
●
Source code
●
Binaries
●
x86 and x86_64
●

●

Mac OSX 10.7

●

●

Generic Linux

Windows 7

http://labs.mysql.com/

48Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
More information

Manuals and articles
●
README file
●
My blog: https://blogs.oracle.com/svetasmirnova/
Announces
●
My twitter: https://twitter.com/#!/svetsmirnova

49Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
The future
Insert Picture Here

50Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Depends from you

Send bugs
Send feature requests
More you send – more ideas we implement
Now you can affect decisions

51Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Where to report bugs and feature requests

MySQL Community bugs database
●
https://bugs.mysql.com/
●
No special category for now
●
General category
●
“MySQL Server: User-defined functions (UDF)”
Internal Oracle bugs database
●

Ask MySQL Support engineer to open a bug report for you

●

Category “UDFJSON”

52Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
More NoSQL
Sessions at MySQL Connect
MySQL and Hadoop: Big Data Integration—Unlocking New Insights [CON2053,
Sunday, 11:30 AM]
MySQL User-Defined Functions....in JavaScript! [CON1738, passed]
Oracle NoSQL Database: When Is It the Right Tool for the Job? [CON13034,
Saturday, 4:00 PM]
MySQL As a NoSQL Store with the InnoDB/memcached Plug-in [CON3457,
Sunday, 1:00 PM]
MySQL’s EXPLAIN Command New Features [HOL9734, passed]
Big Data with MySQL and Hadoop [CON2342, Sunday, 5:30 PM]

53Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
References

https://blogs.oracle.com/svetasmirnova/
https://twitter.com/#!/svetsmirnova
http://json.org/
http://www.pcre.org/
http://dev.mysql.com/doc/refman/5.6/en/adding-functions.html
http://bugs.mysql.com/
https://support.oracle.com

54Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
?
Insert Picture Here

55Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
THANK YOU!
Insert Picture Here

56Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Graphic Section Divider

57Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
The preceding 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.

58Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

More Related Content

PDF
Second Step to the NoSQL Side: MySQL JSON Functions
PDF
MySQL 5.7 + JSON
PDF
My sql 5.7-upcoming-changes-v2
PDF
Ohio Linux Fest -- MySQL's NoSQL
PDF
OpenWorld 2014 - Schema Management: versioning and automation with Puppet and...
PDF
MySQL Utilities -- PyTexas 2015
PDF
MySQL Performance Best Practices
ODP
MySQL 5.7 - What's new and How to upgrade
Second Step to the NoSQL Side: MySQL JSON Functions
MySQL 5.7 + JSON
My sql 5.7-upcoming-changes-v2
Ohio Linux Fest -- MySQL's NoSQL
OpenWorld 2014 - Schema Management: versioning and automation with Puppet and...
MySQL Utilities -- PyTexas 2015
MySQL Performance Best Practices
MySQL 5.7 - What's new and How to upgrade

What's hot (20)

PDF
Mysql nowwhat
PDF
What's New MySQL 8.0?
PDF
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
PDF
My sql 5.6&MySQL Cluster 7.3
PDF
20160821 coscup-my sql57docstorelab01
PDF
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
PDF
MySQL Group Replication - an Overview
PDF
Open Source World June '21 -- JSON Within a Relational Database
PDF
MySQL8.0 in COSCUP2017
PDF
Multi thread slave_performance_on_opc
PDF
MySQL's NoSQL -- Texas Linuxfest August 22nd 2015
PDF
MySQL Monitoring 101
PDF
MySQL Webinar 2/4 Performance tuning, hardware, optimisation
PDF
Undelete (and more) rows from the binary log
PDF
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScript
PDF
PNWPHP -- What are Databases so &#%-ing Difficult
PDF
MySQL Database Architectures - 2020-10
PDF
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
PDF
MySQL Replication Update - DEbconf 2020 presentation
PDF
common_schema 2.0: DBA's Framework for MySQL
Mysql nowwhat
What's New MySQL 8.0?
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
My sql 5.6&MySQL Cluster 7.3
20160821 coscup-my sql57docstorelab01
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL Group Replication - an Overview
Open Source World June '21 -- JSON Within a Relational Database
MySQL8.0 in COSCUP2017
Multi thread slave_performance_on_opc
MySQL's NoSQL -- Texas Linuxfest August 22nd 2015
MySQL Monitoring 101
MySQL Webinar 2/4 Performance tuning, hardware, optimisation
Undelete (and more) rows from the binary log
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScript
PNWPHP -- What are Databases so &#%-ing Difficult
MySQL Database Architectures - 2020-10
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
MySQL Replication Update - DEbconf 2020 presentation
common_schema 2.0: DBA's Framework for MySQL
Ad

Viewers also liked (8)

PDF
Using JSON with MariaDB and MySQL
PDF
HTTP Plugin for MySQL!
PDF
Making big data small
PDF
The Ring programming language version 1.2 book - Part 18 of 84
PDF
MariaDB: Connect Storage Engine
PPT
MySQL Functions
PDF
Advanced Arel: When ActiveRecord Just Isn't Enough
DOCX
COMANDOS DE JAVA
Using JSON with MariaDB and MySQL
HTTP Plugin for MySQL!
Making big data small
The Ring programming language version 1.2 book - Part 18 of 84
MariaDB: Connect Storage Engine
MySQL Functions
Advanced Arel: When ActiveRecord Just Isn't Enough
COMANDOS DE JAVA
Ad

Similar to MySQL JSON Functions (20)

PDF
Moving to the NoSQL side: MySQL JSON functions
PDF
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
PDF
MySQL's JSON Data Type and Document Store
PPTX
Php forum2015 tomas_final
PDF
Json improvements in my sql 8.0
PPTX
JSON improvements in MySQL 8.0
PPTX
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
PPTX
Data Con LA 2022 - MySQL, JSON & You: Perfect Together
PDF
[OSC 2020 Online/Nagoya] MySQLドキュメントストア
PPTX
BGOUG15: JSON support in MySQL 5.7
PDF
MySQL Document Store for Modern Applications
PDF
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
PDF
UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...
PPTX
MySQL Rises with JSON Support
PPTX
PostgreSQL 9.4 JSON Types and Operators
PDF
MySQL 5.7. Tutorial - Dutch PHP Conference 2015
PDF
MySQL 5.7 Tutorial Dutch PHP Conference 2015
PDF
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
PDF
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
PDF
Optimizer percona live_ams2015
Moving to the NoSQL side: MySQL JSON functions
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
MySQL's JSON Data Type and Document Store
Php forum2015 tomas_final
Json improvements in my sql 8.0
JSON improvements in MySQL 8.0
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
Data Con LA 2022 - MySQL, JSON & You: Perfect Together
[OSC 2020 Online/Nagoya] MySQLドキュメントストア
BGOUG15: JSON support in MySQL 5.7
MySQL Document Store for Modern Applications
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
UAE MySQL Users Group Meet-up : MySQL Shell Document Store & more...
MySQL Rises with JSON Support
PostgreSQL 9.4 JSON Types and Operators
MySQL 5.7. Tutorial - Dutch PHP Conference 2015
MySQL 5.7 Tutorial Dutch PHP Conference 2015
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
Optimizer percona live_ams2015

More from Sveta Smirnova (20)

PDF
War Story: Removing Offensive Language from Percona Toolkit
PDF
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
PDF
Database in Kubernetes: Diagnostics and Monitoring
PDF
MySQL Database Monitoring: Must, Good and Nice to Have
PDF
MySQL Cookbook: Recipes for Developers
PDF
MySQL Performance for DevOps
PDF
MySQL Test Framework для поддержки клиентов и верификации багов
PDF
MySQL Cookbook: Recipes for Your Business
PDF
Introduction into MySQL Query Tuning for Dev[Op]s
PDF
Производительность MySQL для DevOps
PDF
MySQL Performance for DevOps
PDF
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
PDF
How to migrate from MySQL to MariaDB without tears
PDF
Modern solutions for modern database load: improvements in the latest MariaDB...
PDF
How Safe is Asynchronous Master-Master Setup?
PDF
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
PDF
How to Avoid Pitfalls in Schema Upgrade with Galera
PDF
How Safe is Asynchronous Master-Master Setup?
PDF
Introduction to MySQL Query Tuning for Dev[Op]s
PDF
Billion Goods in Few Categories: How Histograms Save a Life?
War Story: Removing Offensive Language from Percona Toolkit
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
Database in Kubernetes: Diagnostics and Monitoring
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Cookbook: Recipes for Developers
MySQL Performance for DevOps
MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Cookbook: Recipes for Your Business
Introduction into MySQL Query Tuning for Dev[Op]s
Производительность MySQL для DevOps
MySQL Performance for DevOps
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to migrate from MySQL to MariaDB without tears
Modern solutions for modern database load: improvements in the latest MariaDB...
How Safe is Asynchronous Master-Master Setup?
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
How to Avoid Pitfalls in Schema Upgrade with Galera
How Safe is Asynchronous Master-Master Setup?
Introduction to MySQL Query Tuning for Dev[Op]s
Billion Goods in Few Categories: How Histograms Save a Life?

Recently uploaded (20)

PDF
Empathic Computing: Creating Shared Understanding
PDF
Chapter 2 Digital Image Fundamentals.pdf
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
cuic standard and advanced reporting.pdf
PDF
Sensors and Actuators in IoT Systems using pdf
PDF
CIFDAQ's Market Wrap: Ethereum Leads, Bitcoin Lags, Institutions Shift
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
PDF
Advanced IT Governance
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
PDF
HCSP-Presales-Campus Network Planning and Design V1.0 Training Material-Witho...
Empathic Computing: Creating Shared Understanding
Chapter 2 Digital Image Fundamentals.pdf
Advanced Soft Computing BINUS July 2025.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Per capita expenditure prediction using model stacking based on satellite ima...
Spectral efficient network and resource selection model in 5G networks
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
cuic standard and advanced reporting.pdf
Sensors and Actuators in IoT Systems using pdf
CIFDAQ's Market Wrap: Ethereum Leads, Bitcoin Lags, Institutions Shift
Review of recent advances in non-invasive hemoglobin estimation
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
Advanced IT Governance
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
NewMind AI Monthly Chronicles - July 2025
GamePlan Trading System Review: Professional Trader's Honest Take
Diabetes mellitus diagnosis method based random forest with bat algorithm
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
HCSP-Presales-Campus Network Planning and Design V1.0 Training Material-Witho...

MySQL JSON Functions