vendredi 1 juillet 2011

Objectif Performance

Bonjour à tous,

je me propose aujourd'hui de mettre en ligne un case study que j'ai écrit pour la Newsletter du User Group Informix France ( petit nom UGIF ), auquel je vous recommande de vous abonner car elle contient plein d'infos intéressantes. Pour s'abonner, c'est très simple: envoyez un email à ifmxnewsletter@fr.ibm.com avec "ABONNER" dans le sujet.
Bonne lecture et bons tests.
Eric

Etude de cas : Objectif performance…
"Bonjour, merci de vous être connecté sur notre station. Votre mission est, si vous l'acceptez, d'implémenter une nouvelle table dans la base de données, d'en faire un chargement initial avec un temps d'opération inférieur à 10 minutes, et de fournir à l'équipe de développeurs une manière de gérer au mieux les temps de réponses sur une requête imposée qui, selon le comité des testeurs de l'application reportant au Directeur des Opérations, a un temps de réponse inacceptable. Vous disposez d'IBM Informix Dynamic Server V11.70 FC2 Innovator-C Edition, un serveur Linux avec un processeur 4core, 16 Gb de RAM entièrement à votre disposition. Ah! J’oubliais, la table à charger comporte environ 70 millions de rangées, mais n'est pas très complexe quant à son schéma et son indexation. Il faudra de plus y charger environ 500 000 rangées tous les soirs" 

Ce genre de demande vous rappellera très certainement des situations vécues soit en tant que DBA, soit en tant que développeur. On constate généralement, à ces instants précis, un certain flottement dans le regard du destinataire de cette requête, de même que des symptômes caractéristiques du découragement ou d'une féroce envie de décliner la demande sous le chef de « ça n'est pas réaliste ». Il est vrai que dans les versions antérieures d'IDS cette demande représentait un véritable défi, difficile à relever. 
Mis à part peut-être l'utilisation de High Performance Loader, pas trop simple à mettre en oeuvre dans l'urgence, il faut avouer qu'il y avait au minimum de quoi être troublé par cette demande. Fort heureusement, nous sommes en 2011 et les laboratoires IBM Informix nous ont concocté un certain nombre d'améliorations très utiles, qui vont nous permettre de relever le défi avec IDS 11.70. 

Analysons tout d'abord la demande: 1) La nouvelle table contient tous les billets d’avion sur les liaisons entre la France, l’Allemagne, l’Angleterre, l’Italie, l’Espagne et les Etats-Unis depuis le 1er janvier 2005. en voici le schéma : create table tickets ( 
ticketno bigint, # N° unique de ticket 
lastname varchar(60), # Nom voyageur 
firstname varchar(30), # Prénom voyageur 
gender char(3), # MR/MRS/INF 
flightdate date, # Date du vol 
flightno char(6), # N° du vol 
fileno char(8), # N° de dossier 
price money(8,2), # Prix du vol 
carrier char(2), # Compagnie aérienne 
departfrom char(3), # aéroport de départ 
destination char(3) # aéroport de destination ); 
create index tickets3 on tickets (flightdate); 
create index tickets7 on tickets (destination);

Et enfin la requête qui pose des problèmes à nos amis développeurs: 
select destination , count(*) 
from tickets,airports 
where tickets.destination = airports.code 
and tickets.destination between "AAA" and "ZZZ" 
and airports.country = 'France' 
and flightdate between "21/03/2006" and "31/07/2010" 
group by 1 

J’avais au préalable réussi à convaincre les développeurs de fournir des indexes mono-colonne, de façon à éviter l’obtention de trop nombreux niveaux de B-Tree affaiblissant la performance. L'évocation du chiffre de 70 millions de rangées initiales, grossissant environ d'un million tous les 2 jours, est par contre de nature à susciter au minimum de l'intérêt, au maximum de l'inquiétude quant à l'atteinte des objectifs définis. 

Nous ne parlerons pas aujourd’hui de fragmentation de cette table qui pourrait nous apporter une solution ultérieurement en cas de détection de problèmes d'IO sur celle-ci. Nous ne parlerons pas non plus de la compression des tables, technique provenant de XPS et implémentée à partir de la version 11.50.xC6 qui, tout en réduisant environ de moitié (ou plus) l'espace disque, permet d'augmenter de façon significative les performances sur les "grosses" tables. Cette fonctionnalité est pour l'instant « optionnelle » (lire payante), et ne fait donc pas partie des options à envisager dans notre cas. 

Concentrons-nous donc sur la première partie du défi : le chargement de 70 millions de rangées en moins de 10 minutes. Nous avons pensé à High Performance Loader, qui est un outil très efficace, mais un peu complexe à mettre en oeuvre pour une première fois et dans le temps imparti. 

Je voulais donc évoquer ici l'utilisation des tables externes, provenant également de XPS et implémentées depuis la version 10.50. Le principe est très simple, vous créez votre table, sauf qu'au lieu de résider dans l'instance IDS, celle-ci est constituée par un fichier sur file system, structuré soit par l'existence de délimiteurs de champs, soit par une structure fixe. Vous créez la table externe qui pointe sur ce(s) fichier(s) et qui en décrit la structure comme une table « normale ». Nous avons donc appliqué ceci pour le cas d'aujourd'hui : 
CREATE EXTERNAL TABLE ext_tickets 
SAMEAS tickets 
USING (DATAFILES ("DISK:/home/eric/StagingArea/ObjectifPerf/tickets.unl"), DELIMITER "|",EXPRESS,MAXERRORS 10,REJECTFILE "/tmp/x_tickets.out")

Expliquons : 
« SAMEAS tickets » veut dire créer la table à l'image du schéma de la table déjà existante tickets. 
« DATAFILES DISK » : notre fichier est sur disque et se nomme... 
« DELIMITER » : c'est une structure avec délimiteurs de champs, ici le « pipe » 
« EXPRESS » : le mode de chargement. Il s'oppose au mode DELUXE. Ce mode évite l'utilisation des pages de buffers lors de la lecture dans cette table, ce qui va muscler fortement la performance de notre chargement. 
« MAXERRORS » : au-delà de ce nombre d'erreurs, la création de la table s'arrête. 
« REJECTFILE » : le fichier où sont consignées les erreurs de chargement.

Une table externe peut donc être manipulée par des tous types de requêtes SELECT ( order by, group by, prédicats) , mais ne peut pas être UPDATED,DELETED ni INSERTED. Résultat , avec table raw la commande de chargement est : 
INSERT INTO tickets SELECT * FROM ext_tickets 
70000000 row(s) inserted. 
real 6m20.937s user 0m0.005s sys 0m0.005s

Nous avons comparé avec la méthode insert into table load from file, et le résultat est sans appel : nous avons arrêté le chargement au bout de 24 minutes : seulement 24 Millions de rangées étaient chargées. 

Autre point important à relever : nous avons crée une table de type « RAW ». Ce type de table a la particularité de désactiver la journalisation de la table incriminée. En conséquence, la performance de chargement est drastiquement améliorée du fait de l'absence d'IO à cause de la journalisation (logical logs). La différence est plus que notoire. Le gros intérêt est qu'il est possible de changer en type STANDARD (journalisation) après le chargement par un simple ALTER TABLE, puis repasser en RAW pour les chargements consécutifs. 
Nous évitons également l’écueil de la ‘long transaction’. 

Nous avons donc atteint le premier objectif de passer sous les 10mn de temps de chargement, et restons sereins pour les chargements journaliers. 

Passons maintenant au deuxième défi : la requête La table tickets a un nombre de rangées respectable ( 70 millions de rangées ), et à cette échelle il convient de veiller à optimiser les ressources ainsi que les accès. 
Nous partirons de la baseline proposée par l'équipe des développeurs et prendre une mesure de performance. 
Nous avons de fait renoncé à la baseline, comprenant les plaintes des développeurs : la requête a été abortée au bout de 60 mn sans qu’elle soit terminée, voici son plan de requête : 
Estimated Cost: 3126460 
Estimated # of Rows Returned: 775663 
Temporary Files Required For: Group By 
1) eric.airports: INDEX PATH 
Filters: (eric.airports.code >= 'AAA' AND eric.airports.code <= 'ZZZ' ) 
(1) Index Name: eric.i_airp3 
Index Keys: country (Serial, fragments: ALL) 
Lower Index Filter: eric.airports.country = 'France' 2) eric.tickets: 
INDEX PATH Filters: (eric.tickets.flightdate >= 21/03/2006 AND eric.tickets.flightdate <= 31/07/2010 ) 
(1) Index Name: eric.tickets7 
Index Keys: destination (Serial, fragments: ALL) 
Lower Index Filter: eric.tickets.destination = eric.airports.code
NESTED LOOP JOIN 

Nous obtenons donc une nested loop (boucle imbriquée pour la jointure ), avec utilisation de l’index sur les pays pour la table airports ( 10000 rangées ), et l’index date du vol pour la table des tickets. Onstat - p nous donne 7509528 rangées lues (read). 

C’est à ce moment que nous introduisons la nouvelle directive d’optimiseur MULTI_INDEX, qui va nous permettre d’utiliser plusieurs indexes sur une même table, contrairement à ce qui se faisait auparavant. La syntaxe : 
SELECT --+multi_index(tickets tickets3 tickets7) 
distinct(destination) , count(*) .... 
from tickets,airports etc.... 

Nous allons dire à l’optimiseur d’utiliser les index tickets3 ET tickets7 pour la table tickets afin de lire un minimum de pages de données, et par conséquence réduire les IO sur cette requête. Voici le résultat du set explain : 
DIRECTIVES FOLLOWED: MULTI_INDEX ( tickets tickets3 tickets7 ) 
DIRECTIVES NOT FOLLOWED: 
Estimated Cost: 113176408 
Estimated # of Rows Returned: 775663 
Temporary Files Required For: Group By 
1) eric.tickets: MULTI INDEX PATH (SKIP SCAN) 
(1) Index Name: eric.tickets7 
Index Keys: destination (Serial, fragments: ALL) 
Lower Index Filter: eric.tickets.destination >= 'AAA' 
Upper Index Filter: eric.tickets.destination <= 'ZZZ' AND 
(2) Index Name: eric.tickets3 Index Keys: flightdate (Serial, fragments: ALL)
Lower Index Filter: eric.tickets.flightdate >= 21/03/2006 
Upper Index Filter: eric.tickets.flightdate <= 31/07/2010 
2) eric.airports: INDEX PATH 
Filters: Table Scan Filters: (eric.airports.code >= 'AAA' AND eric.airports.code <= 'ZZZ' ) 
(1) Index Name: eric.i_airp3 
Index Keys: country (Serial, fragments: ALL) 
Lower Index Filter: eric.airports.country = 'France' 
DYNAMIC HASH JOIN
Dynamic Hash Filters: eric.tickets.destination = eric.airports.code

La physionomie du plan de requête a totalement changé : nous voyons l’activation de la directive multi-index sur la table tickets, qui a pour effet l’utilisation de l’index tickets7 + l’index tickets3 et finalisant le plan par un HASH JOIN pour la jointure.

Onstat -p nous indique que seulement 2.294.947 de rangées ont été lues, ce qui devrait signifier un progrès sensible. Et le temps de réponse ???? 
Le voici : 
155 row(s) unloaded 
real 5m22.672s user 0m0.005s sys 0m0.008s 

Oui ! c’est bien 5 mn 22s. L’objectif d’amélioration du temps de réponse est atteint. N’ayant pas de données implémentées sur plusieurs disques, nous ne pourrons pas profiter du multiplexage des scan threads qui auraient pu améliorer encore notre performance. N’ayant pas lancé ce test sur la Ultimate Edition, nous ne pouvons pas bénéficier du PDQPRIORITY qui aurait sans doute amélioré légèrement les résultats. 
Nous avons clairement profité de la directive MULTI INDEX, qui a diminué le temps d’attente de plus d’une heure (peut-être beaucoup plus ) à 5 mn 22s.

Il faut savoir également que cette technique est extrêmement efficace dans des requêtes avec prédicat « OR » portant sur des indexes différents d’une même table. Combien de fois nous a-t-il fallu réécrire une requête de ce type en incluant une UNION ? Avec cette technique, plus la peine de tout réécrire, il suffit d’ajouter la directive d’optimiseur qu’il faut, et le tour est joué ! 

Nous vous encourageons également à utiliser l’option de onmode ‘-Y sessionid 1 output file’, qui produira le fichier d’explain de la session ‘sessionid’ sans avoir à rajouter le ‘SET EXPLAIN ON’ dans le code de l’application. A utiliser toutefois avec modération en environnement production, car ce mode est très volubile et peut générer une charge d’IO qui pourra parasiter la performance. 

Voilà, mission accomplie ! Merci aux techniques de tables externes en mode EXPRESS, de table de type RAW qui suppriment temporairement la journalisation, et la nouvelle directive d’optimiseur MULTI_INDEX. A bientôt sur notre station pour de nouveaux défis.



mercredi 29 juin 2011

Ces petites choses qui ne font pas de bruit, mais qui évitent d'en faire

Bonjour à tous,

aujourd'hui nous allons faire très court. Je voulais juste vous parler d'un paramètre de votre onconfig préféré qui retiendra toute votre attention si l'on pose le problème dans les termes suivants: vous est-il déjà arrivé de détruire une instance Informix Dynamic Server en vous trompant d'option de la commande oninit ? La réponse est très certainement non, mais "seulement au cas où l'avenir vous réserve de mauvaises surprises" ( cette énorme pression lors d'une intervention d'urgence à 3h00 du matin par exemple...), sachez que IDS 11.70 xC1 a introduit un nouveau paramètre dans le onconfig, dont le but est de vous protéger de ce genre de mésaventure. Ce paramètre s'appelle FULL_DISK_INIT.

C'est très simple, si vous le valorisez à 0 ( valeur par défaut ), et que l'instance en question est déjà existante, , oninit -i vous enverra un message vous disant que l'initalisation est impossible: "oninit: fatal error in shared memory creation".
Warning: server initialization failed or possibly timed out ..."
Même si celà ressemble à un message d'erreur, vous êtes sauvé, le chunk root n'a pas été détruit.

Bien sûr s'il s'agit d'une vraie initialisation, c'est-à-dire que c'est la première fois que vous créez ce root chunk, le processus ira jusqu'au bout comme auparavant.

Si vous avez vraiment besoin d'écraser le root chunk, vous pouvez donc modifier ledit paramètre à 1, TEMPORAIREMENT, pour pouvoir arriver à vos fins.

Voilà encore une bonne raison pour upgrader vers la version 11.70. Cette amélioration ne représente cependant qu'une goutte noyée dans un grand nombre de nouvelles fonctionnalités apportée par la 11.70

Mais ça, c'est une autre histoire...

mardi 14 juin 2011

Des nouvelles du front

Bonjour à tous,

vu chez mon ami et néanmoins gourou Fernando Nunes de Lisbonne, des nouvelles d' "une autre compagnie éditant des SGBD commençant par O".

En effet, la nouvelle est tombée fin mars 2011: ladite compagnie citée plus-haut abandonne le développement des versions futures dudit SGDB sur plateforme HP-UX tournant sur le processeur Intel Itanium, tout en garantissant "quand-même" le support sur les versions existantes. Selon HP, la base installée représente environ 140000 clients qui peuvent se poser des questions quand à la pérennité de leur choix.

Fernando évoque les 3 solutions possibles:
1) sauter dans le train dudit fabricant de SGDB, par ailleurs fabricant de matériel ( SPARC ), et advienne que pourra pour ce qui est des coûts "annexes".
2) changer de constructeur, en priant pour que la même plaisanterie ne survienne pas d'ici quelque temps.
3) Migrer vers IBM Informix, pour différentes raisons parmi lesquelles
* la fiabilité,la robustesse, le faible coût à l'exploitation
* la feuille de route claire d'IBM, venant d'accomplir 10 ans d'améliorations constantes du produit depuis le rachat.
* parce que Informix et HP sont "deux mots qui vont très bien ensemble" depuis plusieurs décennies et les faits l'ont démontré et continuent à le démontrer.

Comme quoi, cet éditeur qui accusait il y a 10 ans IBM d'abandonner définitivement ses clients Informix ( ce qui ne s'est de fait pas produit) , parait à ce jour adopter les pratiques qu'il était si prompt à dénoncer...

L'article est un peu dense et en anglais, mais il vaut le coup. Pour y accéder cliquez sur le titre de cet article

A bientôt

Eric

IDS enfin sur facebook

Bonjour à tous,

je sors le nez de mes métriques sur un système de production pour vous informer que enfin Informix Dynamic Server a sa page sur Facebook.

N'hésitez pas à aller sur cette page et dire que vous aimez!
http://www.facebook.com/pages/IBM-Informix-Dynamic-Server-IDS/23461144288

La page pointe vers les news interessantes sur votre SGBD favori.

A bientôt

vendredi 6 mai 2011

Informix Dynamic Server existe vraiment à partir de dorénavant

Bonjour à tous

je passais juste vous signaler que le wiki sur Informix Dynamic Server a été profondément remanié et comporte dorénavant des informations plus complètes.
Pour vous y rendre, cliquez sur le titre de ce message ( plus haut ), ou bien allez à

La vie de Informix Dynamic Server




A bientôt

jeudi 5 mai 2011

IWA ? Informix Warehouse Accelerator


Un jeu nommé VITESSE!             Présentation de Informix Ultimate Warehouse Edition


Mais qu'ont-ils donc tous à s'agiter autour de cette annonce? L'offre  IBM Informix Ultimate Warehouse apporte de fait des améliorations de performance qualifiables d'extrêmes pour la solution décisionnelle d'Informix, utilisant une technologie d'accélération à couper le souffle.

Bon allez! Encore un qui exagère pour vendre sa camelote.. Ok, gardez vos questions pour l'instant!

Laissez-moi d'abord explorer le contenu de cette offre avant de rentrer dans les détails. Elle consiste à la base en une édition flambant neuve qui se décompose ainsi:

  • Informix Ultimate Edition 11.70 XC2 ou supérieure (notre moteur légendaire)
  • Informix Warehouse Accelerator (contenant Smart Analytics Studio) 
  • Informix Storage Optimization Feature (en 2 mots: Informix Compression)
La composante majeure de l'offre est l'"Accélérateur de Dépôt Informix" ( En version Québecoise, Warehouse en version Française ).
Cette technologie révolutionnaire issue des laboratoires de recherche IBM, vous permet de charger totalement en mémoire votre data mart (celui sur lequel vous exécutez vos requêtes), et ceci dans  un format compressé.
L'organisation de la mémoire ainsi que ses accès utilisent intensément une approche de base de données orientée colonne.
Les requêtes peuvent être exécutées à volonté sans avoir à décompresser les données en mémoire.
Et concrètement, celà donne quoi ?
Dans bien des cas ( une écrasante majorité NDT), les temps de réponses des requêtes changent radicalement d'ordre de grandeur, ceci étant du à de considérables gains en performance.




Certains des clients travaillant sur le programme Beta nous ont communiqué des résultats de performances se démarquant clairement de ce qui a pu se voir jusqu'à ce jour.
Dans ce programme Beta, il a pu être observé 2 ordres de grandeur en ce qui concerne l'amélioration des temps de réponses: pour certains clients, de 100 à 300 fois plus rapide ( oui j'ai bien dit FOIS ), pour d'autres, des gains de 10 à 100 fois.

La cerise sur le gâteau: vos applications de BI connectées à Informix restent en l'état, sans devoir y apporter quelque modification que ce soit!

Informix  Warehouse Accelerator est fortement optimisé pour la plateforme Linux/Intel est doit fonctionner sur un système qui répond aux prérequis suivants

Voici en un mot comment tout celà s'articule
  • vous upgradez ( si vous avez  déjà déployé Ultimate Edition pour votre warehouse ) vers la version introduisant  IWA ( 11.70 XC2 ou supérieure )
  • vous installez Informix Warehouse Accelerator sur un système Linux/Intel 
  • vous configurez Informix Warehouse Accelerator à partir de l'interface graphique intuitif de Ultimate Edition ( nommé IBM Smart Analytics Studio )
  • vous chargez votre(s) data mart(s) dans Informix Warehouse Accelerator
  • vous exécutez vos applications de BI sur l'instance Informix comme avant
Grâce à la fonctionnalité d'optimisation du stockage Informix ( la compression), vous pourrez compresser l'espace de votre warehouse sur disque et réaliser de substantielles économies de stockage.

Votre warehouse reste géré par l'instance Informix et vos requêtes de BI sont toujours exécutées par cette dernière. Quand une requête est identifiée comme devant être exécutée sur un data mart configuré pour l'accélération, l'optimiseur Informix passe la requête à l'accélérateur, lequel retourne les résultats à l'application BI. Le graphique ci-dessous vous donnera un bon aperçu des opérations



image


Informix Ultimate Edition est supporté en version 64-bit sur les OS suivants: AIX, Solaris, HP-UX et Linux:



Processor/System

Operating System

Informix 11.70

IBM Power (IBM System p)

AIX 6.1 (64-bit)

64-bit

Sun Sparc

Solaris 10 (64-bit)

64-bit

Intel x64 (Intel EM64T)

Linux RHEL 5 (64-bit, SUSE 11 (64-bit)

64-bit

HP Itanium

HP-UX  11.31 (64-bit)

64-bit

Le composant IWA est supporté sur la plateforme suivante:



Processor/System

Operating System

Informix Warehouse Accelerator

Intel x64 (Intel EM64T)

Linux RHEL 5 (64-bit, SUSE 11 (64-bit)

64-bit



Pour en savoir plus sur Informix Ultimate Warehouse Edition visitez la page Informix Warehouse ou bien participez aux évènements Discover Informix et IIUG près de chez vous, ou encore sur les divers blogs d'experts informix. Egalement visible à la IIUG Conference à partir du 15 Mai 2011.


Pour terminer sur une note philosophique, voici ma favorite pour votre environnement de warehouse: "choisissez le NON comme unique réponse possible!!!"
                                                                                                     image

#

Cet article a été écrit par Rajesh Nair, chef de produit Informix chez IBM.
L'humble traduction a été réalisée avec son accord par votre serviteur

Version originale ici:
US announcement

mercredi 13 avril 2011

Les nouvelles éditions de IBM Informix Dynamic Server

Bonjour à tous,

si vous êtes un habitué de Dynamic Server, je parie que vous êtes restés quelque peu perplexes lors de l'annonce de  Panther ( IDS 11.7 ), suivie de près par la refonte du packaging de notre SGBD préféré. Le mot "perplexe" pouvant refléter une réalité plus irritante, j'ai pris sur moi d'expliquer dans ce bulletin en quoi consiste ce nouveau packaging, ce qu'on obtient avec chacune des "editions" et éventuellement ce qu'on n'a pas ou plus.

1) La grande nouveauté est l'apparition d'une version gratuite de IDS. Après des rumeurs comme quoi Informix-SE allait devenir un freeware, IBM a pris tout le monde de cours en annonçant Informix Dynamic Server Innovator-C Edition, le premier moteur Informix gratuit. Derrière l'effet de suprise, qu'avons-nous réellement avec Innovator C?
  • la tarification: IE est gratuite lorsqu'utilisée pour développer des applications, les tester et les déployer. Vous la téléchargez à partir du site ibm et vous l'installez dans vos environnements de dev, test et production sans rien devoir à personne.  Si vous développez, testez et exploitez votre application en interne, vous restez dans le cadre de la licence gratuite. Par contre, si vous êtes éditeur d'applications et désirez inclure IDS dans un bundle appli + SGBD, vous devrez facturer une licence de redistribution au client final.
  • Au niveau des plateformes, cette édition est portée sur Linux, les Unix habituels, Mac Intosh et Windows. 
  • pour les ressources-système, considérant une install sur une machine, vous serez limité à 1 socket ( processeur physique ), 4 coeurs, un total de 2Gb de RAM dédiée à toutes les instances IDS installées sur cette machine.
  • pour le prix, vous n'avez pas droit à la compression des tables, le shared disk secondary ( fonctionnalité de replication de données ), les fonctionnalités de parallélisme ( set pdqpriority et consorts ), le partitionnement de tables, le déploiement de serveurs secondaires multiples. Les requêtes distribuées sont également bloquées.
  • mais ... vous pouvez déployer un cluster de 2 nodes ( 1 primaire et 1 secondaire) en Highly available Data Replication, ou bien 2 root nodes en Enterprise Replication. Vous disposez également "pour le prix" du datablade Spatial, destiné à gérer les données de géolocalisation, ainsi que les types de données TimeSeries avec lequel IBM fait beaucoup de bruit aujourd'hui.
Voilà donc de quoi héberger déjà de belles applications transactionnelles, en bénéficiant de la robustesse et la performance du produit son incomparable facilité ( et coût ) d'administration pour un prix défiant toute concurrence. Innovator C Edition constitue également une solution très sérieuse de déploiement d'applications "secondaires" dans de très grandes sociétés, sans avoir à s'embêter avec des solutions SGBD gratuites n'ayant pas le même niveau de qualité et de facilité d'administration que Informix Dynamic Server. De plus, si l'application "secondaire" devient "critique", il suffit techniquement d'installer les binaires IDS de l'édition adéquate pour bénéficier des fonctionnalités bridées, et d'acquitter le prix de la licence sans pour autant se faire peur avec un projet de migration SGBD + migration de données ( sans parler de ces petites différences de comportement résultant de la migration qui vous pourriront la vie ). Le tour est joué en un "tar" de main. ( humour...)




2) La Choice Edition est l'entrée de gamme des versions payantes, ayant la particularité de n'être portée que sur Mac et Windows.
  • la tarification: c'est une version payante, dont le tarif peut être calculé en Limited Use Socket ou bien AUSI ( nombre d'utilisateurs autorisés )
  • comme spécifié plus haut, nous n'avons que 2 portages: Windows et Mac.
  • pour les ressources-système, considérant une install sur une machine, vous serez limité à 2 sockets ( processeur physique ), 8 coeurs au maximum, un total de 8Gb de RAM dédiée à toutes les instances IDS installées sur cette machine.
  • les fonctionnalités bridées sont les mêmes que celles de Innovator C Edition
  • les fonctionnalités disponibles sont les mêmes que celles de Innovator C Edition
Voici donc un excellent concurrent à certains SGBD fonctionnant sur plateformes Wintel. Ideal pour héberger des applications transactionnelles conséquentes ( avec une architecture telle que décrite pour cette édition, on peut déjà envisager un grand nombre d'utilisateurs et des bases de données de volume très conséquent). On conserve évidemment tous les avantages de performance et de robustesse de IDS, en se gardant une très grande marge de croissance en termes de fonctionnalités et de volume avec les gammes supérieures. 


3) La Growth Edition permet de monter encore plus en puissance, incluant cette fois-ci tous les portages standard ( windows, mac, unix, linux ).
  • la tarification: version payante, le coût de la licence pouvant être calculé de différentes façons ( prise en compte des cores/cpu ou bien nombre de users déclarées )
  • plateformes: toutes les plateformes "habituelles" 
  • limitations en ressources-système: 4 sockets,  16 coeurs, 16 Gb de mémoire dédiée à IDS,
  • seuls la compression, le parallélisme et le partitionnement ne sont pas disponibles,
  • réplication: un cluster de maximum 3 noeuds, 1 Primary et 2 secondaries, ou bien Enterprise Replication illimitée
Somme toute, un produit adapté pour des applications transactionnelles avec de nombreux utilisateurs, mettant en oeuvre la réplication Entreprise.




4) la Ultimate Edition, c'est la Rolls: rien n'est bridé, même pas le prix :-)
  • la tarification: payant bien sûr, à trouver la formule de licence la plus adaptée à l'implémentation
  • plateformes: toutes les plateformes habituelles,
  • limitations en ressource-système: celles de votre budget ou celles de votre imagination
  • le seul "bémol" est l'option de compression qui est pour l'instant en supplément
Dans cette édition, le produit développe toute sa puissance en terme de parallélisme. Il est donc destiné à être déployé pour des applications OLTP massives qui peuvent toutefois invoquer des requêtes décisionnelles lourdes mettant en oeuvre le parallélisme, si l'architecture de la machine est à la hauteur. De plus, avec la sortie de 1170 XC2, Informix Warehouse Accelerator est une option à considérer, mais çà, c'est une autre histoire .....


Attention, si vous venez d'éditions antérieures, il faudra prendre en compte le fait que le parallèlisme n'est plus disponible sauf dans Ultimate Edition. Si vous provenez notamment de Workgroup Edition, il faudra demander à IBM le transfert de droit aux fonctionnalités de parallèlisme vers la Growth Edition, ce qui doit normalement se faire sans problème, mais ce n'est pas à faire au moment de l'installation de Growth Edition...


J'espère en tous cas que ce petit "papier" a contribué à rendre le nouveau catalogue Informix plus clair et comprendre quelle édition est adaptée à votre besoin. En tous cas si vous avez encore des doutes, n'hésitez pas à me contacter et je transmettrai à IBM le cas échéant.


A bientôt pour de nouvelles aventures
BeGooden