Developpez.com - Rubrique Oracle

Le Club des Développeurs et IT Pro

Oracle présente sa solution « in-memory » pour concurrencer SAP et Microsoft

Le 2014-06-11 14:50:07, par Hinault Romaric, Responsable .NET
Dans le secteur des bases de données, la tendance est à la course aux performances avec la nouvelle option « in-Memory », un concept qui consiste à mettre en cache les données traitées par les applications plutôt que, par exemple, de faire des appels à un serveur.

SAP a été le pionnier des solutions in-memory avec sa solution « SAP in-memory » incluse dans la plateforme HANA lancée en 2010. Cette offre permettrait le traitement de volumes massifs de données en temps réel, en mémoire vive, avec à la clé une division par 1200 du temps de traitement dans certains scénarios.

Microsoft avait suivi en intégrant « Hekaton » à SQL Server 2012. La solution « In-Memory » de la société offrirait des performances jusqu’à 10 fois supérieures pour des applications existantes et jusqu’à 50 fois supérieures pour de nouvelles applications optimisées pour l’in-memory. IBM avait également fait le pas vers le concept « In-memory ».

Oracle, le géant des bases de données, n’est pas resté les bras croisés à regarder ses concurrents le distancer. La société a également travaillé sur une solution in-memory qui sera incluse à Oracle Database 12c. L'objectif d’Oracle est d'exécuter des requêtes 100 fois plus vite, mais aussi de multiplier par deux l’activité transactionnelle sans modifier le code applicatif.

Larry Ellison, PDG de la société, a annoncé lors d’un événement en ligne que l’option in-memory sera disponible dans son gestionnaire de base de données à partir du mois prochain, soit en avance sur le calendrier de la firme. L’option permettra aux administrateurs de stocker les données dans la mémoire du serveur, plutôt que sur le disque, afin de gagner en temps d’exécution.

Contrairement aux offres de la concurrence, notamment HANA de SAP, la solution d’Oracle sera compatible avec toutes les applications existantes. Les administrateurs n’auront pas à modifier leurs applications pour tirer parti de cette évolution d’Oracle Database 12c.

Les démonstrations lors du webcast d’Oracle ont montré une accélération de 100 à 1000 fois des performances des applications d’entreprise, notamment pour les applications Oracle E-Business Suite, Oracle JD Edwards, Oracle PeopleSoft, Oracle Siebel et Oracle Fusion Applications.

Source : Oracle
  Discussion forum
25 commentaires
  • pachot
    Expert éminent
    Envoyé par Nemek
    Juste pour ma curiosité puisque je ne suis pas un grand expert Oracle mais c'est quoi la différence avec le "Row cache" ?
    Bonjour,

    Le 'row cache' cache des lignes un peu comme une table de hachage clé->valeur. C'est une techno d'il y a au moins 20 ans.
    Le storage In-Memory qui va sortir stocke des colonnes, dans le but de les scanner rapidement avec des opérations CPU qui travaillent sur des vecteurs de données.
    Il n'y a pas vraiment de point communs. In-Memory n'est pas un cache d'ailleurs. C'est un stockage redondant.

    On ne peut pas encore trop parler de l'option In-Memory car elle est encore en beta. Elle devrait sortir d'ici quelques jours. Voici ce que j'avais écrit dessus avant d'avoir la beta: http://www.dbi-services.com/index.ph...ting-for-12102 (in english...)

    Cordialement,
    Franck.
  • ojo77
    Membre expérimenté
    Oracle propose du "In memory" avec times ten depuis des années.

    La nouvelle option "In memory" à sortir propose du stockage colonne en mémoire avec plus ou moins de compression.

    L'argument commercial qu'il y a derrière est la simplicité de mise en place

    Code :
    alter table toto in memory
    C'est fini ça fonctionne, non seulement les DBAs vont trouver ça 'trop simple' mais les développeurs n'auront rien à faire et tout est là : pas d'adaptation de code et des gains de performance annoncés pouvant aller jusqu'à 99,9% ...

    Ca c'est la brochure publicitaire.

    Forcément les tests révèlent des limites à l'outil. La première est évidente : pour faire du in memory, il faut avoir de la mémoire : beaucoup de mémoire. Mais j'ai aussi vu des requêtes d’agrégation sur des tables de quelques GigasOctets passer de quelques dizaines de secondes avec la table pourtant déjà en cache à quelques centièmes de secondes avec la table en zône de stockage colonne sans changer le code et surtout sans avoir besoin de faire appel à des procédures spécifiques (d'où l'inutilité, du point de vue oracle, d'en développer).

    Alors certes Oracle décline ... mais en fait c'est plus, de mon point de vue, le paradigme de base de données relationnelles qui est en perte de vitesse face à l'arrivée des bases de données non structurées, en mémoire, en colonne, partitionnées sur n serveurs, hiérarchiques ... bref toutes ces choses regroupées sous les noms de NoSQL et de big Data que la montée de telle ou telle base concurrente
  • pachot
    Expert éminent
    Envoyé par doc malkovich
    Merci de préciser. Par nature un cache est un stockage redondant non ?
    Disons que le cache c'est une structure dont on a besoin de toute façon pour accéder aux données, mais qu'on garde un peu plus longtemps que nécessaire au cas où on ait besoin d'accéder aux même données peu de temps après. Par exemple, pour lire un bloc d'un datafile, et encore plus pour le mettre à jour, il faudra de toute façon un buffer. Le buffer cache, c'est seulement le fait que ces buffers sont partagés et gardés même lorsque l'écriture sur disque est faite.
    Par contre, l'option In-Memory c'est un stockage supplémentaire, dont la mise à jour se fait en parallèle. C'est un nouveau segment, redondant car il peut être reconstruit à partir de la table, un peu comme un index ou une vue matérialisée. Sauf qu'il est en mémoire, et qu'il a un format 'colonne'. Ca ressemble plus à de la réplication qu'à un cache. et l'optimiseur choisit d'aller lire l'un ou l'autre.
    Alors qu'avec le buffer cache, l'optimiseur n'a pas le choix. Il y aura toujours un buffer get, qu'il faille faire un disk read ou non pour alimenter ce buffer.
  • earhater
    Membre éprouvé
    Intéressant ... Mais le nombre de données pouvant être stockées en mémoire doit être relativement faible non ? De plus cela pourra impacter les performances globales du serveur ... Je reste sceptique sur cette solution.
  • Tcharl
    Membre averti
    SAP n'était pas vraiment le premier, il y avait déjà un certain nombre de solutions avant eux:

    VMware Gemfire (Java)
    Oracle Coherence (Java)
    Alachisoft NCache (.Net)
    Gigaspaces XAP Elastic Caching Edition (Java)
    Hazelcast (Java)
    Scaleout StateServer (.Net)
    IBM eXtreme Scale
    Terracotta Enterprise Suite
    Jboss (Redhat) Infinispan
  • Julien Bodin
    Membre éclairé
    Excellente nouvelle
    Les SGBD ne sont que trop pénalisés par les performances des disques...

    Sinon, sauf erreur de ma part, "Hekaton" a été intégré à SQL Server 2014 et non 2012
  • ojo77
    Membre expérimenté
    Pour information le lancement officiel aura lieu le 18 dans l'après midi dans un grand Hotel Parisien.
    L'occasion de se faire une idée et de poser des questions pour les plus anglophones

    Pour s'inscrire c'est ici : http://www.oracle.com/us/dm/sev10031...2905MPP001C001
  • fkylol
    Nouveau membre du Club
    L'architecture hybride de L'exadata fait déjà des merveilles, alors si en plus on peut choisir de mettre certaines données spécifiquement en mémoire c'est parfait.
    Et si c'est compatible avec HCC ça ne devrait même pas couter si cher que ça.
  • *Serval
    Membre à l'essai
    Quelqu'un a une idée de la license? Est-ce encore un extra ou c'est intégré dans la license qui comprend le partioning?

    Impatient de tester ça sur mes Data Warehouses.
  • devkais
    Membre régulier
    Envoyé par *Serval
    Quelqu'un a une idée de la license? Est-ce encore un extra ou c'est intégré dans la license qui comprend le partioning?

    Impatient de tester ça sur mes Data Warehouses.
    Bonjour ,
    un extra cost est à prévoir pour l'option in-memory.
    rien à voir avec celui du partitionnement.