# Informix

Informix est une combinaison de base de données relationnelle et de base de données orientée objet. Cette solution a été créée par Informix Software. En 2001, cette société a été achetée par IBM. Le nom complet du produit devient alors IBM Informix Dynamic Server.

## Historique
### Démarrage

Laura King et Roger Sippl fondèrent dans les années 1980 la société RDS (Relational Database Systems), et développèrent la technologie ISAM (gestion des accès en séquentiel indexé). Avec l'émergence des bases de données relationnelles, ils ont utilisé cette technique pour créer Informix, un ensemble fonctionnant sur plateforme Unix qui comportait un générateur d'états (ace), un générateur d'écrans interactifs (perform) et le langage de programmation Informer.
Le produit a terminé son cycle avec la version 3.30 vers 1985. C'est alors qu'ils ont parié sur l'avènement du langage à cette époque plutôt confidentiel: SQL.

### Avènement de Informix-SQL et Informix-4GL

En séparant la couche interface de la couche d'accès aux données, ils ont créé Informix-SQL 1.10 qui incluait ace, perform et l'accès aux bases de données (isql) . Plus tard est né Informix-4GL 1.00, véritable langage de 4e génération basé sur le langage C, qui a été durant très longtemps le langage de programmation le plus utilisé après le C, toutes plateformes Unix confondues. Parallèlement, C-ISAM, la couche d'accès aux données, devenait un produit à part entière, devenait un produit très largement diffusé, notamment intégré dans le noyau unix. De nombreuses applications fonctionnent encore sur C-ISAM, technologie très efficace et robuste.

### On passe à la mémoire partagée, aux processus démons et aux raw-devices

Entretemps, la compagnie RDS est devenue Informix Software, alors que le laboratoire développait Informix-Turbo. En reprenant la base de C-ISAM pour l'appliquer cette fois-ci sur des raw-devices Unix, le serveur changeait radicalement d'architecture en adoptant des processus serveur continus et spécialisés (daemons) et l'utilisation de la mémoire partagée. En séparant les tâches de lecture et l'écriture des données et en les remontant en mémoire partagée, elles deviennent accessibles centralement à tous les utilisateurs, avec pour effet de réduire très sensiblement les entrées-sorties disque.

### V4 : la séparation du moteur et de l'interface

En 1990, les produits alors "bundleisés" (base de données + interface), deviennent des produits indépendants. Nait alors la version 4.0, qui offre Informix-SE ("moteur" basé sur C-ISAM), Informix-OnLine (moteur basé sur RSAM issu de Turbo), Informix-SQL, Informix-4GL et Informix-ESQL/C.

### V5 : 2-phase commit, contraintes, triggers

En 1992 sort la version 5.0, introduisant le support de transactions distribuées (2-phase commit), les procédures stockées, les contraintes d'intégrité référentielles et de vérifications, et un peu plus tard les déclencheurs(triggers). Le SET EXPLAIN, commande SQL permettant d'analyser le plan d'exécution d'une requête SQL, a été implémenté vers cette époque.

### V6 : on refait le même produit, mais en architecture parallèle

Durant ce temps, le laboratoire, sous l'impulsion de Mike Saranga l'un des pères de DB2, prépare une architecture révolutionnaire basée sur la parallélisation des fonctions nucléaires d'accès à la base de données, nommée Dynamic Scalable Architecture(DSA). Tirant parti des machines multi-processeurs (SMP et MPP) et du multi-threading, les composantes des requêtes SQL (tri, groupage, agrégations, jointures et lecture disque) pourront désormais être traitées en parallèle, diminuant très conséquemment les temps de réponses. Cette nouvelle architecture, de par sa conception, permettait également à la base de données de monter très haut en puissance (escalabilité), de façon pratiquement linéaire en rajoutant des processeurs au serveur. Début 1994 sort la version 6.0, n'implémentant que la lecture disque parallèle, rapidement suivie de la version 7.0 qui parallélise toutes les fonctions citées plus-haut. DSA a également implémenté le disk-mirroring et la réplication de données de type primaire-secondaire destinée à la haute disponibilité (HDR).

### Informix Universal Server : de la vidéo en base de données relationnelle

En 1995, Informix Software acquiert Illustra, fondée par Michael Stonebraker (aussi le père de Ingres et Postgres), dans le but de fusionner cette base de données orientée objet avec l'architecture DSA, pour donner Informix Universal Server (V9) combinant la robustesse et la performance de la version 7 avec l'ouverture encore incomprise du monde objet. Il devenait alors possible de manipuler virtuellement n'importe quel type de données (XML, image, texte, vidéo, spatiale, géodétique, séries de temps, types "maison", etc.) dans le cadre d'une base de données relationnelle. Sont également sortis à cette époque Informix XPS (V8), ligne de produit très haut de gamme spécialisée dans les entrepôts de données (data warehouse), la première version de Informix Dynamic Server sur Linux, ainsi que la première version 64bit sur les machines Digital Equipment.

### L'ascension et le déclin, simultanément

À cette époque, Informix Dynamic Server était reconnu par les experts comme la perle des SGBD, que ce soit au niveau performance ou au niveau fonctionnalités. La réplication Entreprise (v7.3), de type asynchrone, permet de créer une architecture fonctionnelle distribuée sans avoir à coder de complexes fonctionnalités de synchronisation. Malheureusement, diverses erreurs de stratégie, combinées avec des pratiques fiscales 'hors-normes', ont conduit à l'affaiblissement de la compagnie, bien qu'Informix Dynamic Server garde paradoxalement sa supériorité technique face à la concurrence. La conséquence à moyen terme fut le rachat de la compagnie par IBM début 2001.

### Le rachat par IBM, phase 1

Il s'est ensuivi une longue traversée du désert, période à laquelle IBM s'est contentée de maintenir le produit acquis, apparemment sans grande conviction. Le projet de fusion Informix et DB2 n'aboutit pas et le produit perd beaucoup de visibilité sur le marché. Devant répondre à la satisfaction de la base installée, le laboratoire IBM/Informix a lancé de nouvelles versions (10.0 en 2005 : consolidation de la fusion des versions 7 et 9 plus quelques améliorations techniques), 11.10, (nom de code Cheetah) en 2007, 11.50 en 2008, 11.70 en 2010.

### IBM, phase 2

Toutefois depuis la sortie de la 10.50, de nouvelles fonctionnalités apparaissent, certaines provenant de DB2 qui reste une référence en la matière, d'autres provenant de la demande de la base installée qui n'a pas du tout envie d'essayer d'autres SGBD, et enfin l'inclusion de techniques d'entrepôt de données dans le moteur OLTP. Pas de grandes révolutions, mais une montée en puissance constante qui fait d'Informix Dynamic Server un produit extrêmement performant et robuste (plus de 500 jours de disponibilité continue chez une des plus grosses implémentations mondiales). Les laboratoires ont également développé le concept de réplication HDR (haute disponibilité) et Entreprise pour aboutir au cluster MACH11.
MACH11 est un système évolué de grid computing mettant en œuvre une technologie avancée de réplication composite, que ce soit pour partager des nœuds multiples (High Availability Data Replication et/ou Remote Secondary Standby) et/ou partager des disques sur le même grid (Shared Disk Secondary). Ce système permettant de combiner à volonté ER, HDR, RSS et SDS, a pour but de répartir la charge et garantir une véritable disponibilité 24x7x365.
Avec la version 12.10, le concept du Flexible Grid, qui permet d'effectuer de la Réplication Entreprise entre hardware/OS différents ainsi qu'entre versions Informix différentes (version >= 11.70 xC1), étend considérablement le concept déjà ancien de requêtes partagées (introduit en 1991 avec la version 4.0) pour permettre l'exécution de requêtes SQL partagées sans devoir savoir sur quel serveur se trouvent les données. Les GRID QUERIES, qui s'exécutent avec la syntaxe suivante :
permettent désormais de distribuer les très grosses tables entre de multiples serveurs, tout en ne considérant qu'une seule table lors des requêtes sur ces tables.
La technologie TimeSeries, basée sur un datablade Informix lancé en 1998, remporte au début des années 2010, un grand succès dans l'industrie des fournisseurs d'énergie et autres industries basées sur les séries de temps, à cause de ses performances sans précédent que ce soit au niveau de la rapidité d'exécution que des économies très importantes de consommation d'espace-disque.
À noter qu'il existe depuis la version 11.70 une licence gratuite de production : IBM Informix Innovator-C Edition.

### Le nouveau data warehouse

IBM a lancé en avril 2011 Informix Warehouse Accelerator, une composante de IBM Informix 11.70 XC2 Ultimate Edition, qui est un accélérateur de requêtes basé sur la conjonction de diverses techniques telles que la compression de données, le contenu dans la base de données totalement en mémoire, et le concept de base de données orientée colonne.
Visant clairement le secteur de l'entrepôt de données, ce module installé sur un gros serveur Linux 64bit, est sollicité par l'optimiseur de l'instance OLTP pour exécuter les requêtes complexes à extrêmement complexes, avec la totalité des données en mémoire RAM, organisées en colonnes et non pas en rangées. Les requêtes s'executent entre 30 et 900 fois plus vite.
Le gros avantage de cette solution par rapport aux solutions concurrentes, est l'absence pratiquement totale d'administration de cette "appliance", sachant qu'une fois que le ou les DataMart est défini et chargé initialement, il peut être nourri en flux continu (V12.10). Pas d'index à gérer, et surtout pas d'application à modifier : le client habituel se connectera comme il l'a toujours fait, et c'est l'optimiseur Informix qui fera le choix d'activer l'accélérateur ou non.
La version 12.10 permet désormais de traiter les données issues de TimeSeries sur l'Accélérateur.