![Page 1: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/1.jpg)
Be a MySQL Ninja
http://bit.ly/mysqlninja
Sheeri CabralSenior DB Admin/Architect
Mozilla@sheeriB
![Page 2: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/2.jpg)
MySQL Ninja
Lots of tips and tricks for MySQL HandlerSocket plugin Query MySQL as if it was NoSQL/CRUD
![Page 3: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/3.jpg)
MySQL Ninja
Innovative ways to use a database MariaDB Examples as time permits
![Page 4: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/4.jpg)
MariaDB
Drop-in replacement for MySQL Can go back and forth
Extra features Mostly storage engines Cannot install these SEs on MySQL
yet
![Page 5: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/5.jpg)
Sequence Storage Engine
Read_only Exists only while you use it Virtual
Not even a .frm file!
![Page 6: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/6.jpg)
Sequence Storage Engine
Supports indexes Supports XA transactions Installation is easyINSTALL PLUGIN SEQUENCE SONAME 'ha_sequence';
![Page 7: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/7.jpg)
Sequence Storage Engine
SELECT * FROM seq_x_to_yOdd #’s from 9 backwards to 1You want a "step"Table seq_x_to_y_step_ze.g. SELECT * FROM seq_9_to_1_step_2
![Page 8: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/8.jpg)
Sequence Storage Engine
Find all prime numbers < 25A prime # x means only x and 1 are divisors
seq_2_to_25
No step (increment=1)
![Page 9: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/9.jpg)
Find Prime Nums <25
For all y, x % y leaves a remainder x is a possible prime number
x is one sequence
y is another sequence
y is the divisor
y is not 1 or x
Only need to check y up to √x
![Page 10: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/10.jpg)
Sequence Storage Engine
Find all prime numbers < 25
SELECT x.seq FROM seq_2_to_25 x
WHERE 0 NOT IN
(SELECT x.seq % y.seq FROM seq_2_to_25 y
WHERE y.seq < sqrt(x.seq));
![Page 11: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/11.jpg)
Sequence Storage Engine
Can I name a regular table seq_1_to_100? If a temp table, yes
Otherwise, not if sequence SE is installed
Can ALTER TABLE to change SE
Then can manipulate/drop
But…just don't do it
![Page 12: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/12.jpg)
CassandraSE
Opposite of HandlerSocket plugin Separate plugin package Use MySQL to access Cassandra
Column families
Use familiar SQL
![Page 13: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/13.jpg)
CassandraSE
JOIN Cassandra and MySQL tables Flexible Schema
Uses dynamic columns
![Page 14: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/14.jpg)
Dynamic Columns
Built-in, not a separate plugin BLOB data type Functions to store multiple values Key/value pairs Since 5.3, but better in 10
![Page 15: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/15.jpg)
Store
Sells CDs, DVDs, games, t-shirts, posters Each has price, inventory ID, manufacturer DVDs, CDs, game have titles CDs have artists and tracks T-shirts have different sizes and colors Posters have no extra information
![Page 16: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/16.jpg)
Dynamic Columns
Table w/ price, inventory ID, manufacturer"extra" dynamic columnJust a BLOB
![Page 17: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/17.jpg)
Dynamic Column Example
![Page 18: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/18.jpg)
COLUMN_CREATE
![Page 19: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/19.jpg)
COLUMN_GET
![Page 20: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/20.jpg)
COLUMN_EXISTS
COLUMN_EXISTS(dyn_col, part_name)
If dynamic column undefined, returns NULL
If part name exists, returns 1
If part name does not exist, returns 0 Dynamic column is defined
![Page 21: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/21.jpg)
Other Functions
COLUMN_LIST(extra) List the dynamic columns in a BLOB
Dynamic parts not indexable
COLUMN_JSON(extra) Because everyone loves JSON
![Page 22: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/22.jpg)
Other Functions
COLUMN_ADD Preserve existing parts while adding more COLUMN_CREATE overwrites
COLUMN_DELETE(field, part)
COLUMN_CHECK(field) Returns 1 if field is a dynamic column
Returns NULL if field is not a dynamic column
![Page 23: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/23.jpg)
Nested Dynamic Columns
Dynamic column Has parts
A part can be a dynamic column itself
@part=COLUMN_CREATE('part','value')
blob_col=COLUMN_CREATE('dyn_col',@part)
blob_col=COLUMN_ADD('dyn_col',@part)
![Page 24: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/24.jpg)
MySQL Storage Engines
CSV Built-in
Federated/FederatedX
![Page 25: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/25.jpg)
CONNECT Storage Engine
Remote databases Native or ODBC
CREATE TABLE remote_table ENGINE=connect
![Page 26: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/26.jpg)
CONNECT Storage Engine
Remote databases Native or ODBC
CREATE TABLE remote_table ENGINE=connect
TABLE_TYPE=MYSQL
![Page 27: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/27.jpg)
CONNECT Storage Engine
Remote databases Native or ODBC
CREATE TABLE remote_table ENGINE=connect
TABLE_TYPE=MYSQL connection='mysql://
username
![Page 28: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/28.jpg)
CONNECT Storage Engine
Remote databases Native or ODBC
CREATE TABLE remote_table ENGINE=connect
TABLE_TYPE=MYSQL connection='mysql://
username:password
![Page 29: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/29.jpg)
CONNECT Storage Engine
Remote databases Native or ODBC
CREATE TABLE remote_table ENGINE=connect
TABLE_TYPE=MYSQL connection='mysql://
username:password@hostname
![Page 30: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/30.jpg)
CONNECT Storage Engine
Remote databases Native or ODBC
CREATE TABLE remote_table ENGINE=connect
TABLE_TYPE=MYSQL connection='mysql://
username:password@hostname:port
![Page 31: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/31.jpg)
CONNECT Storage Engine
Remote databases Native or ODBC
CREATE TABLE remote_table ENGINE=connect
TABLE_TYPE=MYSQL connection='mysql://
username:password@hostname:port/db_name
/table_name';
![Page 32: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/32.jpg)
CONNECT Storage Engine
Remote databases Native or ODBC
CREATE TABLE remote_table ENGINE=connect
TABLE_TYPE=MYSQL connection='mysql://
username:password@hostname:port/db_name
/table_name';
Specify table fields for partial tables
![Page 33: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/33.jpg)
Remote CONNECT Tables
SELECT INSERT UPDATE DELETE Multi-table queries allowed All tables must be defined locally
![Page 34: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/34.jpg)
CONNECT To Text Files
CSV INI XML DBF FMT BIN
![Page 35: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/35.jpg)
CONNECT Storage Engine
MERGE functionality TBL Type Exact schema match NOT required
![Page 36: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/36.jpg)
CONNECT Storage Engine
Pivot table Easily aggregate data
Unpivot "OCCUR"
![Page 37: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/37.jpg)
CONNECT Storage Engine
FilesystemDIR table typeFilenames, sizes, extensions and moreQuery datadir .ibd files, compare to I_S
![Page 38: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/38.jpg)
CONNECT Storage Engine
Lists of objects
Parent Children
Donna Adam,Sam,Tommy
Peter Nina
Tony
Jack Maya,Elan
Amy Eli,Ethan,Ben,Lily
![Page 39: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/39.jpg)
CONNECT Examples
INI XML MERGE functionality (TBL) Pivot/unpivot table Filesystem (DIR) Lists of objects
![Page 40: Be a MySQL Ninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56649f275503460f94c3ecee/html5/thumbnails/40.jpg)
More Resources
www.mysqlmarinate.com
lynda.com
OurSQL podcast (oursql.com)
slides: http://bit.ly/mysqlninja
youtube.com/tcation
http://planet.mysql.com