1. Copyright201,Oracleand/oritsaliates.Allrightsreserved.|
HTTPPlugin/MySQLJSON RyusukeKajiyama//@RKajiyama
MySQLSalesConsulIngSeniorManager,AsiaPacic&Japan
MySQLPostgreSQL MyNAJPUGDB in MySQLmeetsNoSQL
2. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
SAFEHARBORSTATEMENT 2
3. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
Theworld'smostpopularopensourcedatabase 3
4. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 4
20MySQL20 15MySQL15 10Innobase10 55 AYearofAnniversaries!
5. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL
& Oracle,RedHat,CentOS Fedora Ubuntu,Debian SUSE DevOps
MySQLDatabase MySQLWorkbench MySQLConnector/ODBC
MySQLConnector/Python MySQLConnector/NET MySQLUIliIes 5
MySQL:Yum,APT,NuGET
6. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
GitHubMySQL MySQLGit GitHubforMySQLCommunity
hbps://github.com/mysql :hbp://mysqlrelease.com 6
7. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
MySQL5.6 h?p://dev.mysql.com/doc/refman/5.6/ja/index.html 7
8. Copyright201,Oracleand/oritsaliates.Allrightsreserved.|
MySQL
9. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 9 4.0
/GIS(MyISAM) UPDATE/DELETE OracleMySQL Sun 3.23 MyISAM InnoDB 5.1
5.6 memcachedAPI UNDO GlobalTransacIonID ALTERTABLE 5.5 InnoDB
PERFORMANCE_SCHEMA 1.0-3.22 (ISAM,HEAP) Windows/64bit (SJIS/UJIS)
5.0 // XA INFORMATION_SCHEMA 4.1 Unicode CSV,ARCHIVE ndbcluster
19952000200520102015 5.7+ CJK/GIS(InnoDB) NoSQL
10. Copyright201Oracleand/oritsaliates.Allrightsreserved.| SSD
UNDO JSONEXPLAIN MemcachedAPI GlobalTransacIonID Binlog 10
ALTERTABLE SHA256 MySQL5.6
11. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
MySQL5.7ReleaseCandidateAvailable! 11 InnoDB: Online&Bulkload
(mulI-source,mulI-threadedslaves) :
greaterusercontrol&beberqueryperformance PerformanceSchema
MySQLSYSSchema & MySQL5.62 : ,& NEW!JSONSupport(nowinlabs)
RC
Andmanymorenewfeaturesandenhancements...hbp://mysqlserverteam.com/the-mysql-5-7-7-release-candidate-is-available/
12. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
InnoDB-FullTextSearch(FTS)-ngram 12 InnoDBFullTextSearch(FTS) ,
N-gramsupportforChineseandKorean,addiIonalMeCabsupportforJapanese
CREATETABLE`N_DEMO`(`FTS_N_ID`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`Itle`varchar(100)DEFAULTNULL,
PRIMARYKEY(`FTS_N_ID`),FULLTEXTKEY`ngram_idx`(`Itle`)/*!50100WITHPARSER`ngram`*/
)ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=ur8mb4;
13. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
InnoDB-FullTextSearch(FTS)-mecab 13 InnoDBFullTextSearch(FTS) ,
N-gramsupportforChineseandKorean,addiIonalMeCabsupportforJapanese
CREATETABLE`M_DEMO`(`FTS_M_ID`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`Itle`varchar(100)DEFAULTNULL,
PRIMARYKEY(`FTS_M_ID`),FULLTEXTKEY`mecab_idx`(`Itle`)/*!50100WITHPARSER`mecab`*/
)ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=ur8mb4;
14. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
MySQLLabs 14
15. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
MySQLLabs MySQLMySQLCluster MySQL5.6memcachedAPI
MySQLCluster7.2memcachedAPI MySQL5.6PerformanceSchema
MySQL5.6Intra-schemaMulIThreadSlave MySQL5.6OnlineAlterTable
MySQL5.7MulISourceReplicaIon MySQL5.7NewOpImizerCostModel 15
16. Copyright201Oracleand/oritsaliates.Allrightsreserved.| (
OpImisIcStateMachine / InnoDB GTID PERFORMANCE_SCHEMA MySQL5.7:
ApplicaIon MySQLMasters ReplicaIon Plugin API MySQL Server
GroupComms (Corosync) 16 labs.mysql.com
17. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
HTTPPluginforMySQL MySQLHTTP(S) UTF8JSON 3 SQL CRUD-Key-Value
JSON-Document Formoredetails;
hbp://www.slideshare.net/nixnutz/hbp-plugin-for-mysql-39598656
17
18. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
HTTPPluginforMySQL SQLCRUDJSON
URLhbp[s]://server:port/sql/hbp[s]://server:port/crud/hbp[s]://server:port/doc/
SQLCRUDCRUD JSON* SQLYesNoNo HTTPGETGET,PUT.DELETEGET,PUT.DELETE
YesNoYes YesYesYes UTF-8UTF-8UTF-8 YesYesYes 18
19. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
HTTPPluginforMySQL TheSQLendpointandJSON 19 shell> curl -X GET
--user scott:tiger --url 'http://127.0.0.1:8080/sql/world/
SELECT+ID,Name+FROM+City+WHERE+Name=%27Tokyo%27' [ { "meta":[
{"type":,"catalog":"def","database":"world","table":"City","org_table":"ci
ty","column":"ID","org_column":"ID","charset":63,"length":11,"flags":
16899,"decimals":0}, {"type":
254,"catalog":"def","database":"world","table":"City","org_table":"city","column
":"Name","org_column":"Name","charset":33,"length":105,"flags":1,"decimals":0}
], "data":[ ["1532","Tokyo"] ],
"status":[{"server_status":34,"warning_count":0 } ]
20. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
HTTPPluginforMySQL-IniIalversion
HTTPBasicAuthenIcaIonforSSLandNon-SSL Noquerycachesupport
Nocommercialthreadpoolpluginsupport
NotallMySQLpluggableauthmethodssupported Unlimited:allSQLstatements
Unlimited:everythingtheserverreturns 20 shell> curl --user
basic_auth_user:basic_auth_passwd --url
"http://.../sql/db/SELECT+col_float+FROM+sql_types"
21. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
HTTPPluginforMySQL GET=SELECT 21 shell> curl ... --url
"http://../crud/db/sql_types/1" { "id" : "1", "col_char" :
"CHAR(127)" , "col_null" : null, "col_date" : "2014-12-23",
"col_decimal" : "123.45", "col_float" : "0.9999", "col_bigint" :
"9223372036854775807" } shell> curl ... --url
'http://../crud/db/simple/' { "errno" : 2000, "error" : "The
request URL must include a primary key value }
22. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
MySQLBinlogEvents BinlogAPI C++ 2"transport"
TCPTransport&FileTransport API
hbp://mysqlhighavailability.com/author/nehakumari/ 22
23. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
MySQL5.7:JSON JSON JSON SQL GeneratedColumns()
InnoDBSTOREDVIRTUALGeneratedColumns
hbp://mysqlserverteam.com/json-labs-release-overview/ 23
24. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
MySQL5.7:JSON 24 mysql> CREATE TABLE employees (data JSON);
Query OK, 0 rows affected (0,01 sec) mysql> INSERT INTO
employees VALUES ('{"id": 1, "name": "Jane"}'); Query OK, 1 row
affected (0,00 sec) mysql> INSERT INTO employees VALUES ('{"id":
2, "name": "Joe"}'); Query OK, 1 row affected (0,00 sec) mysql>
select * from employees; +---------------------------+ | data |
+---------------------------+ | {"id": 1, "name": "Jane"} | |
{"id": 2, "name": "Joe"} | +---------------------------+ 2 rows in
set (0,00 sec)
25. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
MySQL5.7:JSON DocumentValidaIon oninsertonly EcientAccess 25
mysql> INSERT INTO employees VALUES ('some random text'); ERROR
3130 (22032): Invalid JSON text: "Expect a value here." at position
0 in value (or column) 'some random text'. mysql> select
jsn_extract(data, '$.name') from employees;
+-----------------------------+ | jsn_extract(data, '$.name') |
+-----------------------------+ | "Jane" | | "Joe" |
+-----------------------------+ 2 rows in set (0,00 sec)
26. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
jsn_array() BuildaJSONarrayfromlistofexpressions jsn_object()
BuildsJSONobjectsfromavariablelengthlist ofkey/valuepairs
jsn_insert() Adds'missing'datatoJSONdocuments jsn_remove()
RemovesabributesfromexisIngJSON documents jsn_set()
SetsabributeswithinJSONdocuments jsn_replace()
Replaces(butdoesn'tadd)abributeswithin JSONdocuments jsn_append()
Addsavaluetotheendofanarray jsn_merge() Mergestwoarrays
jsn_extract() ReturnsavaluenestedinsideofaJSON document 26
JSONFuncIonsforCreaIng&ManipulaIng JSONDocuments
27. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
jsn_search() SearchforvalueswithinJSONdocumentsand
returntheirlocaIons jsn_contains() Checksforaspecicelementandvalue
jsn_contains_path() Determineifaspecicelementispresentina
documentinaspecicposiIon jsn_valid()
CheckifdocumentisavalidJSONdocument jsn_type()
Findthetypeofavaluewithinadocument jsn_keys()
ReturnsarraysofthekeynamesfortheJSON documents jsn_length()
NumberofelementsinJSONdocument jsn_depth()
LevelofnesInginJSONdocument jsn_unquote()
HelpsmovefromJSONtootherMySQLtypes jsn_quote()
HelpsmovefromotherMySQLtypestoJSON 27
QueryandSearchJSONFuncIons
28. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
GeneratedColumns VirtualGeneratedColumn
Generatedontheywhenthecolumnisread Canbeindexed
StoredGeneratedColumn Generatedwhenthereferencedcolumniswribento
Canbeindexed mysql> ALTER TABLE employees ADD name VARCHAR(100)
GENERATED ALWAYS AS(jsn_extract(info, '$.name')) VIRTUAL; mysql>
ALTER TABLE employees ADD INDEX(name); hbp://mysqlserverteam.com/
28 DiggingintoyourDocuments labs.mysql.com
29. Copyright201Oracleand/oritsaliates.Allrightsreserved.| JOIN
/ 29 ?
30. Copyright201Oracleand/oritsaliates.Allrightsreserved.|
Theworld'smostpopularopensourcedatabase 30
LOAD MORE