Cet article est le premier d’une série d’articles concernant HANA

 

J’ai eu fin décembre un cadeau de la part de SAP – l’opportunité de “jouer” avec une machine virtuelle SAP HANA.

A première vue, c’est assez perturbant – pas de SAPGui, juste BO sous Excel, et le ‘SAP HANA Studio’ permettant de créer des objets (Tables, vues, etc.) sous HANA, et de les manipuler en ligne de commande SQL.

Jeu de données test

Pour avoir une idée des performances d’HANA, il faut avoir une bonne base de données. Il me parait clair qu’une centaine de lignes dans une table ne va pas nous permettre de savoir si HANA est plus rapide qu’Oracle, ou même MySQL !

M’inspirant largement sur cet article [http://www.mysqlperformanceblog.com/2009/10/02/analyzing-air-traffic-performance-with-infobright-and-monetdb/], j’ai donc passé quelques jours à télécharger, nettoyer et mettre en forme la liste quasi-exhaustive des vols commerciaux des Etats-Unis, de Janvier 1988 à Octobre 2011.

Il y a toutes sortes d’informations intéressantes dans le fichier, par exemple les aéroports de départ et d’arrivée, heure et date de vol, mais aussi nombre de minutes de retard, temps de vol, … – de quoi faire pas mal d’analyses ‘pur SQL’, facilement reproductibles entre différents types de base de données.

24 fichiers CSV

Au total 48Go de données brutes

140 Millions de lignes (140.239.135 lignes exactement)

Pour ‘nettoyer’ les données, chaque fichier CSV source a été passé à travers un petit programme qui entoure chaque champ du fichier par des “, et qui supprime les décimales de chaque champ qui en possède ; ceci afin de permettre le chargement dans des bases qui n’apprécient pas que l’on mette “4.00” dans un champ défini comme un entier… (HANA, je te parle)

Temps de chargement

Temps de chargement du premier fichier (année 1988, 5,2M lignes) : 2m13s – Impressionnant!

Pour bien donner une idée des temps et ce que représente HANA en termes de gain de temps, j’ai également installé une base MySQL sur un ordinateur de bureau, afin de lancer les mêmes instructions sur les deux bases. Temps de chargement du fichier 1992.csv sous MySQL : 5m18s

Les autres fichiers sont insérés dans HANA tout aussi rapidement – l’année la plus rapide a été traitée en 2m10, la plus “lente” en 4m11s.

Temps total de chargement dans HANA : 1h11m

(Les remarques « Rows affected : 0 » sont normaux !)

Pour MySQL, les temps de chargement sont constants aussi : aux alentours de 5m30 par fichier pour un total d’un peu plus de 2h

Ne sachant pas ce qu’SAP nous a mis à disposition comme machine serveur HANA, nous avons aussi fait l’essai avec MySQL sur une machine avec un SSD. Les temps de chargement des fichiers sont comparables aux temps d’HANA – environ 2m30 par fichier (ce qui est tout à fait honnête pour une base de données gratuite!)

Taille de la base de données

Si l’on considère qu’il y a 48Go de données dans les fichiers CSV d’origine, comparons la taille des bases une fois chargées :

HANA :

MySQL :

Effectivement, les remarques de SAP concernant la compression des données semblent bien vraies – compresser 48Go de données en un peu plus que 7Go, c’est pas mal du tout!.

 

Rapidité du moteur SQL

(mes excuses pour les instructions SQL, je sais qu’on a plus l’habitude de montrer des schémas, des graphiques! 😉 )

(Merci à Vadim Tkachenko, auteur de l’article lié, pour les instructions SQL d’origine – son article me permet de comparer HANA à MonetDB et InfoBright (deux autres bases de données “en colonne”), en plus de MySQL)

Résultat HANA :

Résultat MySQL :

(L’écart de deux lignes s’explique par les lignes d’en-tête dans les fichiers CSV, que MySQL prend en compte, et que HANA rejette – sinon nous pouvons constater que les chiffres sont identiques entre les deux bases)

 

 

 

 

Il parait évident que l’architecture de SAP HANA offre des gains de performances impressionnants par rapport aux bases de données traditionnelles – MySQL sur un SSD reste quand même une base tout à fait correcte, et HANA arrive en général 6 fois plus rapide. Cependant, on ne peut pas dire – pour le moment – qu’HANA est la base la plus rapide, car MonetDB se montre souvent 40 fois plus rapide qu’HANA pour la même requête!

Il faut dire par contre que SAP HANA n’est pas qu’une base de données “simple” – le système offre beaucoup d’autres outils de modélisation de données et de fonctionnalités de programmation qui permettent de déporter sur la base de données des opérations effectuées jusque-là en ABAP.

Nous regarderons quelques-unes de ces possibilités dans un article futur.

 

4 commentaires pour “SAP HANA – plus rapide que son ombre?”

  1. Thomas dit :

    Nouvel article sur SAP HANA sur le blog Censio :
    https://blog.censio.fr/sap-hana/sap-hana-comment-amliorer-performances/

  2. cyril dit :

    Je veux jouer moi aussi ! ;-))

    Merci pour cet article qui montre concrètement les résultats de l’outil.

    Par contre vous êtes passé un peu rapidement sur la partie définition des tables et vues : Est-ce que cela ressemble à la création de tables comme dans un bonne vieille SE11 ou y a-t-il d’autres paramètres plus complexes à gérer ?

    Encore merci pour l’article.

  3. mwalker dit :

    Bonjour

    La création des tables peut se faire soit “à la main” (CREATE TABLE TOTO, …), soit peut se faire en important les métadonnées depuis un système source (par DataServices, SLT, ou autre). Pour ce qui est de la création des vues dans HANA, l’utilisation du SAP HANA Studio le rend très facile – plus facile et intuitif que notre bonne vieille SE11 !

  4. cyril dit :

    OK merci beaucoup.
    Bon ben il ne me reste plus qu’à convaincre mon client ;-))

Laisser un commentaire