Database memory

Oracle Database In-Memory : pour vous faire patienter jusqu'au 18 juin - partie 1

31/05/2014
Business
Données

A l’occasion d’Oracle Open World 2013Larry Ellison a prĂ©sentĂ© la nouvelle fonctionnalitĂ© Oracle Database In-Memory 12c . Oracle organise le lancement en France de cette option rĂ©volutionnaire le 18 juin, Ă  Paris, avec la participation de Gilles Knoery, Directeur GĂ©nĂ©ral de DIGORA. Oracle Database In-Memory constitue une rupture technologique vĂ©ritablement bluffante, tout comme l'option Multi-Tenant, Ă©galement disponible sous Oracle 12c !!!

Voici le lien d'inscription pour cet événement du 18 juin : http://eventreg.oracle.com/profile/web/index.cfm?PKWebId=0x86964beb5 Depuis quelques mois, Digora a eu le privilège de tester cette nouvelle option dans le cadre du programme Beta Testing organisé par Oracle. Cette opportunité, accordée un très faible nombre de partenaires, témoigne de la confiance et de la reconnaissance qu’Oracle accorde à Digora. Durant cette période, nous avons pu approfondir et tester cette approche révolutionnaire d’Oracle. Jusqu’au 18 juin, nous ne pourrons pas révéler les détails… Mais, pour vous faire patienter jusqu’au 18 juin, nous souhaitons ci-dessous retranscrire la Keynote présentée par Larry Ellison à Oracle Open World 2013 le 22/9/2013, Keynote durant laquelle il a annoncé et décrit l’option Oracle InMemory 12c Database. Cette keynote est disponible à l'URL suivante : http://medianetwork.oracle.com/video/player/2685494045001 Dans les copies d'écran qui suivent, nous avons choisi de laisser affiché le temps écoulé pour que vous puissiez retrouver les passages concernés sur la vidéo.

1. Contexte de cette keynote : Oracle Open World 2013

imdb12c-01

En même temps, pour vous donner envie de participer à Oracle Open World 2014 (voir l'offre de Digora), voici quelques photos de cette présentation.

imdb12c-02

imdb12c-03

imdb12c-04

Pendant 35 mn environ, Larry Ellison a présenté cette option. Nous découperons cette partie de 35mn en plusieurs billets sur ce blog. Voici le premier billet sur ce sujet.

2. Larry Ellison rappelle le contexte et précise les objectifs

imdb12c-05

Lorsque vous mettez vos donnĂ©es en mĂ©moire, que vous chargez vos informations en mĂ©moire, une des raisons pour lesquelles vous le faites, c’est pour rendre votre système plus rapide. Nous avons dĂ©fini une sĂ©rie de critères dans la conception de cette option In-Memory Database. L’un de ces critères est bien connu par la plupart des concepteurs de bases de donnĂ©es : rendre l’exĂ©cution des requĂŞtes beaucoup plus rapides, et l’objectif d’Oracle a Ă©tĂ© de rendre l’exĂ©cution des requĂŞtes cent fois plus rapides. Vous prenez une machine avec son logiciel de bases de donnĂ©es. Vous installez un nouveau logiciel sur la mĂŞme machine exactement, et les requĂŞtes s’exĂ©cutent 100 fois plus rapidement. C’est une bonne chose ! Lorsque vous lancez une requĂŞte analytique, les rĂ©sultats sont instantanĂ©s. Nous voulions obtenir les mĂŞmes temps de rĂ©ponses excellents non seulement sur des bases de type Datawarehouse, dont les tables sont organisĂ©es spĂ©cialement pour cette usage, mais nous voulions que ce type de requĂŞtes fonctionne aussi rapidement sur des bases de type OLTP, telle que vos ERP. Donc, les requĂŞtes doivent pouvoir s’exĂ©cuter 100 fois plus vite, que ce soit sur des bases Datawarehouse ou sur des bases OLTP. Tout en parvenant Ă  rendre les requĂŞtes bien plus rapides, nous devons ĂŞtre très prudents afin de ne pas compromettre la performance des transactions. Vous pensez bien que si vous accĂ©lĂ©rez les requĂŞtes, il est probable que les transactions s’exĂ©cutent plus lentement, en ce qui concerne les insertions, les mises Ă  jour, etc… Cela va probablement ĂŞtre ralenti. Nous avons conçu une mĂ©thode qui, non seulement accĂ©lère l’exĂ©cution des requĂŞtes, dans une très grande mesure, mais, dans le mĂŞme temps au moins, double aussi le taux de traitement des transactions.

imdb12c-06

Une dĂ©marche de bon sens bien Ă©tablie, pour ce qui est  de dĂ©velopper une base de donnĂ©es transactionnelle telle qu’IBM DB2, Oracle, SQL Server, sur la façon de concevoir la base, sur la façon de stocker les donnĂ©es, consiste Ă  stocker les donnĂ©es dans un format « ligne Â». Vous avez des tables. Et dans les tables vous avez des lignes. Et dans une ligne, vous avez par exemple l’en-tĂŞte d’une commande. Par suite, si vous avez une transaction qui consiste Ă  ajouter une ligne dans la table des entĂŞtes de commandes, vous ne touchez qu’une ligne, la ligne insĂ©rĂ©e. Ce format de bases de donnĂ©es en mode lignes, qui est utilisĂ© depuis le dĂ©but de la technologie des bases de donnĂ©es relationnelles, a Ă©tĂ© conçu pour exĂ©cuter des applications transactionnelles très rapidement. Lors de l’ajout d’une nouvelle commande dans la table "en-tĂŞte de commandes" de votre base ERP, c’est une transaction très rapide sur une ligne avec de très nombreuses colonnes : une seule ligne est concernĂ©e. Puis vous insĂ©rez Ă©galement les lignes de dĂ©tails de commande. Durant ces dernières annĂ©es, les professeurs d’universitĂ© et les chercheurs en bases de donnĂ©es se sont mis Ă  proposer un format alternatif au format ligne pour stocker vos donnĂ©es. Et cette alternative ne stocke pas les donnĂ©es en lignes mais les stocke plutĂ´t en colonnes. L’objectif du stockage en colonnes Ă©tait de rendre les requĂŞtes beaucoup plus rapides, pour pouvoir gĂ©nĂ©rer des Ă©tats bien plus rapidement. Par exemple, c’est très efficace pour accĂ©der Ă  plusieurs colonnes et un grand nombre de lignes pour ces colonnes. Il y avait donc deux formats diffĂ©rents pour les bases de donnĂ©es. Un format en lignes qui existe depuis très longtemps, depuis le dĂ©but d’Oracle. Et depuis 5 ans environ un format en colonnes conçu spĂ©cialement pour accĂ©lĂ©rer le traitement des requĂŞtes (consultations).

 imdb12c-07

3. Larry Ellison rĂ©vèle l'idĂ©e gĂ©niale Bien. Nous avons eu une meilleure idĂ©e. Et si on stockait les donnĂ©es dans les deux formats, simultanĂ©ment ? Garder les donnĂ©es au format ligne, car nous les avons dĂ©jĂ  au format ligne. Et si on ajoutait Ă  ce format ligne les mĂŞmes donnĂ©es, mais rĂ©arrangĂ©es, avec une rotation en quelque sorte de 90°. RĂ©arrangĂ©e en format colonne. Et pendant que l’on y est, mettons les lignes et les colonnes en mĂ©moire. Ainsi, en gĂ©rant les deux formats, et quand je dis en gĂ©rant les deux formats lorsque vous ajoutez une ligne, rappelez-vous l’insertion de cette ligne dans la table des commandes, cela mettra simultanĂ©ment Ă  jour le stockage en colonne. Ainsi, vous mettrez simultanĂ©ment Ă  jour le stockage en mode lignes et en mode colonnes avec ce qu’on appelle l’intĂ©gritĂ© transactionnelle. Lorsque vous mettez Ă  jour l’un, vous mettez automatiquement Ă  jour l’autre. Ils sont consistants. Les donnĂ©es sont consistantes entre les deux formats. Maintenant, si vous avez ces deux formats et si vous mettez Ă  jour ces deux formats, particulièrement le stockage en mode colonnes en mĂ©moire, vous obtenez ce gain par un facteur 100 dans l’exĂ©cution des requĂŞtes. C’est tout simplement plus rapide de parcourir les donnĂ©es en mode colonne qu’en mode ligne. Mais, paradoxalement, lorsque vous faites cela, lorsque vous mettez Ă  jour les deux formats, les transactions vont plus vite. Vous pourriez vous dire que c’est contraire Ă  votre intuition, que cela n’a pas de sens. Si vous devez maintenant mettre Ă  jour simultanĂ©ment le format ligne et le format colonne, comment pouvez-vous aller plus vite qu’en ne mettant Ă  jour que le format ligne qui est la mĂ©thode que nous utilisons actuellement. Je reviendrai sur cette question.

imdb12c-08

Tout d’abord laissez-moi vous parler du stockage en mode colonnes. C’est une technologie complètement de type colonne.

imdb12c-09

Les colonnes sont stockées en mémoire. Elles sont fortement compressées. Elles sont utilisées de façon très intéressantes, je vais vous le montrer dans une minute. Il n’y a pas de journalisation de transaction pour le stockage en colonnes. Bien sûr nous avons la journalisation pour le stockage en mode lignes, pour permettre la récupération en cas de crash et pour différents types de Rollback. Mais nous n’avons pas besoin de le faire pour les deux modes de stockage. Par suite, il n’existe qu’un très léger overhead pour mettre à jour le stockage en colonnes en supplément du stockage en lignes classique d’Oracle. Oui, un très petit overhead.

4. Les "instruction vecteurs" (SIMD)

imdb12c-10

Maintenant que nous avons le stockage en colonnes, nous pouvons traiter les donnĂ©es Ă  une vitesse dĂ©mente. Chaque cĹ“ur de CPU - supposons que vous ayez un petit serveur avec 2 processeurs octo-cĹ“urs ce qui fait 16 cĹ“urs - chacun de ces cĹ“urs parcourt les colonnes Ă  des milliards de valeurs ou milliards de lignes par seconde. Chacun. Mais nous parallĂ©lisons. Donc, nous avons une machine Ă  2 sockets, chaque processeur dispose de 8 cĹ“urs, nous traitons une requĂŞte en la parallĂ©lisant sur les cĹ“urs et ils balaient les colonnes et ils examinent les valeurs Ă  des milliards de valeurs ou des milliards de lignes par secondes. Ils sont capables de le faire car ils utilisent ces instructions exotiques Ă  l’intĂ©rieur de la CPU appelĂ©es « instructions vecteurs Â». Elles sont aussi appelĂ©es parfois instructions SIMD. Cette simple instruction multiplie les accès aux valeurs de donnĂ©es. Ainsi, avec une seule instruction nous pouvons effectivement parcourir des valeurs multiples. Ainsi, vous obtenez ces vitesses inimaginables.

imdb12c-11

A nouveau, prenons un exemple ; faisons une recherche sur l’état (ou dĂ©partement). C’est au moins 100 fois plus rapide.

5. Le cas des requĂŞtes complexes et des jointures

Mais ne vous imaginez pas qu’il s’agit uniquement de parcourir des colonnes individuelles.

imdb12c-12

Cette approche est capable de gérer tant les requêtes complexes que les requêtes simples. Ainsi, si vous faites une jointure entre deux tables, cette jointure sera réalisée bien plus vite également. Les jointures sont converties en balayage rapide de colonnes. Par suite, des requêtes contenant de nombreuses jointures s’exécutent dramatiquement plus vite.

Conclusion provisoire...

Ainsi se termine ce premier billet sur la keynote prĂ©sentĂ©e par Larry Ellison Ă  Oracle Open World 2013 le 22/9/2013, keynote durant laquelle il a annoncĂ© et dĂ©crit l’option Oracle InMemory Database 12c qui est rĂ©ellement bluffante . Etes-vous aussi enthousiaste que DIGORA sur cette nouvelle technologie Oracle InMemory Database 12c ? Venez Ă  la prĂ©sentation Oracle du 18 juin pour en savoir beaucoup plus  et bĂ©nĂ©ficier d’un retour client et de l’interview de Gilles Knoery, Directeur GĂ©nĂ©ral de Digorasur les tests dĂ©jĂ  rĂ©alisĂ©s sur cette option. Lien d'inscription pour cet Ă©vĂ©nement : http://eventreg.oracle.com/profile/web/index.cfm?PKWebId=0x86964beb5 Vous pouvez lire la suite de cette sĂ©rie de billets en cliquant sur les liens suivants : http://www.digora.com/blog/oracle-database-memory-pour-vous-faire-patienter-jusquau-18-juin-partie-2 http://www.digora.com/blog/oracle-database-memory-pour-vous-faire-patienter-jusquau-18-juin-partie-3 Vous souhaitez mettre en oeuvre Oracle InMemory Database 12c rapidement ? Contactez-nous ici. Nous pouvons  prendre RDV pour le 19 juin... bandeau-inscriprion Index thĂ©matique du Blog Digora

copy-link