MariaDB pour les développeurs 
Christophe Villeneuve 
@hellosct1
Qui... est Christophe Villeneuve ? 
<< 
afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – p...
Les points d'aujourd'hui 
● Une histoire simple 
● MySQL 5.x ←→ MariaDB 5.x 
● MariaDB 10.x 
● Les bases 
● MariaDB dans v...
L'origine Dates importantes 
✔ Fondé par 
✔ Monty Widenius 
✔ David Axmark 
✔ 1983 – 1ère idée 
✔ Fondé en 1995 
✔ 2007 Pr...
✔ De nos jours... MySQL Forks 
✔ N° 1 dans le monde 
✔ 500k Download (depuis 
2003) 
✔ + 13M installation active 
✔ MySQL ...
MariaDB : un jeune projet... MATURE 
✔ Communauté d'amis 
✔ 100 % Open source et 
compatible MySQL 
✔ Plateforme d'innovat...
GO MariaDB
Compatibilité 
5.x 5.x
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 → ...
Apprentissage
En un mot... MariaDB vs MySQL 
✔ Plus de storages 
✔ Vitesse 
✔ Innodb, replication, stockage... 
✔ Nombreuses extensions ...
Performance MariaDB 10.1 et MySQL 5.7.4 
https://blog.mariadb.org/performance-evaluation-of-mariadb-10-1-and-mysql-5-7-4-l...
Connecteurs 
✔ PHP (driver natif) → BSD licence 
✔ Python 
✔ Perl 
✔ Ruby 
✔ .NET avec MyODBC 
✔ JDBC (basé sur drizzle dr...
Outils de dev : Environnement embarqué 
✔ EasyPHP 
✔ Xampp 
✔ WampServer 
✔ PHPserver 
✔ WampMSS 
✔ Neard
Exemple 1 : wampserver 
✔ DL MariaDB (http://mariadb.org) 
✔ Installer dans 1 dossier MySQL 
✔ Déplacer les BDD sauvegardé...
Exemple 2 : PHPServer 
✔ DL PHPServer 
http://www.treshaut.net/viewtopic.php?t=28&p=71 
✔ Installation
Exemple 2 : PHPServer avec phpMyAdmin
Exemple 3 : Linux 
✔ sudo apt-get install mariadb-server mariadb-client 
✔ Vous retrouvez : 
✔ /etc/mysql/my.cnf 
✔ > mysq...
Backup Pour vos requêtes 
✔ MySQLdump 
✔ XtraBackup 
✔ mysqlhotcopy (MyISAM) 
✔ XtraBackup manager (PHP) 
✔ ... 
✔ MySQL W...
Dispo dans MariaDB 10.0 
✔ Moteur de stockage (storages engines) natif 
✔ Réplication multisource 
✔ NOW() à la place de D...
5.x 
10.x
✔ Précision date-heure 
✔ Avant 
✔ TIME 
✔ DATETIME 
✔ TIMESTAMP 
✔ Dispo MariaDB 5.3+ 
✔ temporal functions 
✔ CAST 
✔ dy...
Avant MariaDB 5.3+ 
✔ Create table t1 (d 
DATETIME) ; 
✔ Insert INTO t1 values.... 
✔ Select * from t1 ; 
✔ Create table t...
✔ Dispo MariaDB 5.2+ 
✔ Colonne dans une table 
qui sa valeur calculée 
automatiquement 
✔ 2 types : 
✔ VIRTUAL : sur le 
...
Exemple (Colonnes Virtuelles) (1/2) 
✔ CREATE TABLE table1 ( 
a INT NOT NULL, 
b VARCHAR(32), 
c INT AS (a mod 10) VIRTUAL...
Exemple (Colonnes Virtuelles) (2/2) 
✔ INSERT INTO table1 VALUES 
✔ (1, 'some text',default,default), 
✔ (2, 'more text',5...
✔ Dispo MariaDB 10.0+ 
✔ Expressions régulières 
✔ Compatible 
✔ REGEXP 
✔ RLIKE operator 
✔ Fonctionne 
✔ Multi caractère...
Exemple (PCRE) (1/2) 
✔ Fonction de remplace 
✔ SELECT REGEXP_REPLACE('ab12cd','[0-9]','') AS r; 
→ abcd 
✔ Retourne 1ère ...
Exemple (PCRE) (2/2) 
✔ Retourne la partie correspondante d'une chaine 
✔ SELECT REGEXP_SUBSTR( 
'https://www.osdc.fr/cont...
✔ Dispo MariaDB 10+ 
✔ Inspiré de PostgreSQL 
✔ Supprimer les opérations 
qui renvoient un ensemble 
de ligne supprimées 
...
Exemple (Delete...returning) 
✔ DELETE FROM tests WHERE status = 'DONE' 
RETURNING *; 
✔ → 5
✔ Dispo MariaDB 5.3+ 
✔ Pont entre les BDD 
relationnelles et non 
relationnelles 
✔ Toutes les colonnes 
stockées dans un...
Exemple (colonne dynamique) 1/2 
CREATE TABLE t1 ( 
ID int 
auto_increment 
primary key, 
Type_id int, 
Prix decimal(7,2),...
Exemple (colonne dynamique) 2/2 
INSERT into t1 values (NULL, 1 , 10, COLUMN_CREATE(1, 'bleu', 2 , 'M')); 
INSERT into t1 ...
Exemple2 (colonne dynamique)
Moteur de stockage 
storage engine
Moteur de stockage : SphinxSE 
● Dispo MariaDB 5.2+ 
● Recherche Full-text 
● Ne stocke pas les données 
● Client haut pou...
Exemple SphinxSE 
● CREATE TABLE t1 ( 
id INTEGER UNSIGNED NOT NULL, 
weight INTEGER NOT NULL, 
query VARCHAR(3072) NOT NU...
Moteur de stockage : CassandraSE 
● Dispo MariaDB 10.0+ 
● Brique de Apache Cassandra 
● Données non relationnelles (NoSQL...
CassandraSE : Utilisation (1/2) 
> create table t2 (rowkey varchar(36) primary key, 
data1 varchar(60), 
data2 varchar(60)...
CassandraSE : Utilisation (2/2) 
> insert into t1 values 
('rowkey10', 'data1-value', 123456), 
('rowkey11', 'data1-value2...
Moteur de stockage : Connect 
● Dispo MariaDB 10.0+ 
● ETL : Extract, transform et Load 
● Lecture / Ecriture / MAJ 
– TXT...
Connect : exemple CSV 
● Fichier 
– first,last,birthday 
– "Christophe","Villeneuve","Jan 1" 
– "PHP","ODBC","Nov 22" 
> C...
Connect : exemple ODBC 
> create Table table2 
ENGINE=CONNECT TABLE_TYPE=ODBC 
SRCDEF='select key, sum(l_quantity) qt from...
Moteur de stockage : TokuDB 
● Natif dans MariaDB 5.5 & MariaDB 10.0+ 
● (R)Tokutek & MariaDB 
● Technique utilise l'arbre...
TokuDB : exemple
Moteur de stockage : Spider (v3) 
● Dispo MariaDB 10.0+ 
● Moteur de stockage fédérés comme 
– Sharding / partitionnement ...
Spider : Exemple
Moteur de stockage : Les autres 
● XtraDB (MariaDB 10.0.9) 
– Fork de InnoDB (Full compatible) 
● Aria appelé Maria (Maria...
Merci 
Ressources 
● MariaDB : 
https://mariadb.com/kb/en/ 
● Planet mariaDB : 
http://planetmariadb.org/ 
● Blog 
http://...
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
Prochain SlideShare
Chargement dans…5
×

Mariadb pour les developpeurs - OSDC

1 876 vues

Publié le

Présentation effectuée à l'Open Source Developers Conference (OSDC.fr) 2014 sur "Mariadb pour les développeurs" par Christophe Villeneuve

Publié dans : Internet
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 876
Sur SlideShare
0
Issues des intégrations
0
Intégrations
421
Actions
Partages
0
Téléchargements
11
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Mariadb pour les developpeurs - OSDC

  1. 1. MariaDB pour les développeurs Christophe Villeneuve @hellosct1
  2. 2. 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
  3. 3. Les points d'aujourd'hui ● Une histoire simple ● MySQL 5.x ←→ MariaDB 5.x ● MariaDB 10.x ● Les bases ● MariaDB dans vos développements
  4. 4. L'origine Dates importantes ✔ 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) Une histoire simple
  5. 5. ✔ De nos jours... MySQL Forks ✔ N° 1 dans le monde ✔ 500k Download (depuis 2003) ✔ + 13M installation active ✔ MySQL Oracle ✔ Drizzle ✔ Percona ✔ MariaDB Et maintenant
  6. 6. 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 Fondation Compression Multimaster Replication Galera people ✔ MariaDB 10.0.14 (Sept 14)
  7. 7. GO MariaDB
  8. 8. Compatibilité 5.x 5.x
  9. 9. 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 2014 ou début 2015 ✔ MariaDB 10.1 → MariaDB 10.0 + MySQL 5.6/5.7
  10. 10. Apprentissage
  11. 11. 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é
  12. 12. Performance MariaDB 10.1 et MySQL 5.7.4 https://blog.mariadb.org/performance-evaluation-of-mariadb-10-1-and-mysql-5-7-4-labs-tplc/
  13. 13. Connecteurs ✔ 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
  14. 14. Outils de dev : Environnement embarqué ✔ EasyPHP ✔ Xampp ✔ WampServer ✔ PHPserver ✔ WampMSS ✔ Neard
  15. 15. Exemple 1 : wampserver ✔ DL MariaDB (http://mariadb.org) ✔ Installer dans 1 dossier MySQL ✔ Déplacer les BDD sauvegardées data ✔ Lancer Wampserver
  16. 16. Exemple 2 : PHPServer ✔ DL PHPServer http://www.treshaut.net/viewtopic.php?t=28&p=71 ✔ Installation
  17. 17. Exemple 2 : PHPServer avec phpMyAdmin
  18. 18. Exemple 3 : Linux ✔ sudo apt-get install mariadb-server mariadb-client ✔ Vous retrouvez : ✔ /etc/mysql/my.cnf ✔ > mysql ✔ Au final
  19. 19. Backup Pour vos requêtes ✔ MySQLdump ✔ XtraBackup ✔ mysqlhotcopy (MyISAM) ✔ XtraBackup manager (PHP) ✔ ... ✔ MySQL Workbench ✔ SkySQL visual Editor (SQLYog) ✔ HeidiSQL ✔ PhpMyAdmin ✔ Toad For MySQL ✔ ... Outils
  20. 20. Dispo dans MariaDB 10.0 ✔ 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
  21. 21. 5.x 10.x
  22. 22. ✔ Précision date-heure ✔ Avant ✔ TIME ✔ DATETIME ✔ TIMESTAMP ✔ Dispo MariaDB 5.3+ ✔ temporal functions ✔ CAST ✔ dynamic columns Les fonctions (1/5) Microseconds
  23. 23. Avant MariaDB 5.3+ ✔ 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 ; Exemple (Microseconds)
  24. 24. ✔ 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 Les fonctions (2/5) Microseconds Colonnes virtuelles Source : https://mariadb.com/kb/en/virtual-columns/
  25. 25. Exemple (Colonnes Virtuelles) (1/2) ✔ 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;
  26. 26. Exemple (Colonnes Virtuelles) (2/2) ✔ INSERT INTO table1 VALUES ✔ (1, 'some text',default,default), ✔ (2, 'more text',5,default), ✔ (123, 'even more text',default,'something'); ✔ Select * from table1;
  27. 27. ✔ Dispo MariaDB 10.0+ ✔ Expressions régulières ✔ Compatible ✔ REGEXP ✔ RLIKE operator ✔ Fonctionne ✔ Multi caractères Les fonctions (3/5) Microseconds Colonnes Virtuelles PCRE Source : https://mariadb.com/kb/en/pcre-regular-expressions/
  28. 28. Exemple (PCRE) (1/2) ✔ Fonction de remplace ✔ SELECT REGEXP_REPLACE('ab12cd','[0-9]','') AS r; → abcd ✔ Retourne 1ère position ✔ SELECT REGEXP_INSTR('abc','b') ; → 2 ✔ SELECT REGEXP_INSTR('hello','o') ; → 5
  29. 29. Exemple (PCRE) (2/2) ✔ Retourne la partie correspondante d'une chaine ✔ SELECT REGEXP_SUBSTR( 'https://www.osdc.fr/content/contact', 'https?://[^/]*') ✔ → https://www.osdc.fr
  30. 30. ✔ Dispo MariaDB 10+ ✔ Inspiré de PostgreSQL ✔ Supprimer les opérations qui renvoient un ensemble de ligne supprimées Les fonctions (4/5) Microseconds Colonnes virtuelles PCRE Delete... Returning
  31. 31. Exemple (Delete...returning) ✔ DELETE FROM tests WHERE status = 'DONE' RETURNING *; ✔ → 5
  32. 32. ✔ 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 Les fonctions (5/5) Microseconds Colonnes virtuelles REG EXP Delete... Returning Colonnes Dynamiques
  33. 33. Exemple (colonne dynamique) 1/2 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] ], ...) ID type_id Prix blob
  34. 34. Exemple (colonne dynamique) 2/2 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; C1oloris Taille Materiel Mhz option ID type_id Prix 1 2 3 4 5 6 1 1 10 bleu M 2 2 400 Ram 800 2048
  35. 35. Exemple2 (colonne dynamique)
  36. 36. Moteur de stockage storage engine
  37. 37. 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';
  38. 38. 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'; Entier Poids Votre requete Group Indexation Requete
  39. 39. 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
  40. 40. CassandraSE : Utilisation (1/2) > create table t2 (rowkey varchar(36) primary key, data1 varchar(60), data2 varchar(60) ) engine=cassandra keyspace='mariadbtest' thrift_host='localhost' column_family='cf1'; Clé primaire obligatoire Colonnes statiques Sous ensemble des colonnes CF
  41. 41. CassandraSE : Utilisation (2/2) > insert into t1 values ('rowkey10', 'data1-value', 123456), ('rowkey11', 'data1-value2', 34543); > select * from t1 where rowkey='rowkey11';
  42. 42. 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
  43. 43. Connect : exemple CSV ● Fichier – first,last,birthday – "Christophe","Villeneuve","Jan 1" – "PHP","ODBC","Nov 22" > 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 | ODBC | Nov 22 | +---------------+---------------+-------------+
  44. 44. 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)
  45. 45. 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
  46. 46. TokuDB : exemple
  47. 47. 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
  48. 48. Spider : Exemple
  49. 49. 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 oeuvre 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/
  50. 50. Merci Ressources ● MariaDB : https://mariadb.com/kb/en/ ● Planet mariaDB : http://planetmariadb.org/ ● Blog http://serge.frezefond.com/

×