Mariadb pour les developpeurs - OSDC

2 027 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
2 027
Sur SlideShare
0
Issues des intégrations
0
Intégrations
422
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/

×