# Information Management System

IMS (pour Information Management System) a débuté comme une base de données hiérarchique créée par IBM en 1966 pour le compte de Rockwell et le programme Apollo. Il fut utilisé pour gérer les nomenclatures pour le programme Saturn V.
IMS est toujours en cours de fonctionnement 50 ans après son lancement et continue à donner lieu à des développements sous le système d'exploitation MVS d'IBM (OS/390, z/OS).

## Principes de base

Il y a trois principes de base pour une base de données hiérarchique :
* Full Function
** 'Full Function' est un langage qui ressemble beaucoup au Data Language/1 (en) développé pour le programme Apollo. Les bases de données 'Full Function' peuvent posséder des index primaires et secondaires et sont accessibles via des requêtes DL/I.
** Ces bases de données disposent d'une grande variété de méthodes d'accès, bien que les 'Hierachical Direct (HDAM)' et les 'Hierarchical Indexed Direct (HIDAM)' soient privilégiées.
** Les autres possibilités sont les 'Simple Hierarchical Indexed Sequential (SHISAM)', les 'Hierarchical Sequential (HSAM)' et les 'Hierarchical Indexed Sequential (HISAM)'.
** Dans ce type de base de données, les données sont stockées en utilisant la méthode VSAM (une méthode d'accès native du système MVS) ou la méthode 'OSAM' (Overflow Sequential, une méthode spécifique qui optimise les accès pour IMS). La méthode 'OSAM' possède l'avantage de disposer d'une gestion spécialement conçue pour elle dans les bases IMS (OSAM Sequential Buffering) qui augmente sa performance.
* La base de données IMS dispose aussi d'accès rapides - 'Data Entry Databases (DEDB) et 'Main Storage Databases (MSDB). Ces deux sortes de bases de données ne permettent pas n'importe quelle indexation, mais sont conçues pour de très hauts débits d'information. Sur les versions récentes d'IMS, la méthode 'MSDB' peut être remplacée par du stockage virtuel (VSO - Virtual Storage Option).
* Avec la version 7.1 d'IMS, une nouvelle extension 'haute disponibilité' a été introduite (HALDB - High Availability Large Database). Elle permet une meilleure disponibilité des données, une meilleure gestion de très grand volumes de données (et même une réorganisation en-ligne avec la version 9).

## Gestionnaire de transactions

IMS est également un gestionnaire de transactions. Le gestionnaire interagit avec un utilisateur final (connecté via VTAM ou TCP/IP et, de la même manière qu'une interface web utilisant des scripts CGI, fournit une interface permettant d'effectuer des requêtes ou de mettre à jour des bases de données IMS ou DB2).
IMS utilise le principe des files de requêtes. Une transaction entrante (depuis un terminal) est reçue par le contrôleur IMS, puis stockée dans la file de messages (message queue). Lorsqu'une transaction a été mise dans la file, IMS fait appel à son ordonnanceur pour démarrer le programme de l'utilisateur dans une zone réservée (région). Le message est alors traité et retiré de la file d'attente, les données sont stockées ou mises à jour et une réponse est éventuellement insérée dans la file d'attente d'IMS pour être expédiée à l'utilisateur.
IMS est donc fondamentalement asynchrone (traitement de messages d'origines diverses), alors que son concurrent CICS est construit sur un modèle synchrone (conversation avec un terminal).
Si vous avez déjà retiré de l'argent d'un Distributeur automatique de billets (DAB en français, ATM en anglais), il y a de fortes chances que votre requête ait été traitée par un système de type IMS.