SAP HANA (sur Amazon Web Services), l’in-memory pour booster l’analytique.

Nous vous proposons de parcourir les caractéristiques de HANA la base in-memory colonne développée par SAP, et vous inviter à connaître la solution au travers de l’offre de Amazon Web Services qui offre un terrain de jeu parfait pour un POC.

HANA : Une base colonne en mémoire

Avec l’avènement des nouvelles architectures matérielles vers 2005 ( CPU plus nombreux et plus rapides, RAM dépassant le TB ), les bases colonnes ont trouvé un support leur permettant de se développer industriellement. A ce jour, outre HANA, on peut citer Vertica ( HP ) ou Oracle ( option in-memory ) comme alternatives sur une machine Unix/Linux. Mais plus généralement, tous les grands éditeurs possèdent une option colonne dans leur catalogue et il est frappant d’observer qu’il n’existe pas (encore ?) de bases colonnes open source disponibles du type Cassandra ou Couchbase !

Les bases in-memory colonnes ont pour but d’optimiser l’OLAP, c’est-à-dire l’analytique en direct. Pour ce faire, elles se reposent sur les principales caractéristiques suivantes :

  • Un taux de compression de 10 ou plus sur les colonnes :

    En effet, l’entropie est beaucoup plus faible sur une colonne que sur une ligne, les données se « ressemblant » plus. Ainsi, des algorithmes de compression moins consommateurs en CPU ( RLE, bit-vector, dictionnary, … ) ont pu être mis en oeuvre pour profiter de cette faible entropie.
  • Une nouvelle localisation des données :

    Au démarrage de l’instance, les données sont chargées en RAM. Puis, la vectorisation des colonnes permet à ces dernières de résider dans les caches du processeur, d’où une accélération supplémentaire en terme d’accès à la donnée.
  • Une parallélisation accrue :

    Au niveau des processeurs, la technologie SIMD ( SingleInstructionMultipleData ) permet d’effectuer des opérations binaires entre les vecteurs.

HANA propose d’aller plus loin en se positionnant comme une base pouvant également gérer l’OLTP, un choix différent d’Oracle qui propose le mode colonne en complément du mode ligne.

Pour ce faire, SAP a introduit un concept de merge delta permettant de gérer les mises à jour unitaires et en masse. Pour les mises à jour unitaires, la zone delta est en mode ligne. Les données sont ensuite déversées dans la zone réservée aux mises à jour de masse, zone en mode colonne non optimisée. Enfin, les données rejoignent la zone principale de manière asynchrone. Sur ce point, l’éditeur doit encore faire ses preuves, la plupart des cas d’utilisation publiés étant relatifs à la BI.

Quel impact sur le développement ?

Le développement des requêtes se fait en SQL et les procédures stockées sont écrites en SQL Script. La grammaire SQL est déjà bien étoffée ( lien : http://help.sap.com/hana_appliance => SAP HANA SQL and System Views Reference). En revanche, le langa
ge SQL Script (SAP HANA SQLScript Reference ) est principalement dédié au traitement OLAP, en particulier les fonctions qui ne sont utilisables que pour les lectures afin de les paralléliser au mieux. Les procédures, quant à elles, permettent d’encapsuler les requêtes SQL de toute nature, mais il est encore pénalisant de gérer les transactions ( commit & rollback non autorisés ) au sein d’elles.


De plus, SAP met en avant un modèle analytique basé sur des attribute view ( dimensions ), des analytical view ( tables de fait ) et des calculation views ( calculs sur les tables de fait ) permettant de concevoir un modèle en étoile dans un contexte colonne. Les calculation views se basent sur des CE-Build In fonctions ou des requêtes SQL de lecture. Il existe aussi un outil de conception entièrement graphique qui permet de mettre en oeuvre ce modèle analytique.


Lancer son instance HANA dans AWS


Afin de promouvoir HANA, SAP propose de s’initier à ce produit via Amazon Web Services (AWS). L’instance HANA peut être déployée à Francfort ou en Virginie du Nord. Petite limite observée à ce jour, Il est préférable de déployer sur l’instance des Etats-Unis, pour surmonter des problèmes de disponibilité (machine non réservée perte de contexte à chaque arrêt / démarrage ). Elle repose sur une machine Linux Suse de type m2.4xlarge ( 8 vcpu, > 60 GB RAM ).


En termes de coût, l’instance HANA est gratuite et l’infrastructure mise à disposition par AWS payante (Remarque : le coût de possession sur ses propres infrastructures n’est pas sur ce modèle). A titre d’exemple, le coût peut être déchiffré de la manière suivante :

$1.080 par heure d’exécution ;
$0.05 par GB au-delà de 30 GB par mois ;
$0.05 pour un million d’IO au-delà de 2 millions d’IO par mois ;
$0.095 par GB ( snapshot ) au-delà de 1 GB par mois ;
Taxes (20 %).


opérationnel en 2 heures

En termes technique, la procédure est décrite à cette adresse : http://scn.sap.com/docs/DOC-28294 et permet d’être opérationnel en 2-3 jours, le temps d’initialiser le compte AWS. Si ce dernier existe déjà, l’installation est faite en quelques heures, le temps de se familiariser avec la version cloud d’HANA.
Bien que relativement simple d’appréhension, la création de l’instance HANA peut vous conduire à recevoir des erreurs délivrées par les web services d’AWS.

Exemple : lors de la configuration du compte AWS, vous pouvez tomber sur cette page:

Dans ce cas, contacter le support disponible sous AWS ; il est très réactif.
Une fois l’installation effectuée, l’instance se pilote via le site HANA Enterprise Cloud/Cloud Appliance Library :
HANA Enterprise Cloud

HANA STUDIO, client basé sur Eclipse, permet de développer, d’administrer et de monitorer l’instance HANA.
HANA Studio

Pour étudier cette solution, j’ai créé quelques tables en mode colonne ( nombre de colonnes variant entre 10 et 50, nombre de lignes variant entre quelques dizaines de milliers et 1 million ). Mon objectif n’était pas de tester des grandes tables ( plus de 1 GB en mode compressé ), mais de vérifier l’efficacité de la compression en mode colonne. Sur ce point, j’ai bien retrouvé des facteurs de 10 ou plus sur les colonnes non uniques.


D’autre part, je souhaitais étudier le SQL Script et ses limites pour la mise à jour. Je vous ai déjà parlé de la non gestion des transactions, mais il faut aussi savoir qu’il ne dispose pas de bulk collect. Si vous souhaitez l’équivalent, il vous faudra par exemple utiliser le mode batch de la couche JDBC. Comme alternative payante, vous pouvez utiliser SLT, un outil de réplication ou Data Services, un outil de chargement des données. Pour le chargement des fichiers, vous disposez aussi d’une commande import gratuite et optimisée ( thread, batch size ).


Enfin, je me suis intéressé à l’optimiseur colonne de HANA afin de mieux comprendre comment il fonctionne en terme de gestion des jointures ( jointure à 1 ou n colonnes ), d’utilisation des colonnes, de calculs d’agrégat. Pour ce faire, un outil indispensable : SAP HANA Plan Viz. Pour information, Hana dispose aussi d’un optimiseur ligne pour les tables en mode ligne et d’un optimiseur en mode OLAP pour le modèle analytique.

Changer de technologie c’est changer de paradigme

Avant de se lancer dans le grand bain, il faut appréhender ce nouveau type de solution en changeant de paradigme : le mode ligne n’est plus applicable ; il faut comprendre comment les opérations de lecture et d’écriture sont repensées et construire son modèle de données selon ces particularités. Un simple exemple très explicite: les index sont la plupart du temps inutiles en mode colonne.
Enfin, je vous conseille de lire ce post : http://scn.sap.com/community/hana-in-memory/blog/2013/12/29/6-golden-rules-for-new-sap-hana-developers.

Pour en savoir plus sur les bases colonnes et HANA :

  • Column-Oriented Database Systems : S.Harizopoulos, D.Abadi, P.Boncz [ VLDB 2009 Tutorial ];
  • The Design and Implementation of Modern Column-Oriented Database Systems: D.Abadi, P.Boncz, S.Harizopoulos, S.Idreos [ Foundations and Trends in Databases, 2012 ];
  • Building Advanced Data Model with SAP HANA: W.Steyn [ 2011 ];
  • Best-practices-for-sap hana data load: http://scn.sap.com/community/hana-in-memory/blog/2013/04/08/best-practices-for-sap-hana-data-load.

    • Stéphane NOTTER, Expert Architecture des données.



Paris Oracle Meetup : Le Compte-Rendu

Le 6 mars, Infotel a accueilli le POM ( Paris Oracle Meetup ) au Novotel de Bagnolet pour une soirée d’expertise sur la base de données Oracle. A ce titre, je vous invite à vous inscrire pour la soirée du 28 mai ; C.Antognini sera là pour vous présenter les nouveautés sur l’optimiseur de la 12c ( adaptive query optimization, statistics enhancements, … ) et pour dédicacer son nouveau livre. Pour plus d’informations, inscrivez-vous au POM : http://www.meetup.com/parisoracle/. Si vous souhaitez avoir un avant-goût sur les nouveautés de l’optimiseur, voici un lien où vous trouverez toutes les informations nécessaires : https://blogs.oracle.com/optimizer/entry/oracle_open_world_2013_it.


La soirée du 6 mars portait sur trois sujets :

  • Introduction de Ksplice ;
  • Utilisation de Scala dans la base de données Oracle ;
  • Démonstration de Delphix.

0 arrêt == 100% production avec KSplice

Ksplice ( lien : https://www.ksplice.com/) est un outil système permettant de faire un upgrade à chaud d’un système Linux ( distributions : Red Hat, Ubuntu, Oracle Linux ). Pour présenter le produit, G.Guillou (aka arkzoyd) a effectué une démonstration de Ksplice en récupérant un programme C sur le net exploitant une faille présente sur Red Hat et Oracle Linux ( depuis peu, Oracle Linux est un fork de Red Hat ). Une fois le programme compilé ( un simpe gcc suffit ), l’utilisateur devient root … Puis, il a lancé une instance Oracle sur cette VM et récupéré le patch de sécurité corrigeant cette faille. Pour finir, il a bien réussi à upgrader le kernel sans que l’instance soit arrêtée.

Linux étant de plus en plus installé dans les SI, ce produit peut être intéressant si vous travaillez dans un environnement 24/24, 7j/7.

Procédures stockées en SCALA

Scala ( lien : http://www.scala-lang.org/ ) est un langage orienté objet à la vogue en ce moment. I.Rusic a présenté le langage de manière succincte, puis s’est attaché à montrer que la JVM de l’instance Oracle peut exécuter du code Scala. Un joli défi technique qui appellera peut-être des utilisations futures ! En tout cas, K.Mensah, PM Java et auteur du livre Oracle Database Programming using Java and Web Services, a été séduit par son travail.

Virtualisez et simplifiez toute votre administration avec Delphix

Delphix est un produit facilitant le déploiement des bases Oracle. Il va permettre aux développeurs de créer des environnements en quelques clicks ! De cette manière, le DBA va enfin pouvoir se consacrer à des tâches plus créatrices de valeur ajoutée ( architecture, conception, tuning, … ).
Le principe est le suivant :

  1. une empreinte de la base de production est effectuée via des API RMAN.
  2. Cette empreinte est ensuite stockée dans un système propriétaire de fichiers, DxFS, qui est une extension de ZFS. Ce système permet d’obtenir des empreintes compressées ; par rapport aux bases initiales, leurs tailles sont divisées par 3 ou 4, selon les premiers tests effectués par Y.Colin.
  3. Puis, via une interface graphique, un développeur ou un DBA junior peut effectuer la copie d’une base dans un environnement cible en quelques clicks.

Pour une base de quelques TB, la durée de la copie ne prendrait que quelques minutes si on considère un benchmark effectué dans une grande société de l’énergie.

Une autre fonctionnalité séduisante est la possibilité de pouvoir conserver les changements effectuées sur une base durant une certaine période définie ( recovery window ). De cette manière, vous pouvez charger un environnement qui correspond à l’état de la base il y 4 jours, puis un autre avec une base datant de 2 jours.
Pour plus d’informations techniques, je vous conseille de commencer par le blog de K.Hayley ( lien : http://www.oraclerealworld.com/delphix/ ).

Stéphane NOTTER

,Architecte Performance et Bases de données



Infotel accueille le Paris Oracle Meetup

réservez votre date : Jeudi 6 mars

Infotel reçoit le Paris Oracle Meetup
Infotel a le plaisir d’organiser le 6 mars la rencontre du ‘Paris Oracle Meetup’. Le Paris Oracle Meetup est un groupe d’experts des technologies Oracle qui se réunit régulièrement pour traiter de sujets connexes à leur base de donnée de prédilection.
Cet événement aura lieu au Novotel (http://www.novotel.com/fr/hotel-0380-novotel-paris-est/index.shtml) à côté de notre centre de développement de Bagnolet, de 18h45 à 22h00, incluant le programme ci-dessous et une collation qui sera l’occasion d’échanges.

Au programme le 6 mars :

  • L’écriture de Procédures stockées en Scala,
  • La solution de virtualisation de bases de données Delphix qui révolutionne les cycles de développement et d’industrialisation,
  • La mise à jour à chaud du noyau Linux sans perturber la base de données.

Merci de nous contacter par mail à l’adresse ingenierie.technique@infotel.com