be a mysql ninja sheeri cabral senior db admin/architect mozilla @sheerib

40
Be a MySQL Ninja http://bit.ly/mysqlninja Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB

Upload: alexis-esther-hancock

Post on 05-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Be a MySQL Ninja  Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dynamic Column Example

Page 18: Be a MySQL Ninja  Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB

COLUMN_CREATE

Page 19: Be a MySQL Ninja  Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB

COLUMN_GET

Page 20: Be a MySQL Ninja  Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB

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

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

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

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

MySQL Storage Engines

CSV Built-in

Federated/FederatedX

Page 25: Be a MySQL Ninja  Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB

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

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

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

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

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

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

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

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

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

CONNECT To Text Files

CSV INI XML DBF FMT BIN

Page 35: Be a MySQL Ninja  Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB

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

CONNECT Storage Engine

Pivot table Easily aggregate data

Unpivot "OCCUR"

Page 37: Be a MySQL Ninja  Sheeri Cabral Senior DB Admin/Architect Mozilla @sheeriB

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

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

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

More Resources

www.mysqlmarinate.com

lynda.com

[email protected]

OurSQL podcast (oursql.com)

slides: http://bit.ly/mysqlninja

youtube.com/tcation

http://planet.mysql.com