DB2

**DB2** ir relāciju datu bāzu pārvaldības sistēmas saime, kura tiek veidota kompānijā IBM. Visbiežāk, atsaucoties uz DB2, tiek domāta relāciju datu bāzes pārvaldības sistēma DB2 Universal Database (DB2 UDB).

## Realizēšana
2000.gadā datu bāzu vadības sistēma DB2 darbojās uz šādām platformām:

* **DB2 for Linux, UNIX un Windows v9** priekš AIX, HP-UX, Linux, Solaris platformām un DB2 beta versija priekš Mac OS X platformas;
* **DB2 for z / OS v9** priekš z/OS un OS/390 platformām;
* **DB2 Server VSE for z / VM un z / VSE VM V7 ** platformām;
* **DB2 for i** priekš IBM i platformām.

1990.gadā tika arī ražotas DB2 servera versijas priekš OS/2, UnixWare, PTX.

DB2 datu bāzu vadības sistēmu klienti bez jau uzskaitītajām platformām tika ražotas arī priekš SINIX, IRIX, klasiskās Mac OS un MS-DOS, kā arī priekš mobilām Windows CE, Palm OS, Symbian OS platformām (**DB2 Everyplace** versija).

Sākot ar 2000.gadu papildus komerciāliem produktiem, IBM izplatīja arī bezmaksas **DB2 Express-C**.

**DB2 Express-C ierobežojumi**:

* Linux (x86, x86-64, POWER), Windows (x86, x86-64), Solaris (x86-64), Mac OS X (x86-64 beta) platformu atbalsts;
* viena DBVS kopija izmanto ne vairāk kā vienu divkodolu procesoru.
* viena DBVS kopija izmanto ne vairāk kā 2 GB RAM.

## Vēsture
DB2 izcelsmes aizsākums ir 1970. gads, kad Edgars Kods, kas strādāja IBM, izstrādāja teoriju par relāciju datubāzēm un 1970. gada jūnijā publicēja modeli datu manipulācijām. Lai realizētu šo modeli, viņš izstrādāja relāciju datu bāzu programmēšanas valodu, un nosauca to par *Alpha*. IBM izvēlējās turpmāko attīstību uzticēt programmētāju grupai, kura netika pakļauta E. Koda kontrolei. Neievērojot vairākus relāciju modeļa principus, tie realizēja projektu ar nosaukumu "strukturētā angļu valodas vaicājumu valoda" saīsinājumā SEQUEL. Taču tā kā akronīms SEQUEL jau uz to brīdi bija reģistrēts kā preču zīme, nosaukums tika saīsināts līdz SQL - "Strukturētā vaicājumu valoda"

No 1975-1982.gadam, prototips tika izstrādāts IBM kompānijā ar nosaukumu System Relational. SQL valoda pirmo reizi tika īsteno tieši IBM produktā - System R, bet šai sistēmai bija pētnieciska nozīme, bet komerciālu produktu, kurā būtu realizēta SQL pirmā izstrādāja kompānija Oracle 1979. gadā.

Savu nosaukumu DB2 ieguva 1982. gadā, kad tika izlaista pirmā komerciālā VM versija ar nosaukumu SQL/DS, un pēc tam MVS versija ar nosaukumu DB2.

## Īpatnības
Pie DB2 atšķirības iezīmēm ir pieskaitāms SQL dialekts, kas nosaka, ar dažiem izņēmumiem, tikai deklaratīvas valodu konstrukciju nozīmes, un spēcīgs daudzfāzu optimizētājs. Atšķirībā no citiem SQL dialektiem, SQL DB2 ir vāji attīstīta (ilgu laiku vispār nebija) saglabāto procedūru valoda, un tādējādi, viss tika atbalstīts uz vaicājumu deklaratīvo rakstību. Tai pašā laikā SQL DB2 skaitļošanas ziņā ir pilnīga, tas ir, ļauj deklaratīvā formā noteikt jebkuru ieejas datu un rezultātu atbilstību. Tas tiek panākts arī pateicoties tam, ka tiek izmantotas rekursīvas, un citas datu apstrādes manipulācijas.

Pateicoties IBM prioritātēm relācijas teoriju attīstībā un uzņēmuma pozīcijai datoru industrijā, DB2 SQL dialektam ir nozīmīga ietekme uz SQL ANSI/ISO standartu izveidošanu.

Saglabātās procedūras DB2 netiek plaši izmantotas, un tradicionāli saglabāto procedūru rakstīšanai izmanto parastas augsta līmeņa programmēšanas valodas (C, Java, PL/I, COBOL u.c.), tas ļauj programmētājam viegli noformēt vienu un to pašu kodu kā daļu no pielikuma, vai arī kā saglabāto procedūru, atkarībā no tā, vai to labāk izpildīt uz klienta vai servera. Pašlaik DB2 ir arī īstenots SQL paplašinājums saglabātajām procedūrām atbilstoši ANSI SQL / PSM standartam.

DB2 optimizētājs plaši izmanto datu izplatīšanas statistiku datu tabulās, tāpēc viens un tas pats vaicājums SQL valodā var tikt izmantots pilnīgi atšķirīgos izpildes plānos atkarībā no datu statiskajiem raksturlielumiem, kurus tas apstrādā.

Uzlabojot drošības sistēmu integrāciju datorā tika veiktas izmaiņas un DB2 nesatur savu lietotāju autentificēšanas sistēmu, bet tas integrējas ar operētājsistēmas vai specializētu serveru drošības rīkiem. DB2 ietvaros tiek veikta tikai lietotāju autorizācija, kurus sistēma ir autentificējusi.

DB2 ir vienīgā vispārējas nozīmes relāciju datu bāzes vadības sistēma, kuras realizācija notiek aparatūras programmatūras līmenī (IBM i sistēmās, kā arī IBM System z lieldatoru aparatūrā ir īstenoti līdzekļi DB2 atbalstam).

Mūsdienīgās DB2 versijas sniedz paplašinātu atbalstu XML datu izmantošanai, tostarp arī darbības ar atsevišķu XML dokumenta elementu. 

## Kļūdu apstrāde
Lieliska SQL servera DB2 īpašība ir iespēja apstrādāt kļūdas. Šim nolūkam tiek izmantota SQLCA (SQL Communications Area – SQL saziņas lauks) struktūra, kas pēc katras SQL izteiksmes izpildes atgriež kļūdu ziņojumus. 

### SQLCODE struktūras lauki un to nozīme
Galveno, bet ne vienmēr lietderīgo, kļūdu diagnostiku satur SQLCODE (datu tips - vesels skaitlis) lauks, SQLCA blokā. Tas var pieņemt šādas vērtības:

* 0 nozīmē veiksmīgu izpildi.
* Pozitīvs skaitlis nozīmē izpildīts ar vienu vai vairākiem brīdinājumiem. Piemēram, +100 nozīmē, ka netika atrastas kolonnas.
* Negatīvs skaitlis nozīmē, ka neizdevās veikt izpildi ar kļūdu. Piemēram, -911 nozīmē, ka ir beidzies gaidīšanas intervāls bloķēšanai un sākas atcelšana.

**SQLERRM** (datu tips - virkne no 71 rakstzīmēm). Satur teksta virkni, kas apraksta kļūdu, ja lauka **SQLCODE** vērtība ir mazāka par nulli.

**SQLERRD** (datu tips - masīvs ar 6 veseliem skaitļiem). Apraksta pēdējā SQL operatora izpildes rezultātu:

* 1 elements - Iekšējā informācija;
* 2 elements - satur servera radīto SERIAL tipa lauka vērtību INSERT operatoram, vai arī papildus kļūdas kods;
* 3 elementu - vienāds ar apstrādāto ierakstu skaitu;
* 4 elements – aptuvenā dotā operatora izpildes vērtība;
* 5 elements - SQL operatora teksta kļūdas kompensēšana;
* 6 elements - iekšējā informācija.