IMS er en forkortelse for Information Management System og er en database (IMS/DB) og et teleprocessingsystem (IMS/DC) fra IBM. IMS er først og fremmest kendt for at være en hierarkisk database. IMS er et af de ældste databasesystemer.  Historie IMS blev først markedsført i 1969. I følge oplysninger på et IBM-kursus, blev det oprindelig udviklet af IBM til at holde rede på komponenterne til Apollo-programmet.  Karakteristika IMS-programmer kan køres interaktivt med kommunikation til en terminal, konverserende batch (batch message program, BMP) eller i ren batch.  Struktur En IMS-database består af et antal databaser, der hver især repræsenterer en træ-struktur. En database har en række rodsegmenter bundet sammen med pointerkæder. Under hvert rodsegment kan anbringes et antal undersegmenter og under disse igen undersegmenter. Et segment svarer omtrent til en række i andre databaser. Opdelingen af segmentet i felter, administreres af applikationsprogrammerne, der typisk baserer en record-struktur oven på segmentet. Enkelte felter kan danne basis for et indeks for denne segmenttype. Når man skal have fat i et bestemt segment, skal man angive nøglen til rodsegmentet, alternativt positionere sig frem til dette ved et antal Get Next-oprationer, angive ruten ned gennem træet som enten nøgler til undersegmenter eller positionering relativt til allerede læste segmenter (IMS husker positionen for de sidste læste segmenter). Man kan læse fremad på et niveau (forward pointer) og i nogle tilfælde bagud (hvis der er anvendt en backward pointer). Data til eller fra IMS anbringes i en buffer, segmenterne lige efter hinanden efter deres placering i hierarkiet. Man kan begrænse en bestemt brugers adgang til kun at have adgang til udvalgte segmenter i en træstruktur. Adgangen til en database specificeres i en PSB, Program Specification Block.  Logisk DB En logisk database er en database, der i virkeligheden er et logisk syn på segmenter i en anden database, med brug af andre indices og pointere. En logisk dtabase, der ikke er ligetil at opbygge, giver bedre muligheder for at tilgå data på flere måder.  Fordele og ulemper En IMS-database er meget hurtig at tilgå. Den kan derfor fungere fint på selv små mainframes. Til gengæld stiller den store krav til programmørerne såvel som databaseadministratorerne. Databasen kan optimeres til en bestemt anvendelse, men den kan vise sig noget kompliceret at anvende på en anden måde. Ændres kravene til databasen, kan det være nødvendigt helt at omkonstruere den.  DL/1 Når man fra et program skal kommunikere med en IMS-database, bruger man et "sprog", der kaldes DL/1, Data Language 1. Kommunikationen afviger meget fra den, man kender fra relationelle databasers SQL-sprog, også på grund af databasens anderledes opbygning.  SSA Man angiver hvilke segmenter, der skal tilgås (man kan godt læse et segment uden at få det returneret, hvis man kun skal bruge det for at finde vej i databasen) ved at udfylde et Segment Search Argument eller SSA. SSA'en indeholder segmentnavne, evt. nøgler og relationelle operatorer. Desuden angives en function code for hvert segment, der angiver, hvordan der skal læses, om der skal sættes i hold, slettes eller opdateres. Command codes kan f.eks. angive, at et bestemt segment skal fastholdes som "parent" ved de følgende operationer.  Status code IMS returnerer en statuskode, der angiver, hvordan databaseoperatioen lykkedes. Denne kode består af to bogstaver. Statuskoden og supplerende oplysninger, som f.eks. hvor dybt ned i træstrukturen, der blev fundet data, angives i en PCB, Program Communication Block.