MS Azure : comparatif MySQL entre ClearDB, une Machine Virtuelle MariaDB et Azure MySQL - Partie 1

Table des matières

  1. Préambule. 3
  2. Configurations. 4
  3. ClearDB. 4
  4. Machine Virtuelle MariaDB. 4
  5. Azure MySQL (preview) 4
  6. Initialisation des bases de données. 6
  7. ClearDB. 6
  8. MariaDB. 6
  9. Azure MySQL (preview) 7
  10. Stress test avec mysqlslap. 8
  11. Tests sur configurations similaires au niveau du coût 10
  12. ClearDB. 10
  13. MariaDB. 10
  14. MySQL preview.. 10
  15. Résultats stress test avec nos nouvelles configurations. 11
  16. Pour aller plus loin. 13

1.    Préambule

Vous souhaitez réaliser un site web, une application mobile, ou tout autre support nécessitant une base de données ?

Elles sont nombreuses et ont toutes leurs subtilités : MySQL, PostgreSQL, SQLite, SQL Server, … et même certaines sans SQL (dites « NoSQL ») : MongoDB, CouchDB, Redis, … stockées dans des fichiers ou parfois même dans la mémoire vive de votre serveur pour atteindre de très bonnes performances en évitant les accès au disque, parfois coûteux.

Cet article n’a pas vocation à vous expliquer comment réaliser une application mobile ou une API permettant de communiquer entre les différents éléments de votre projet, de nombreux articles existent déjà à ce sujet sur la toile !

Vous découvrirez ici comment réaliser des tests de performances sur le système de bases de données MySQL. SQLI étant Microsoft Managed Gold Partner, nous allons comparer les différentes configurations possibles sur la plateforme Azure, le cloud de Microsoft.

Dans cet article, nous comparerons le partenaire de Microsoft, ClearDB (présent dans la marketplace Azure), une machine virtuelle MariaDB (l’équivalent « libre » et communautaire d’un fork de MySQL) déployée au sein d’Azure, et la nouvelle solution annoncée par Azure lors de sa conférence « Microsoft Build 2017 », Azure Database for MySQL.

2.    Configurations

a.     ClearDB

 

Niveau tarifaire : Offre « Titan » :

  • Nombre de connexions simultanées : 10
  • 25 Go de stockage
  • « Entry-Level production ready »
  • Mutualisé
  • SLA : 100%
  • Coût estimé : 3,50 $ / mois (env. 2.78 €)

 

Emplacement : Europe Occidentale

 

b.     Machine Virtuelle MariaDB

Niveau tarifaire : « A0 – De Base » :

  • 1 Cœur
  • 75 Go de mémoire
  • 1 disque de données
  • 300 opérations d’E/S par seconde
  • Coût estimé : 11.29 € / mois

 

c.     Azure MySQL (preview)

Niveau tarifaire : « De base » :

  • 100 unités de calcul
    • Une « unité de calcul est une mesure mélangée de ressources processeur et mémoire […] 100 unités de calcul sont équivalentes à 1 Cœur » (https://docs.microsoft.com/fr-fr/azure/mysql/concepts-compute-unit-and-storage)
  • 50 Go de stockage
  • Coût estimé : 30 € / mois
  • Disques gérés : oui (https://go.microsoft.com/fwlink/?linkid=839650)
  • Pas de groupe de Haute Disponibilité

 

Et voilà, les serveurs sont créés !

tableau de bord MS Azure

tableau de bord MS Azure

 

1.    Initialisation des bases de données

Cette étape consiste à initialiser nos différentes bases de données avec des données de test. Nous allons créer, dans la mesure du possible, un utilisateur de test sur nos différents serveurs de test.

a.     ClearDB

  • Hostname : eu-cdbr-azure-west-b.cloudapp.net
  • User : b5a1d20b8ab1d5
  • Pass : dbbbcb3b

Ce sont les informations de connexion au serveur MySQL ClearDB. On ne peut pas créer d’utilisateur MySQL supplémentaire donc on utilisera celui fourni par défaut.

 

On crée la base de données de test :

$> wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2

[...]

$> bzip2 -dfv employees_db-full-1.0.6.tar.bz2

  employees_db-full-1.0.6.tar.bz2: done

$> tar -xf employees_db-full-1.0.6.tar

$> cd employees_db/

$> mysql -h eu-cdbr-azure-west-b.cloudapp.net -u b5a1d20b8ab1d5 -p -t < employees.sql

Enter password: ***********

ERROR 1044 (42000) at line 25: Access denied for user ‘b5a1d20b8ab1d5’@’%’ to database ’employees’

 

Une erreur ! En effet, l’utilisateur est limité à une seule base de données dont le nom est prédéfini à la création (dans notre cas : « diffazure_cleardb »). On va forcer la création des tables (l’autre possibilité serait de modifier le SQL contenu dans le fichier « employees.sql ») sur notre base de données à l’aide de l’option « –force » :


$> mysql -h eu-cdbr-azure-west-b.cloudapp.net -u b5a1d20b8ab1d5 -p -t --force diffazure_cleardb < employees.sql

[...]

b.     MariaDB

  • IP : 40.114.243.128
  • User : userdb
  • Pass : Password12345

Ce sont les informations de connexion à la Machine Virtuelle en SSH ; on va créer un utilisateur MySQL et la base de données de test.

 

$> ssh userdb@40.114.243.128

$> sudo mariadb

Welcome to the MariaDB monitor. [...]

MariaDB [test]> CREATE USER testuser IDENTIFIED BY 'password';

Query OK, 0 rows affected (0.01 sec)      

MariaDB [test]> GRANT ALL ON *.* TO testuser;

Query OK, 0 rows affected (0.00 sec)

MariaDB [test]> quit;

Bye

 

On teste :

$> mysql -u testuser -p

Enter password:

Welcome to the MariaDB monitor. […]

 

Tout va bien !

 

On crée la base de données de test :

$> wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2

[...]

$> bzip2 -dfv employees_db-full-1.0.6.tar.bz2

  employees_db-full-1.0.6.tar.bz2: done

$> tar -xf employees_db-full-1.0.6.tar

$> cd employees_db/

$> mysql -u testuser -p -t < employees.sql

[...]

 

c.     Azure MySQL (preview)

  • Host : diffazure-azuremysql.mysql.database.azure.com
  • User : user@diffazure-azuremysql
  • Pass : P@ssw0rd

 

On crée la base de données de test :

$> wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2

[...]

$> bzip2 -dfv employees_db-full-1.0.6.tar.bz2

  employees_db-full-1.0.6.tar.bz2: done

$> tar -xf employees_db-full-1.0.6.tar

$> cd employees_db/

$> mysql -h diffazure-azuremysql.mysql.database.azure.com -u user@diffazure-azuremysql -p -t < employees.sql

Enter password: ***********

[...]

 

Et voilà.

Matthieu Ambrois, chef de projet SQLI

0 commentaires

votre commentaire

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscription newsletter

Ne manquez plus nos derniers articles !