# Informix

Informix ist der Produktname für ein Datenbankmanagementsystem (DBMS). Die gleichlautende Datenbankfirma wurde 2001 von IBM übernommen, die Software wurde bis 2017 von IBM weiterentwickelt. Im April 2017 hat IBM die Entwicklung und den fachspezifischen Support an das indische Unternehmen HCL abgegeben und gleichzeitig eine 15-jährige Partnerschaft dazu vereinbart, in der auch IBM Informix weiter vertreibt.

## Geschichte

Das ehemalige Unternehmen Informix spielte bei der Verbreitung relationaler Datenbanken (RDBMS) unter Unix eine bedeutende Rolle – als stärkster Wettbewerber von Oracle.
Die zugehörige, ebenfalls auf UNIX und auf Terminalbetrieb ausgerichtete Integrierte Entwicklungsumgebung Informix 4GL war in den frühen 1990er-Jahren das vermutlich verbreitetste 4GL-Entwicklungswerkzeug überhaupt. In Deutschland wurden die Informix-Produkte zunächst durch den Distributor und Systemintegrator Garmhausen und Partner, dann durch die BYTEC GmbH sowie Siemens bekanntgemacht und etabliert.
Während der Datenbankserver Informix Dynamic Server (IDS) auch heute noch weit verbreitet ist, gelang es dem Unternehmen nicht, ein ähnlich erfolgreiches Nachfolgeprodukt für die inzwischen veraltete 4GL-Entwicklungsumgebung auf den Markt zu bringen.
Neben dem eigentlichen Informix-Datenbankserver hat auch das von Informix entwickelte Datenzugriffstool C-ISAM (eine C-Schnittstelle für ISAM-Dateien) eine weite Verbreitung (vor allem auf UNIX-Systemen) gefunden. Die neueren Versionen der Informix IDS können mittels des C-ISAM Datablades auf die Daten zugreifen, die im alten C-ISAM-Format abgelegt wurden.
Mit der Übernahme von Garmhausen und Partner wurde Mitte der 1990er-Jahre versucht, die Position des Unternehmens in Deutschland weiter zu stärken. In den Folgejahren jedoch verlor Informix, ausgelöst durch einen Bilanzierungsskandal und einige zweifelhafte Akquisitionen, an Börsenwert. Im Jahr 2000 kaufte Informix die Firma Ardent (ETL-Anbieter) dazu und benannte sich wenig später in Ascential um, um zu verdeutlichen, dass das Softwareportfolio nun aus mehr Produkten als nur dem Datenbankserver bestand. Nach einem Managementwechsel wurde die Datenbanksparte Informix inklusive Mitarbeiter an IBM für 1 Milliarde Dollar verkauft. Der Kauf wurde im Hintergrund von WALMART eingefädelt, da diese sehr stark auf Informix in ihren Märkten setzte und diese Investitionen als gefährdet einstufte. Mittlerweile wurde auch Ascential für eine weitere Milliarde Dollar von IBM übernommen.
Nach dem Aufkauf durch IBM gab es kurzzeitig den Plan, Informix mit DB2 zusammenzuführen, was eine gewisse Verunsicherung der Informix-Kunden verursachte. Dieser Plan wurde aber verworfen, und Informix und DB2 wurden parallel mit unterschiedlichem Fokus weiterentwickelt, wobei aber häufig neue Technologien in das jeweils andere System einflossen. Der Datenbankserver Informix Dynamic Server (IDS) wurde von IBM als strategisches Datenbanksystem bezeichnet und im Markt (vor allem für OLTP, Integrated Applications, embedded systems, spatial applications und SMB) etabliert.

## Neuerungen
### 15.0

(Quelle:)
* Speicherskalierbarkeit: Informix kann bis zu einem halben Yottabyte verwalten
* Gelockerte Speichergrenzen: es wurde die Speicher-Seiten vergrößert und die Limits erhöht
* Verbessertes grafisches Überwachungstool
* Verbesserungen beim Debuggen und Verwalten von SQL-Anweisungen
* Verbesserungen bei der Unterstützung nicht-englischer Sprachen

### 14.10.xc6

* InformixHQ
* TLS 1.3 hinzugefügt
    Informix unterstützt jetzt TLS Version 1.3. TLS Version 1.2 ist standardmäßig aktiviert.
* Auditing erweitert
    Unterstützung für Audit in Syslog (ASL) facility
* Verteilte Transaktionen erweitert
* PAM Authentifizierung erweitert

## Eigenschaften

Informix IDS ist verfügbar auf AIX, HP-UX, Linux (auch Linux für z Systems), Mac OS X, Solaris und Windows.

## Datenbanken
### Standard Engine

Bei dieser dateibasierenden Version werden alle Tabellen, inklusive Systemtabellen, in einem Unterverzeichnis pro Datenbank in je zwei Dateien gespeichert: eine Datei mit den Daten, eine mit den Indizes. Der Zugriff erfolgt direkt durch die Clients. Dieses System benötigt wenig Wartung, einzelne Tabellen können leicht einzeln gesichert und wieder zurückgesichert werden. Die Datenbanken können mit oder ohne Transaktionslogik angelegt werden.

### OnLine

Bei dieser Version werden die Daten auf einem oder mehreren Bereichen (Database-Spaces) mittels Manager verwaltet. Der Zugriff durch die Clients ist nur möglich, wenn die Datenbank online ist, d. h. ein Serverprozess läuft. Für die Sicherung usw. sind spezielle Programme notwendig.

#### Datentyp Serial

Eine Besonderheit ist der Datentyp SERIAL für eine automatisch fortlaufend vergebene Nummer. Je Tabelle kann ein Feld diesen INTEGER-Typ haben. Bei Anlage der Tabelle kann der Startwert angegeben werden. Bei einem Insert des Wertes 0 in dieses Feld wird die nächste Nummer vergeben. Ein Update ist nicht möglich, es kann jedoch beim Insert eine selbst bestimmte freie Nummer angegeben werden. Ist diese Nummer höher als der aktuelle letzte Wert, wird ab dieser weitergezählt. Das Rücksetzen auf einen niedrigeren Wert – z. B. nach Löschungen – ist nur durch Neuanlage der Tabelle möglich. Dieser Feldtyp ersetzt die bei anderen Datenbanken üblichen Sequenzen und ist nicht SQL-Standard.

## Werkzeuge
### Administration und Monitoring

Mit Version 14.10 wurde InformixHQ als grafisches Administrations- und Monitoringwerkzeug eingeführt. Es ist eine Java-Anwendung mit Jetty als Applikationsserver und setzt mindestens Informix Version 12.10 und Java 8 voraus.

### Informix SQL

* Wartung von Datenbanken
* SQL-Abfragedialog
* Abfragemasken (Generieren, Bearbeiten, Ausführen)
    Die Masken hatten ein Menü mit den Menüpunkten.
    Suchen – Query by Example
    Vor – Weiterblättern in den Suchergebnissen
    Zurück – Zurückblättern in den Suchergebnissen
    Neu – Anlage eines neuen Satzes
    Bearbeiten – Bearbeiten des aktuell angezeigten Satzes
    Löschen – Löschen des aktuell angezeigten Satzes
    Ende
* Reports
Durch den verschachtelten Aufruf von Masken und Reports konnten schon kleinere Programme realisiert werden.

### Informix 4GL

* Editor und Compiler für Programmfiles
    nur zeichenorientiert
    SQL embedded: SQL-Befehle werden einfach im Programm angegeben. z. B.:
    Definitionen: DATABASE, GLOBALS, DEFINE (Variablen, Konstanten, Records, Arrays)
    Zuweisungen: LET, INITIALZE
    Blöcke: MAIN, FUNCTION, REPORT
    Schleifen: FOR, FOREACH, WHILE
    Eingaben: PROMPT, INPUT
    Ausgabe: DISPLAY, PRINT, MESSAGE, ERROR
* Editor und Compiler für Maskenfiles
* Linker
Die Programmmodule wurden zuerst in CE-Code (C embedded, wo die SQL-Kommandos noch nicht aufgelöst sind), danach in C-Code übersetzt und dieser kompiliert. Daher bestand die Möglichkeit auch CE- und C-Source einzubinden, die Parameterübergabe erfolgte über Stacks. Die Objektdateien wurden dann mit Standard-, Informix- und eigenen Bibliotheken gebunden. Die Masken wurden in ein spezielles Format für die Programmverwendung umgewandelt. Für den Programmablauf benötigte man eine Runtime-Umgebung, die Datenbank, die Programmdateien und die Maskenfiles.
Von der Siemens AG gab es eine OEM-Version für Sinix auf Deutsch.