MariaDB à l'assaut des developpeurs

60
Le 4 sept. 2014 MariaDB à l'assaut des développeurs (PHP, Python, Perl, Ruby, Java...) Christophe Villeneuve @hellosct1

description

Présentation effectuée à PHP Quebec (Septembre 2014) "MariaDB à l'assaut des developpeurs... PHP, Python,, Ruby, Java..." par Christophe Villeneuve. Après une présentation générale, nous verrons quelques fonctionnalités de la base de données MariaDB et les principaux Moteurs de Stockages utiles pour les développeurs

Transcript of MariaDB à l'assaut des developpeurs

Page 1: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

MariaDB à l'assaut des développeurs(PHP, Python, Perl, Ruby, Java...)

Christophe Villeneuve@hellosct1

Page 2: MariaDB à l'assaut des developpeurs

Qui... est Christophe Villeneuve ?

<<

afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – demoinparis – ici et maintenant – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – neuros - elephpant

Page 3: MariaDB à l'assaut des developpeurs

Sommaire● Histoire & ses forks● MySQL 5.x → MariaDB 5.x● MariaDB 10.x● Les bases● MariaDB pour vos développements

Page 4: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Fondé par

✔ Monty Widenius✔ David Axmark

✔ 1983 – 1ère idée

✔ Fondé en 1995

✔ 2007 Préparation pour Nasdaq

✔ 2008 Rachat par Sun

✔ 2009 Sun racheté par Oracle

✔ Promesse de Oracle sur 5 ans (fin 2014)

L'origine Dates importantes

Histoire de début

Page 5: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ N° 1 dans le monde

✔ 50k Download (depuis 2003)

✔ + 13M installation active

✔ MySQL Oracle

✔ Drizzle

✔ Percona

✔ MariaDB

✔ De nos jours... MySQL Forks

Et maintenant

Page 6: MariaDB à l'assaut des developpeurs

Présentation des forks

Page 7: MariaDB à l'assaut des developpeurs
Page 8: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ 1983

✔ 1995 Création de MySQL

✔ 1999 MySQL 3.23

✔ 2000 InnoDB

✔ 2003 MySQL 3.23 GA

✔ 2004 MySQL 4.1 GA

✔ 2005 Oracle avec InnoDB

✔ 2005 MySQL 5.0 GA

✔ 2008 MySQL 5.1GA(Sun)

✔ 2010 MySQL 5.5 GA (Oracle)

✔ 2011 Modules de codes source fermé

✔ 2013 MySQL 5.6 GA

✔ 2013 (dec) MySQL 5.7

Les grandes dates de MySQL

Page 9: MariaDB à l'assaut des developpeurs
Page 10: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Mi 2008 début

✔ Mars 2011 1er GA

✔ Version redessinée de MySQL 6.0

✔ Basé sur Micro-kernel

+ simple & + léger

✔ En ligne de commande

✔ BDD du coté serveur

✔ GPL v2

Drizzle les points forts

Page 11: MariaDB à l'assaut des developpeurs
Page 12: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Dec 2008 : 1ère released✔ 2010 Percona 5.5✔ Juin 2013 Percona 5.6

✔ XtraDB au lieu de InnoDB✔ Plus d'instrumentation

✔ Nombreux outils✔ Amélioration Restart✔ Performance✔ Statistiques 

Les étapes de Percona Server

Page 13: MariaDB à l'assaut des developpeurs
Page 14: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Communauté d'amis✔ 100 % Open source et

compatible MySQL✔ Plateforme d'innovation✔ Des commiteurs

✔ Dec 2008 Création de Monty Program 

 → Monty Widenius✔ MariaDB 5.1 (Fev 2010)✔ MariaDB 5.2 (Nov 2010)✔ MariaDB 5.3 (Avril 2012)✔ MariaDB 5.5 (Avril 2012)✔ MariaDB 10.0a (Nov 2012) 

1er semestre 2013✔ 2013 Fondation✔ 2013 MariaDB 10.0.1 Galera people

Compression Multimaster Replication

MariaDB : un jeune projet... MATURE

Page 15: MariaDB à l'assaut des developpeurs

GO MariaDB

Page 16: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

5.x 5.x

Compatibilité

Page 17: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ MariaDB 5.1 → MySQL 5.1

✔ MariaDB 5.2 → MariaDB 5.1

✔ MariaDB 5.3 → MariaDB 5.2

✔ MariaDB 5.5 → MariaDB 5.3 + MySQL 5.5

✔ MariaDB 10.0 → MariaDB 5.5 + MySQL 5.6

✔ MariaDB 5.6 → MariaDB 5.5 + MySQL 5.6

Fin 2014 ou début 2015

✔ MariaDB 10.1 → MariaDB 10.0 + MySQL 5.6/5.7

Repère des versions

Page 18: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Apprentissage

Page 19: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Plus de storages✔ Vitesse

✔ Innodb, replication, stockage...✔ Nombreuses extensions et fonctionnalités

✔ Colonnes virtuelles, colonne dynamique, multi...✔ Plus de tests

✔ Tests correctifs, réactivités...✔ Code source ouvert✔ Développé par la communauté

En un mot... MariaDB vs MySQL

Page 20: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014http://blog.mariadb.org/mariadb-5-3-optimizer-benchmark/

Performance

Page 21: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ PHP (driver natif) → BSD licence

✔ Python

✔ Perl

✔ Ruby

✔ .NET avec MyODBC

✔ JDBC (basé sur drizzle driver)

✔ C

✔ Oracle connector (licence GPL)

Tous sont LGPL → Aucune licence commerciale

Connecteurs

Page 22: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ EasyPHP

✔ Xampp

✔ WampServer

✔ PHPserver

✔ WampMSS

✔ Neard

Outils de dev : Environnement embarqué

Page 23: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ DL MariaDB (http://mariadb.org)

✔ Installer dans 1 dossier MySQL

✔ Déplacer les BDD sauvegardées \data\

✔ Lancer Wampserver

Exemple 1 : wampserver

Page 24: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ DL PHPServer

http://www.treshaut.net/viewtopic.php?t=28&p=71✔ Installation

Exemple 2 : PHPServer

Page 25: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Exemple 2 : PHPServer avec phpMyAdmin

Page 26: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ sudo apt-get install mariadb-server mariadb-client

✔ Vous retrouvez :✔ /etc/mysql/my.cnf✔ > mysql

✔ Au final

Exemple 3 : Linux

Page 27: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ MySQLdump

✔ XtraBackup

✔ mysqlhotcopy (MyISAM)

✔ XtraBackup manager (PHP)

✔ ...

✔ MySQL Workbench

✔ SkySQL visual Editor (SQLYog)

✔ HeidiSQL

✔ PhpMyAdmin

✔ Toad For MySQL

✔ ...

Backup Pour vos requêtes

Outils

Page 28: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Moteur de stockage (storages engines) natif

✔ Réplication multisource

✔ NOW() à la place de DATETIME

✔ Amélioration des informations erreurs

✔ Amélioration schéma de performance

✔ InnoDB

✔ Replication

✔ Statistics & Monitoring

✔ Optimizer

✔ Performance

Dispo dans MariaDB 10.0

Page 29: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

5.x10.x

Page 30: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Précision date-heure✔ Avant

✔ TIME ✔ DATETIME✔ TIMESTAMP

✔ Dispo MariaDB 5.3+✔ temporal functions✔ CAST✔ dynamic columns

Microseconds

Les fonctions (1/5)

Page 31: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Create table t1 (d DATETIME) ;

✔ Insert INTO t1 values....✔ Select * from t1 ;

✔ Create table t2 (d DATETIME (6) ) ;

✔ Insert Into t2 values ('2011-03-11'),

('2012-04-19 13:08:22'),

('2013-07-18 13:44:22.123456');

✔ Select * from t2 ;

Avant MariaDB 5.3+

Exemple (Microseconds)

Page 32: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Dispo MariaDB 5.2+✔ Colonne dans une table qui sa valeur calculée automatiquement✔ 2 types :

✔ VIRTUAL : sur le principe d'une vue

✔ PERSISTENT : Calculé lorsque les données sont insérées et stockées dans une table

Microseconds

Colonnes virtuelles

Les fonctions (2/5)

Source : https://mariadb.com/kb/en/virtual-columns/

Page 33: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ CREATE TABLE table1 (

a INT NOT NULL,

b VARCHAR(32),

c INT AS (a mod 10) VIRTUAL,

d VARCHAR(5) AS (left(b,5)) PERSISTENT

);✔ DESCRIBE table1;

Exemple (Colonnes Virtuelles) (1/2)

Page 34: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ INSERT INTO table1 VALUES ✔ (1, 'some text',default,default),✔ (2, 'more text',5,default),✔ (123, 'even more text',default,'something');

✔ Select * from table1;

Exemple (Colonnes Virtuelles) (2/2)

Page 35: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Dispo MariaDB 10.0+✔ Expressions régulières✔ Compatible

✔ REGEXP✔ RLIKE operator

✔ Fonctionne✔ Multi caractères

Microseconds

Colonnes Virtuelles

PCRE

Les fonctions (3/5)

Source : https://mariadb.com/kb/en/pcre-regular-expressions/

Page 36: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Fonction de remplace ✔ SELECT REGEXP_REPLACE('ab12cd','[0-9]','') AS r;

→ abcd

Exemple (PCRE) (1/2)

✔ Retourne 1ère position✔ SELECT REGEXP_INSTR('abc','b') ;

→ 2✔ SELECT REGEXP_INSTR('hello','o') ;

→ 5

Page 37: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Retourne la partie correspondante d'une chaine✔ SELECT REGEXP_SUBSTR(

'http://www.phpquebec.org/content/contact',

'https?://[^/]*')

FROM...

→ http://www.phpquebec.org

Exemple (PCRE) (2/2)

Page 38: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Dispo MariaDB 10+✔ Inspiré de PostgreSQL✔ Supprimer les opérations qui renvoient un ensemble de ligne supprimées

Microseconds

Colonnes virtuelles

PCRE

Delete... Returning

Les fonctions (4/5)

Page 39: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ DELETE FROM tests WHERE status = 'DONE' RETURNING *;

✔ → 5

Exemple (Delete...returning)

Page 40: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Dispo MariaDB 5.3+✔ Pont entre les BDD relationnelles et non relationnelles✔ Toutes les colonnes stockées dans un 'blob'✔ Possibilité de manipuler✔ Possibilité de créer des index virtuels

Microseconds

Colonnes virtuelles

REG EXP

Delete... Returning

Les fonctions (5/5)

Colonnes Dynamiques

Page 41: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

CREATE TABLE t1 (

ID int

auto_increment

primary key,

Type_id int,

Prix decimal(7,2),

extra blob

);

COLUMN_CREATE(

column_nr,

value [as type],

[

column_nr,

value [as type]

],

...)

Exemple (colonne dynamique) 1/2

ID type_id Prix blob

Page 42: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

INSERT into t1 values (NULL, 1 , 10, COLUMN_CREATE(1, 'bleu', 2 , 'M'));

INSERT into t1 values (NULL, 2 , 400, COLUMN_CREATE(3, 'RAM', 5 , 800));

UPDATE t1 SET extra = COLUMN_ADD(extra, 6 , 2048) WHERE id=2;

Exemple (colonne dynamique) 2/2

ID type_id Prix 1 2 3 4 5 6

1 1 10 bleu M

2 2 400 Ram 800 2048

1 Taille MaterielColoris Mhz option

Page 43: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Exemple2 (colonne dynamique)

Page 44: MariaDB à l'assaut des developpeurs

Moteur de stockagestorage engine

Page 45: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Moteur de stockage : SphinxSE

● Dispo MariaDB 5.2+

● Recherche Full-text

● Ne stocke pas les données

● Client haut pour permettre à MariaDB de parler à Sphinx searchd

● Installation dans My.cnf

[mysqld]

plugin-load= 'ha_sphinx.so';

Page 46: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Exemple SphinxSE

● CREATE TABLE t1 (

id INTEGER UNSIGNED NOT NULL,

weight INTEGER NOT NULL,

query VARCHAR(3072) NOT NULL,

group_id INTEGER,

INDEX(query)

) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312/test";

● SELECT * FROM t1 WHERE query='test it;mode=any';

Poids

Entier

Votre requete

Indexation Requete

Group

Page 47: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Moteur de stockage : CassandraSE

● Dispo MariaDB 10.0+

● Brique de Apache Cassandra

● Données non relationnelles (NoSQL)

● Assurer l'intégration des données SQL / NoSQL

● Mapping possible

● Manipulations :

static columns, dynamic columns, rowkey

● Installation dans My.cnf

[mysqld]

plugin-load=ha_cassandra.so

Page 48: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

CassandraSE : Utilisation (1/2)

> create table t2 (rowkey varchar(36) primary key,

data1 varchar(60),data2 varchar(60)) engine=cassandrakeyspace='mariadbtest'thrift_host='localhost'column_family='cf1';

Clé primaire obligatoire

Colonnes statiques

Sous ensemble des colonnes CF

Page 49: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

CassandraSE : Utilisation (2/2)

> insert into t1 values

('rowkey10', 'data1-value', 123456),

('rowkey11', 'data1-value2', 34543);

> select * from t1 where rowkey='rowkey11';

Page 50: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Moteur de stockage : Connect

● Dispo MariaDB 10.0+

● ETL : Extract, transform et Load

● Lecture / Ecriture / MAJ

– TXT, DBF, INI, XML

– MS Access, MS Excel, TBL (similaire à MERGE)

– ODBC, MySQL,SQLite, Oracle, DB2, WMI...● Locale ou distant

● Custom possible

● Accès en parallèle sur multitables

● Installation dans My.cnf

[mysqld]

plugin-load=ha_connect.so

Page 51: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Connect : exemple CSV

● Fichier

– first,last,birthday

– "Christophe","Villeneuve","Jan 1"

– "PHP","Quebec","Sep 4"

> CREATE TABLE users_csv (

first varchar(32) NOT NULL,

last varchar(32) NOT NULL,

birthday varchar(50) NOT NULL

) ENGINE=CONNECT TABLE_TYPE =CSV FILE_NAME ='/var/lib/mysql/users.csv' HEADER=1 SEP_CHAR=',' QUOTED=1;

> SELECT * FROM users_csv;

| first | last | birthday |

+---------------+---------------+-------------+

| Christophe | Villeneuve | Jan 1 |

| PHP | Quebec | Sep 4 |

+---------------+---------------+-------------+

Page 52: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Connect : exemple ODBC

> create Table table2

ENGINE=CONNECT TABLE_TYPE=ODBC

SRCDEF='select key, sum(l_quantity) qt from dbt3.table1 group by key'

CONNECTION='DSN=oracle;UID=login;PWD=password';

> MariaDB [dbt3]> select sum(qt) from (select qt from table2) as result;

→ 31444 Valeur de sum(qt)

Page 53: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Moteur de stockage : TokuDB

● Natif dans MariaDB 5.5 & MariaDB 10.0+

● (R)Tokutek & MariaDB● Technique utilise l'arbre fractal

– Amélioration indexation

– Amélioration des requêtes● Schéma de vitesse● Compression● Réplication● Souple

Page 54: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

TokuDB : exemple

Page 55: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Moteur de stockage : Spider (v3)

● Dispo MariaDB 10.0+

● Moteur de stockage fédérés comme

– Sharding / partitionnement *– Transactions *, XA– Intégré dans le pool de connexion– Haute disponibilité Cluster Shared­Nothing

 ● Load balancing : 

– Accès par Spider cluster avec plusieurs serveurs MariaDB

Page 56: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Spider : l'approche

Page 57: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Moteur de stockage : Les autres

● XtraDB (MariaDB 10.0.9)

– Fork de InnoDB (Full compatible)● Aria appelé Maria (MariaDB 5.1)

– Anciennement MyISAM● Mroonga (MariaDB 10.0)

– fulltext searches with Chinese, Japanese and Korean languages● Oqgraph (MariaDB 10.0)

– Utilisé pour mettre en œuvre des structures d'arbres● Sequence (MariaDB 10.0)

– Retourne une séquence de nombres comme un jeu de résultats● FederatedX (MariaDB 10.0)

– Fork de Federated

https://mariadb.com/kb/en/mariadb/documentation/storage-engines/

Page 58: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

✔ Distributions

✔ OpenSUSE 12.3✔ Gentoo✔ FreeBSD✔ Homebrew✔ Slackware✔ ArchLinux✔ Debian / Ubuntu✔ Fédora 7.0✔ Redhat✔ ...

✔ Dec 2012 Wikipedia

✔ 2013

✔ Blog de Mozilla✔ Google Developer

Ceux qui ont déjà sauté...

Page 59: MariaDB à l'assaut des developpeurs

Merci

Et merci à Monty Widenius

Page 60: MariaDB à l'assaut des developpeurs

Le 4 sept. 2014

Ressources

● MariaDB : https://mariadb.com/kb/en/ ● Planet mariaDB : http://planetmariadb.org/● Management : http://skysql.com/● Blog http://serge.frezefond.com/