# IBM DB2

DB2 è un relational database management system (RDBMS) della IBM: scritto in C, C++ e Assembly, è stato riscritto per ogni piattaforma, pur con una base comune. La sua prima versione risale al 1983.
Nel maggio 2016, DB2 è uno dei RDBMS più diffusi secondo le classifiche ufficiali basate sul ranking per popolarità. I primi in ordine sono Oracle, MySQL (prodotto dalla stessa Oracle),Microsoft SQL Server e PostgreSQL.

## Descrizione

In origine, DB2 era nato come DBMS per i mainframe, ma poi si è diffuso su qualsiasi tipo di server, sia su PDA che su altri dispositivi portatili; esistono versioni per sistemi operativi GNU/Linux, Unix (AIX, HP-UX, Solaris) e Microsoft Windows. I suoi precursori sono DL/1 e IMS/DB, sempre della IBM.
Quando, nel 1997, Illustra fu acquisita da Informix (che sarebbe stata a sua volta acquisita da IBM nel 2001) e quest'ultima introdusse Universal Server nel proprio database, facendone un DBMS relazionale a oggetti, sia Oracle sia IBM dovettero introdurre il paradigma degli oggetti nei propri prodotti.
A partire dalla versione 9.1, DB2 per Windows, Linux, e Unix, include la tecnologia "pureXML", che fornisce la possibilità di salvare informazioni in campi di tipo XML. DB2 risulta, quindi, il primo database ibrido, con modello relazionale e XML. Questo favorisce la gestione di applicazioni che interagiscono con documenti XML, permettendo, ad esempio, l'interrogazione diretta del database tramite XQuery.

### Edizioni

* DB2 Express: è il livello base di RDBMS, l'ideale per il piccolo medio mercato d'affari.
* DB2 Express-C: è la versione gratuita dell'IBM, l'ideale per piccole aziende, compagnie multi-branch, sviluppatori e partner di affari.
* DB2 Workgroup Server Edition: è il software ideale per le piccole e medie aziende.
* DB2 Enterprise Server Edition: comprende moltissime librerie capaci di gestire i carichi di lavoro più esigenti.

#### Versione gratuita

Dal 30 gennaio 2006 IBM distribuisce una versione gratuita del proprio database server, DB2 Express-C, disponibile per Linux, Mac OS, Windows e Unix per architetture hardware di processori a 32 e 64 bit. DB2 Express-C ha le stesse funzioni standard delle versioni commerciali, ma limita l'utilizzo dell'hardware effettivamente installato sul server dove risiede. Attualmente (10.5) è limitato ad una dimensione massima del database di 15 TeraByte, un totale di non più di 2 core di CPU, e fino a 16 GB di memoria RAM indipendentemente dall'hardware presente. È anche possibile acquistare una licenza in forma di abbonamento annuale per ottenere il supporto tecnico fornito direttamente da IBM. Aggiungendo licenze, diventa permesso utilizzare alcune funzioni aggiuntive, come la replica SQL e HADR (High Availability and Disaster Recovery), un sistema di disaster recovery che permette di passare automaticamente ad un server di failover nel caso in cui il server principale diventi inutilizzabile. Possiede inoltre funzionalità IN-MEMORY, con la possibilità di creare oggetti organizzati in colonne, supporto Json e funzionalità avanzate di "federazione", cioè la possibilità di integrare e presentare oggetti di altri prodotti quali ad esempio tabelle/viste Oracle, Postgresql, MySQL, e dalla versione 11.1 anche oggetti HDFS Apache Hive e Cloudera.

### Strumenti di supporto

DB2 può essere amministrato sia da riga di comando sia dal "Control Center", un'applicazione GUI scritta in Java. Dal 2016 IBM ha aggiunto a questi prodotti un nuovo strumento gratuito di amministrazione e monitoraggio chiamato Data Server Manager.
DB2 può essere usato all'interno di software applicativo accedendo a un'API disponibile per numerosi linguaggi di programmazione, tra cui: Java, Python, Ruby, Perl, PHP, C, C++, COBOL, Fortran, e altri linguaggi che supportano il Framework .NET.
IBM fornisce strumenti per l'integrazione e lo sviluppo con l'IDE Visual Studio ed Eclipse.