Transcript
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/


Top Related