l importance des forks de mysql

44
L'importance des Forks de MySQL Christophe Villeneuve 17 avril 2013

Upload: neuros

Post on 21-Jun-2015

1.595 views

Category:

Documents


2 download

DESCRIPTION

Présentation à la nAcademy (Avril 2013) : L'importance des forks de MySQL par Christophe Villeneuve

TRANSCRIPT

Page 1: L Importance des forks de MySQL

L'importance des Forks de MySQL

Christophe Villeneuve

17 avril 2013

Page 2: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Sommaire

✔ Histoire

✔ Un choix

✔ En mode avancé

✔ En pratique

Page 3: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Histoire du début

✔ 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 2009)

L'origine Dates importantes

Page 4: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Et maintenant

✔ N° 1 dans le monde

✔ 50k Download (depuis 2003)

✔ + 13M installation active

✔ MySQL Oracle

✔ Drizzle

✔ Percona

✔ MariaDB

✔ De nos jours... MySQL Forks

Page 5: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Présentation des Forks

Page 6: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Page 7: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Les grandes dates de MySQL

✔ 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

✔ ??? MySQL 5.7

Page 8: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Que trouve-t-on dans MySQL 5.6 ?

✔ Optimisation✔ Exécution requêtes

✔ Plus disponibilité

✔ Performance schéma

✔ Sous requêtes (Subquery)

✔ In-to-exists✔ Semi-join✔ Materialization

✔ Amélioration✔ PERFORMANCE_SCHEMA

✔ Information_schema

✔ Amélioration

✔ Lecture de lignes avec intervalle ✔ Mode séquentielle au lieu aléatoire✔ Index Condition Pushdown (ICP)✔ Amélioration des petites LIMIT

✔ Scalability

✔ Support des Logs✔ Data dictionary cache✔ Group commit

✔ Fonctionnalité

✔ MemcacheD API innodb✔ SHA 256 authentification✔ Microsecond Time précision✔ Interface NoSQL

Page 9: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Page 10: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Drizzle les points forts

✔ Mi 2008 début

✔ Mars 2011 1ère version 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

Page 11: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Page 12: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Les étapes Percona Server

✔ 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

Page 13: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Page 14: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

MariaDB : Un jeune projet... MATURE

✔ 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 FondationGalera people

Compression Multimaster Replication

Page 15: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Repère des versions

✔ 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 2013

✔ MariaDB 10.0.1 → MariaDB 5.6 + MariaDB 10.0

Page 16: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Page 17: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Comparaison 1/3

© Monty Widenius

Page 18: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Comparaison 2/3

© Monty Widenius

Page 19: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Comparaison 3/3

© Monty Widenius

Page 20: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

En un mot... MariaDB vs MySQL

✔ 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é

Page 21: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Mode avancé

Page 22: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Connecteurs

✔ PHP (driver natif) → BSD licence

✔ Python

✔ Ruby

✔ .NET avec MyODBC

✔ JDBC (basé sur drizzle driver)

✔ C

✔ Oracle connector (licence GPL)

Tous sont LGPL → Aucune licence commerciale

Page 23: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Storages engines 1/4

Cassandra SE✔ A partir de MariaDB 5.3

✔ NoSQL / NewSQL✔ Données non structurées✔ Réplication rapide

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

✔ Mapping possible

Page 24: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Storages engines 2/4

➢Cassandra

➢TokuDB

✔ (R)Tokutek & MariaDB

✔ Natif MariaDB 5.5 & 10.0

✔Tech : Utilise l'arbre fractal

✔ Amélioration indexation

✔ Amélioration des requêtes

✔ Schéma de vitesse✔ Compression✔ Réplication✔ Souple

Page 25: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Storages engines 3/4

➢Cassandra

➢TokuDB➢Connect

✔ MariaDB 10.0

✔ Lecture / Ecriture / MAJ

✔ TXT✔ DBF✔ .INI✔ .XML✔ ODBC

✔ Locale ou distant

✔ Possible de faire le sien

Page 26: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Storages engines 4/4

➢Cassandra

➢TokuDB➢Connect

A partir de 5.1

✔ PBXT (Désactiver 5.5)✔ XtraDB (old innoDB)✔ FederatedX✔ Aria (old MyISAM)

Page 27: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Storages engines 4/4

➢Cassandra

➢TokuDB➢Connect

A partir de 5.1

✔ OQGraph (moteur info)✔ SphinxSE (=search)

A partir de 5.2

Page 28: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Colonnes dynamiques

✔ Pont entre les BDD relationnelles et non relationnelles

✔ Toutes les colonnes stockées dans un « blob »

✔ Possibilité de le manipuler

✔ Possibilité de créer des index Virtuels

Page 29: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Création d'une colonne dynamique

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]

],

...)

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;

Coloris / Taille / Matériel / Vide / hard / optionID / Type_id / Prix

Page 30: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Exemple plus réaliste

Page 31: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Subquery... MariaDB 5.3+ / MySQL 5.6

SELECT ...

FROM table1

WHERE table1_col IN (

SELECT table2_col

FROM table2

WHERE table2_subq)

AND table1_where;

Optimizer_switch='semijoin=on'Materialization=on / offin_to_exists = on/offtmp_table_sizemax_heap_table_size

Optimizer_switch='semijoin=on'Materialization=on / offin_to_exists = on/offtmp_table_sizemax_heap_table_size

Page 32: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

MariaDB 10.0

✔ Moteur de table (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

Page 33: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Performance

http://blog.mariadb.org/mariadb-5-3-optimizer-benchmark/

Page 34: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

En pratique

Page 35: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Environnement embarqué

✔ EasyPHP

✔ Xampp

✔ WampServer

✔ PHPserver

✔ WampMSS

Page 36: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Exemple 1 : Wampserver

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

✔ Installer dans 1 dossier MySQL

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

✔ Lancer Wampserver

Page 37: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Exemple 2 : PHPServer

✔ DL PHPServer

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

✔ Installation

Page 38: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Exemple 2 : PHPServer avec phpMyAdmin

Page 39: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Exemple 3 : Linux

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

✔ Vous retrouvez :

✔ /etc/mysql/my.cnf✔ > mysql

✔ Au final

Page 40: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Outils

✔ MySQLdump

✔ XtraBackup

✔ mysqlhotcopy (MyISAM)

✔ XtraBackup manager (PHP)

✔ ...

✔ MySQL Workbench

✔ SkySQL visual Editor (SQLYog)

✔ HeidiSQL

✔ PhpMyAdmin

✔ Toad For MySQL

✔ ...

Backup Pour vos requêtes

Page 41: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

GO MariaDB

Page 42: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Apprentissage

Page 43: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Ceux qui ont sauté...

✔ Distributions

✔ OpenSUSE 12.3✔ Gentoo✔ FreeBSD✔ Homebrew✔ Slackware✔ ArchLinux✔ Fédora 7.0✔ ...

✔ Dec 2012 Wikipedia

✔ 2013

✔ Blog de Mozilla✔ Google Developer

Page 44: L Importance des forks de MySQL

nAcademy – 17 Avril 2013

Questions ?