# Information Management System

In informatica con il termine Information Management System (IMS), ci si riferisce in generale ai sistemi di gestione dati e alle relative API dei sistemi gerarchici per l'organizzazione e l'accesso ai dati stessi. Più nello specifico, il sistema IMS per antonomasia è quello realizzato da IBM che consente vaste possibilità di elaborazione transazionale, progettato inizialmente con la Rockwell International e la Caterpillar nel 1966 per il programma Apollo.

## Descrizione

La sfida era costruire un repository efficiente per la documentazione tecnica ed amministrativa legata alla fornitura dei materiali del progetto Saturn V e del veicolo spaziale Apollo.
Più in generale, in informatica teorica, si vuole rappresentare con il termine IMS una combinazione di un database management system con un sistema di transaction processing.
È infatti possibile ricondurre a tre modelli-base quei sistemi gerarchici di database definibili come un IMS:
1. "Full function" database
* Direttamente derivati dalla logica dei database basati su DL/I, il linguaggio procedurale associato alle operazioni di gestione ed interrogazione del repository dei dati, a suo tempo sviluppato da IBM per il progetto Apollo; possono avere indici primari e secondari, accessibili usando chiamate direttamente attraverso la programmazione (API calls), in modo analogo alle chiamate SQL operabili su diffusi "motori database" come DB2, Oracle, MySQL.
* Dispongono dei principali metodi di accesso ai dati, come ad esempio in modalità gerarchica diretta (HDAM) ed attraverso indici dominanti (HIDAM); altri metodi diffusi sono quelli basati su indici semplici sequenziali (SHISAM), sequenziali non indicizzati (HSAM), sequenziali indicizzati (HISAM).
* Registrano i dati impiegando metodiche VSAM oppure OSAM
2. "Fast path" database
* Sistemi che si riferiscono ai modelli logici fast path di manipolazione dei dati, ovvero non basati su indici, come ad esempio i sistemi Data Entry DB (DEDB) oppure Main Storage DB (MSDB).
3. Database ad alta disponibilità (HALDB)
* Il sistema IBM IMS V7 introdusse per primo la definizione di HALDB (High Availability Large DataBase); sono una estensione dei database IMS full function dove viene garantito un più consistente livello di availability, rispetto a quei repository dati particolarmente grandi e complessi (Large DataBase).

### Considerazioni tecniche

I sistemi Fast path DEDB possono essere costruiti solo attraverso metodiche VSAM. DL/I diversamente consente di impiegare indifferentemente VSAM oppure OSAM, anche se con alcune restrizioni direttamente dipendenti dall'organizzazione della base dati. Benché già da alcuni anni la dimensione massima di un VSAM dataset è stata portata al valore teorico di 128 TB, in generale i sistemi IMS, ed in particolare IBM IMS, "limitano" tuttora le dimensioni di un VSAM dataset a 4 GB (e con OSAM il limite è pari a 8 GB).
La limitazione consiste in realtà nella necessità, per gli utenti di un sistema IMS, di impiegare dataset multipli quando operano su basi dati molto grandi. In breve VSAM ed OSAM sono i metodi impiegati per l'accesso al repository, dove il sistema IMS affida le viste logiche delle strutture direttamente all'organizzazione stessa della struttura dei dati, in funzione della loro organizzazione (HDAM, HIDAM, HISAM, ecc.).
Più in generale una collezione di database o di semplici dataset gestiti attraverso un sistema IMS, vengono definiti come IMS DB. È importante ricordare che questo tipo di sistemi si sono sviluppati per decenni e sono stati integrati in sistemi di gestione dei dati per un'infinità di applicazioni, le più disparate. Per sua natura infatti un IMS è di fatto anche un robusto transaction manager. Nell'ambito delle evoluzioni tecnologiche associate in particolare al sistema IBM IMS, vi sono state delle interessanti applicazioni integrando questa soluzione in ambito web-application (e.g. integrazione con IBM WebSphere Application Server).
Un sistema IMS può essere considerato un'alternativa ad un semplice motore DB in un ambito applicativo dove è necessario manipolare grande quantità di dati e dove la performance diventi critica, tenendo conto del fatto, tuttavia, che il costo associato ai tempi di sviluppo (programmazione) e di design (progettazione) è sensibilmente più alto di quello sostenibile con un sistema database classico (DBMS).