Developpez.com

Le Club des Développeurs et IT Pro

Oracle ajoute l'option "in-memory database" à Oracle Database 12c

Pour une exécution des requêtes 100 fois plus rapide

Le 2013-09-24 00:06:16, par Stéphane le calme, Chroniqueur Actualités
Oracle ajoute l'option « in-memory database » à Oracle Database 12c,
pour une exécution des requêtes 100 fois plus rapide

La conférence annuelle OpenWorld d'Oracle a débuté ce dimanche à San Francisco et se tiendra jusqu'au 26 septembre au Moscone Center. Larry Ellison, fondateur et PDG de la structure, annonce l'option « in-memory database » pour Oracle Database 12c. L'objectif 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.

Pour parvenir à ces prouesses, Oracle ajoute au stockage en ligne le stockage dans une nouvelle zone mémoire dans un format « columnar » (base de données en colonnes) qui apporte le gain de performance et réduit le temps de réponse de façon significative.

« Tout ce qui fonctionne aujourd’hui, s’enclenche lorsqu’on appuie sur on. Vous pouvez doubler la vitesse des mises à jour de toute base de données Oracle, en appuyant sur un bouton », explique Larry Ellison.

Cette initiative vise surtout son concurrent SAP, chez qui l’in-memory est déjà disponible depuis deux ans sur HANA. Rappelons qu'Oracle utilisait, jusqu'à aujourd'hui, la technologie HANA. Pour l'instant, aucune information n'a filtré quant au prix et à la disponibilité de cette solution.

Source : Forbes

Et vous ?

Qu'en pensez-vous ?
  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.
  • pacmann
    Membre émérite
    Enfin le paramètre d'init "fast=true", hourra !
  • Waldar
    Modérateur
    Quelqu'un avait regardé Oracle TimesTen, qui est la DB in-memory d'Oracle depuis quelques années ?
  • 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.
  • Carhiboux
    Expert éminent sénior
    Certains gros clients vont apprécier.

    Mais c'est quoi la limitation?

    Il doit y en avoir une puisque sinon, cela serait mis par défaut pour toute requête executée, non?
  • LSMetag
    Expert confirmé
    Ho la limitation va être bien simple.

    Il faudra vider le portefeuille pour avoir accès à l'option. C'est comme ça chez Oracle.
  • Baldrick
    Membre averti
    Envoyé par Stéphane le calme
    
    Pour l'instant, aucune information n'a filtré quant au prix et à la disponibilité de cette solution.
    À en croire ce document qui date du 19 septembre, il faut débourser 23000$ par processeur pour l'option "in-memory database cache"...
  • chaporon
    Membre du Club
    Envoyé par Waldar
    Quelqu'un avait regardé Oracle TimesTen, qui est la DB in-memory d'Oracle depuis quelques années ?
    Je travaille avec la machine Exalytics d'Oracle ou Timesten est installe.

    C'est du decisionnel et Timesten vient plus de l'OLTP.

    J'ai encore aucune connaissance des prix pour pouvoir verfiier qu'elle configuration est la meilleure (Oracle database ou Timesten)

    Il a tout ce qui lui faut a part le query parallelisme. Nous attendons avec impatience cette ajout.

    Apres ca reste de l'in-memory et souvent il n'est pas possible de tout charger en memoire. Il faut donc faire des choix de data a charger ce qui revient a creer des aggregations.
  • doc malkovich
    Expert confirmé
    Envoyé par chaporon
    Apres ca reste de l'in-memory et souvent il n'est pas possible de tout charger en memoire. Il faut donc faire des choix de data a charger ce qui revient a creer des aggregations.
    Sur une machine standard oui. Mais sur une appliance ou un serveur bien taillé non.
    Si on prend le futur SPARC M6-32 il y a 32 To de Ram, de quoi héberger une belle petite base .
    C'est ce qui se passe avec Hana, où tout est en mémoire.