DB2(v ruštine sa vyslovuje „dibi dva“, bežný je aj pauzovací papier z angličtiny „dibi tu“) - rodina softvérové ​​produkty v informačnom manažmente v IBM.

Najčastejšie, keď sa hovorí o DB2, majú na mysli systém správy relačných databáz DB2 Universal Database (DB2 UDB), ktorý vyvinula a vydala spoločnosť IBM.

Pravopis "DB/2" sa niekedy vyskytuje, ale tento pravopis je nesprávny: v zápise IBM číslo v menovateli zlomku znamená platformu a "/2" znamená produkt pre operačný systém OS/2 (resp. séria počítačov PS/2). Napríklad verzia DB2 pre OS/2 bola označená ako "DB2/2".

Implementácie

DB2 DBMS je momentálne k dispozícii na nasledujúcich platformách:

  • DB2 pre Linux, UNIX a Windows v9 pre platformy AIX, HP-UX, Linux, Solaris, Windows a beta pre platformu Mac OS X
  • DB2 pre z/OS v9 pre platformy z/OS a OS/390
  • Server DB2 pre VSE a VM v7 pre platformy z/VM a z/VSE
  • DB2 pre i pre platformu IBM i (integrovaná do systému na úrovni hardvéru a softvéru)

V minulosti boli vydané verzie databázového servera DB2 pre OS/2, UnixWare, PTX.

DB2 DBMS klienti okrem uvedených platforiem vychádzajú alebo boli vydané v rôznych verziách aj pre SINIX, IRIX, klasický Mac OS a pre MS-DOS, ako aj v r. mobilná verzia DB2 Everyplace pre Windows CE, Palm OS, Symbian OS, Neutrino a virtuálny prístroj java.

V súčasnosti IBM okrem komerčných produktov rodiny distribuuje aj bezplatnú distribúciu DB2 Express-C pre platformy Linux (x86, x86-64, POWER), Windows (x86, x86-64), Solaris (x86-64), Mac OS X (x86-64 beta). Bezplatná verzia má obmedzenia na použitie maximálne jedného dvojjadrového procesora a 2 GB na prevádzku DBMS Náhodný vstup do pamäťe(celkový počet procesorov a pamäte v systéme môže byť ľubovoľný, ale zdroje nad špecifikované limity nebude DBMS využívať).

Príbeh

DB2 má dlhú históriu a niektorí ho považujú za prvý DBMS používajúci SQL.

V rokoch 1975 až 1982 bol prototyp DB2 vyvinutý v IBM pod názvom System Relational alebo System R. Jazyk SQL bol prvýkrát implementovaný v IBM System R, ale tento systém mal výskumný charakter a komerčný produkt, vrátane SQL, bol prvýkrát vydaný spoločnosťou Oracle v roku 1979.

DB2 dostal svoje meno v roku 1982 s prvým komerčným vydaním pre SQL/DS a potom pre MVS s názvom DB2. Dlho sa spolu s „DB2“ používal variant „Databáza 2“, ktorý je tiež obchodnou značkou IBM. Zrejme to mala byť druhá vlajková loď IBM DBMS po starom hierarchickom IMS DBMS.

Vývoj DB2 siaha až do začiatku 70. rokov 20. storočia, keď doktor E. F. Codd, ktorý pracoval pre IBM, vyvinul teóriu relačných databáz a v júni 1970 zverejnil model manipulácie s údajmi. Na implementáciu tohto modelu vyvinul jazyk relačnej databázy a nazval ho Alpha. IBM sa rozhodla zadať ďalší vývoj skupine programátorov mimo kontroly Dr. Codda. Porušili niektoré princípy relačného modelu a implementovali ho ako „štruktúrovaný anglický jazykžiadosti“, skrátene SEQUEL. Keďže SEQUEL už bola registrovaná ochranná známka, názov sa skrátil na SQL – „Structured Query Language“ a zostal tak dodnes.

Historicky sa teda DB2 vyvinul z DB2 for MVS (ktorého DB2 for z/OS je potomkom) a jeho sestry SQL/DS for VM (ktorého je potomkom DB2 Server for VSE & VM). Neskôr ďalší tím vývojárov v IBM implementoval server OS/2 EE Database Manager, ktorý sa neskôr vyvinul na DB2 v2 pre OS/2, AIX a potom Windows a potom na DB2 UDB (jeho potomkom je DB2 pre Linux, UNIX a Windows ). Ďalší tím dokončil integráciu architektúry DB2 s embedded AS/400 databázou (potomok - DB2 for i). IBM postupne smeruje k integrácii všetkých týchto odvetví.

Zvláštnosti

Medzi charakteristické znaky DB2 patrí dialekt jazyk SQL, ktorý až na vzácne výnimky určuje čisto deklaratívny význam jazykových konštruktov, a výkonný viacfázový optimalizátor, ktorý na základe týchto deklaratívnych konštrukcií vytvára efektívny plán vykonávania dotazov. Na rozdiel od iných dialektov SQL nemá dialekt DB2 SQL prakticky žiadne rady pre optimalizátor, je slabo vyvinutý (a na dlhú dobu vo všeobecnosti chýbal) jazyk uložených procedúr, a preto je všetko zamerané na zachovanie deklaratívneho štýlu písania dotazov. Jazyk DB2 SQL je zároveň výpočtovo kompletný, to znamená, že vám potenciálne umožňuje definovať akékoľvek vypočítateľné korešpondencie medzi zdrojovými údajmi a výsledkom v deklaratívnej forme. To sa okrem iného dosahuje použitím tabuľkových výrazov, rekurzie a iných pokročilých mechanizmov manipulácie s údajmi.

Vzhľadom na zameranie IBM na relačný vývoj a postavenie firmy v počítačovom priemysle má dialekt DB2 SQL významný vplyv na štandardy ANSI/ISO SQL.

Uložené procedúry sa v DB2 veľmi nepoužívajú a na písanie uložených procedúr sa tradične používajú bežné programovacie jazyky na vysokej úrovni (C, Java, PL/I, Cobol atď.), čo umožňuje programátorovi jednoducho formátovať rovnaký kód buď ako súčasť aplikácie, alebo ako uložená procedúra, v závislosti od toho, či je vhodnejšie vykonať ju na klientovi alebo na serveri. DB2 v súčasnosti implementuje aj procedurálne rozšírenie SQL pre uložené procedúry v súlade so štandardom ANSI SQL/PSM.

Optimalizátor DB2 vo veľkej miere využíva štatistiky distribúcie tabuliek (ak proces zberu údajov vykonával DBA), takže ten istý dotaz SQL možno preložiť do úplne odlišných plánov vykonávania v závislosti od štatistických charakteristík údajov, ktoré spracováva.

Keďže sa DB2 historicky vyvinul z viacužívateľských systémov na sálových počítačoch, veľká pozornosť v architektúre DB2 sa venuje otázkam bezpečnosti a rozdeleniu úloh špecialistov, ktorí spravujú DB2. Najmä na rozdiel od mnohých iných DBMS má DB2 samostatné roly pre správcu DBMS (zodpovedného za konfiguráciu softvérové ​​komponenty DB2 a ich optimálne prevedenie v počítačový systém) a administrátor databázy (zodpovedný za správu údajov v konkrétnej databáze).

V prípade potreby použitie statického SQL v programoch a koncepcia balíkov umožňuje, na rozdiel od väčšiny iných DBMS, implementáciu takéhoto bezpečnostného modelu, keď práva na vykonávanie určitých operácií možno udeliť aplikačným programom v prípade absencie takýchto práv. pre používateľov pracujúcich s týmito programami. V tomto prípade to umožňuje zaručiť, že používateľ nemôže pracovať s databázou obísť aplikačný program, ak má používateľ iba práva na spustenie programu, ale nie na samostatnú manipuláciu s údajmi.

V rámci koncepcie zvyšovania úrovne integrácie bezpečnostných nástrojov do počítačového systému nemá DB2 vlastné prostriedky na autentifikáciu používateľov, integráciu s nástrojmi operačného systému alebo špecializovanými bezpečnostnými servermi. V rámci DB2 sú autorizovaní iba používatelia autentifikovaní systémom.

DB2 je jediným všeobecným relačným DBMS, ktorý má implementácie na úrovni hardvéru/softvéru (systém IBM i; podpora DB2 je implementovaná aj na hardvéri mainframe IBM System z).

Moderné verzie DB2 poskytujú rozšírenú podporu pre používanie údajov XML vrátane operácií s jednotlivými prvkami dokumentov XML.

Chyba pri spracovaní

Užitočnou vlastnosťou DB2 SQL Server je jeho schopnosť spracovávať chyby. Na tento účel sa používa štruktúra SQLCA. Komunikačná oblasť SQL- oblasť prepojenia SQL), ktorá vracia informácie o chybe do aplikačného programu po každom vykonaní príkazu SQL.

Polia štruktúry SQLCODE a ich hodnoty

Hlavná, ale nie vždy užitočná diagnostika chýb je obsiahnutá v teréne SQLCODE(údajový typ - celé číslo) vnútri bloku SQLCA. Môže nadobudnúť nasledujúce hodnoty:

  • 0 znamená úspech.
  • Kladné číslo znamená úspech s jedným alebo viacerými upozorneniami. Napríklad +100 znamená, že sa nenašli žiadne stĺpce.
  • Záporné číslo znamená zlyhanie s chybou. Napríklad −911 znamená zistený interval čakania na uzamknutie (alebo uviaznutie), ktorý spúšťa postupné vrátenie.

SQLERRM(údajový typ - reťazec 71 znakov). Obsahuje textový reťazec s popisom chyby, ak je pole SQLCODE menšie ako nula.

SQLERRD(údajový typ - pole, 6 celých čísel). Opisuje výsledok vykonania posledného príkazu SQL:

  • 1 prvok - interné informácie;
  • 2. prvok - obsahuje hodnotu poľa typu SERIAL vygenerovanú serverom pre príkaz INSERT alebo dodatočný kód chyby;
  • 3. prvok - rovný počtu spracovaných záznamov;
  • 4. prvok - približné náklady na vykonanie tohto operátora;
  • 5. prvok - offset chyby v textovom zázname SQL príkazu;
  • 6. element – ​​interná informácia.

Poznámky

Odkazy

  • Stránka programu na webovej lokalite IBM
  • DB2 na developerWorks - články a školenia o DB2
  • PlanetDB2 - Blogy DB2

Literatúra

  • Dátum K. DB2 Relational DBMS Guide. - M.: Financie a štatistika, 1988. - 320 s. - ISBN 5-279-00063-9
  • Zikopoulos P.K., Baklarz J., deRus D., Mělník R.B. DB2 Verzia 8: Oficiálna príručka = DB2 Verzia 8: Oficiálna príručka. - M.: KUDITS-OBRAZ, 2004. - 400 s. - ISBN 5-9579-0031-1
  • Smirnov S.N. Práca s IBM DB2: Tutorial. - M.: Helios, 2001. - 304 s. - ISBN 5-85438-007-2 (odporúčané univerzitami UMO v regióne informačná bezpečnosť ako učebná pomôcka v odboroch "Integrovaná informačná bezpečnosť automatizovaných systémov" a "Počítačová bezpečnosť")
  • Susan Visser, Bill Wong. Naučte sa DB2 Universal Database za 21 dní = Sams Naučte sa DB2 Universal Database za 21 dní. - 2. vyd. - M.: Williams, 2004. - 528 s. - ISBN 0-672-32582-9
  • Hook J., Harbus R., Snow D. Univerzálny sprievodca DB2 pre Windows NT®. - New Jersey: Prentice Hall PTR, 1999. - S. 504. - ISBN 0-13-099723-4

Nadácia Wikimedia. 2010.

Pozrite si, čo je "IBM DB2" v iných slovníkoch:

    IBM DB2- Vývojári IBM Prvé vydanie 1983 (1983) ... Wikipedia

    IBM DB2- DB2 je kommerzielles relationales Datenbank Management System (RDBMS) der Firmou IBM, dessen Ursprünge auf das System R and grundlagen von E. F. Codd z IBM Research aus dem Jahr 1970 zurückgeht. Inhaltsverzeichnis 1 Eigenschaften 1.1… … Deutsch Wikipedia

    IBM DB2- Verzia Développeur IBM Dernière ... Wikipedia en Français

    IBM DB2 Commonstore- Softvér DB2 CommonStore Archiving od IBM na správu e-mailových správ alebo údajov SAP ERP. Časť portfólia IBM Information Management, ktoré je postavené na databázovej platforme DB2. DB2 CommonStore je jedným z niekoľkých produktov, ktoré sú… … Wikipedia

V práci som sa nejaký čas musel zaoberať IBM DB2 DBMS. Pretože Keďže systém je komerčný, na internete nie je veľa informácií v ruštine, preto som sa rozhodol popísať niektoré funkcie tohto DBMS.

Miesto vstupu

Začnime so vstupným bodom v DBMS. V SQL SERVER koncový bod je inštancia, v ktorej samozrejme môžu existovať samostatné databázy, ale konfiguračný a bezpečnostný model je rovnaký pre celú inštanciu. V DB2 vyzerá vstupný bod takto – inštancia (ktorá zodpovedá konkrétnemu portu) – databáza. Zároveň existuje konfigurácia pre celú inštanciu a pre samostatnú databázu.

Konfiguráciu inštancie môžete zobraziť buď pomocou príkazu db2:

Konfigurácia správcu databázy

Typ uzla = Enterprise Server Edition s lokálnymi a vzdialenými klientmi

Úroveň vydania konfigurácie správcu databázy = 0x0b00

Rýchlosť CPU (milisekundy/inštrukcia) (CPUSPEED) = 2,912790e-07
Šírka komunikačného pásma (MB/s) (COMM_BANDWIDTH) = 1,000000e+02

Maximálny počet súčasne aktívnych databáz (NUMDB) = 8
Podpora federatívneho databázového systému (FEDERATED) = ÁNO
Názov monitora procesora transakcií (TP_MON_NAME) =

Predvolený účet na vrátenie prostriedkov (DFT_ACCOUNT_STR) =

Inštalačná cesta Java Development Kit (JDK_PATH) = /home/db2inst1/sqllib/java/jdk32

Úroveň zachytenia diagnostickej chyby (DIAGLEVEL) = 3
Úroveň upozornení (NOTIFYLEVEL) = 3
Cesta k adresáru diagnostických údajov (DIAGPATH) = /home/db2inst1/sqllib/db2dump

Predvolené prepínače monitora databázy
Oblasť vyrovnávacej pamäte (DFT_MON_BUFPOOL) = VYPNUTÉ

Kde budú špecifikované parametre, ich význam a dekódovanie. Je možná aj skrátená verzia:

získať dbm cfg

Alebo s dotazom:

Vyberte názov, hodnotu z sysibmadm.dbmcfg

Od dôležité parametre môžete si všimnúť:

  • typ overenia (AUTHENTICATION)
  • predvolená cesta na vytváranie nových databáz (DFTDBPATH)
  • zisťovanie sieťového servera (OBJAVOVAŤ)
Nastavenia pre konkrétnu databázu môžete zobraziť takto:

pripojiť k vzorke(ukážka - názov databázy)

získať konfiguráciu správcu databázy

Alebo s približne rovnakou požiadavkou ako predtým:

vyberte názov, hodnotu zo sysibmadm.dbcfg

Overenie

Veľký rozdiel medzi DB2 a inými DBMS je v autentifikačnom modeli. Neexistujú žiadni interní používatelia ako v SQL Server alebo MySQL. Celá autentifikácia sa vykonáva pomocou externých prostriedkov k DBMS (dynamicky načítané pluginy) - pomocou operačného systému alebo externých pluginov (Kerberos, GSS API). Typ autentifikácie sa nastavuje v parametri AUTHENTICATION konfigurácie databázového manažéra. Štandardne je nastavená hodnota SERVER - užívateľské meno a heslo sa prenášajú ako čistý text a správnosť tejto dvojice sa kontroluje pomocou operačného systému. Ak je používateľské meno a heslo správne, skontroluje sa privilégium CONNECT pre používateľa alebo skupiny, ktorých je členom (vrátane špeciálnej skupiny PUBLIC, ktorá zahŕňa všetkých oprávnených používateľov). Tieto privilégiá si môžete pozrieť v tabuľke SYSCAT.DBAUTH:

vyberte GRANTEE zo SYSCAT.DBAUTH, kde CONNECTAUTH = "Y"

Veľkou chybou konfigurácie je zahrnutie typu autentifikácie KLIENT. V tomto prípade DB2 dôveruje autentifikácii pre pripájajúceho sa klienta, a ak má PUBLIC privilégium CONNECT, potom sa môže k databáze pripojiť každý užívateľ a mať prístup ku všetkým údajom, ktoré má PUBLIC. Používateľské meno je prevzaté z operačného systému. To znamená, že ak sa pripojíme cez Data Studio ako používateľ Administrator, potom všetky privilégiá, ktoré tohto používateľa. A v tomto prípade nie je rozdiel, z ktorého počítača bol prístup uskutočnený. Tento typ autentifikácia sa odporúča povoliť len vtedy, keď medzi serverom a klientom existuje zabezpečený kanál a ostatní klienti sa nebudú môcť pripojiť k DBMS.

Autorizácia

Privilégiá na úrovni inštancií sú zapísané v konfigurácii databázového manažéra. Ide o nasledujúce privilégiá:

  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • SYSMON
Tieto privilégiá sa nastavujú zadaním skupiny, do ktorej vstúpi používateľ. V dbmcfg sú to voľby SYSADM_GROUP , SYSCTRL_GROUP , SYSMAINT_GROUP a SYSMON_GROUP.

Ďalej sú tu privilégiá špecifické pre databázu. Sú to privilégiá ako prístup k databáze (CONNECTAUTH), vytváranie tabuliek (CREATETABAUTH), vytváranie rutín (EXTERNALROUTINEAUTH) atď. Tieto privilégiá je možné zobraziť v zobrazení SYSCAT.DBAUTH

A nakoniec prístupové privilégiá ku konkrétnym údajom – tabuľkám, podprogramom atď. Všetko je tu dosť triviálne, ale aj s niektorými zvláštnosťami.

Privilégiá na prístup k tabuľke je možné zobraziť v zobrazení SYSCAT.TABAUTH. Typ udeleného privilégia je uložený v samostatných stĺpcoch v závislosti od samotného privilégia (SELECTAUTH, DELETEAUTH atď.). Pri udeľovaní privilégia pomocou príkazu GRANT pre privilégiá REFERENCES a UPDATE môžete zadať aj názvy stĺpcov, na ktoré sa dané privilégiá rozšíria. V tomto prípade si informácie o tom môžete pozrieť v zobrazení SYSCAT.COLAUTH

Oprávnenia pre rutiny (funkcie, procedúry a metódy) si môžete pozrieť v SYSCAT.ROUTINEAUTH. Nie všetko je tu triviálne, v závislosti od polí SPECIFICNAME a TYPENAME možno udeliť privilégiá všetkým podprogramom danej schémy.

Ak sa čitateľom článok páči, som pripravený hovoriť o ochrane údajov v DB2 pomocou Label-Based Access Control

Prehľad základných pojmov a všeobecný popis Databázové architektúry IBM DB2 pre platformy Linux, Unix a Windows

Obsahová séria:

Tento obsah je súčasťou # série # článkov: Prehľad DB2 LUW

http://www.?q=%D0%9E%D0%B1%D0%B7%D0%BE%D1%80+DB2+LUW&co=ru&lo=ru&ibm-submit.x=11&ibm-submit.y=13&sn= mh&lang=ru&cc=RU&en=utf&hpp=

Zostaňte naladení na nové články v tejto sérii.

Suroviny a kontaktné informácie

Osobitné poďakovanie patrí Markovi Barinshteinovi za to, že si našiel čas na korektúru materiálu článkov, venoval pozornosť detailom a hodnotným komentárom.

Hlavnou časťou materiálu článkov je voľný výklad oficiálna dokumentácia db2. Prezentované informácie boli prepracované a preformulované tak, aby boli stručné a zároveň čo najjasnejšie. Odkazy na zdroje použité vo všetkých prípadoch sú uvedené v texte článkov a v časti „Zdroje“.

V rámci série článkov sa plánuje preskúmať tieto problémy:

  1. (článok, ktorý práve čítate)
  2. (inštalácia, konfigurácia, diagnostika, zálohovanie a zotavenie)
  3. pokročilé administratívne postupy (prenos informácií, optimalizácia výkonu, riadenie priorít realizácie);
  4. nástroje na budovanie analytických dátových skladov;
  5. In-memory analytické technológie - DB2 BLU;
  6. masívne paralelné analytické spracovanie dát pomocou DB2 DPF (Funkcia rozdeľovania databáz);
  7. distribuované databázy (konfigurácie pri zlyhaní, replikácia údajov a federatívny prístup k údajom);
  8. Schopnosti klastrovania DB2 pureScale pre odolnosť voči chybám a škálovateľnosť.

Články v sérii budú publikované po príprave príslušných materiálov.

rodina produktov DB2

Názov „DB2“ používa IBM pre celú rodinu produktov, ktoré sa od seba líšia jednak zložením hardvérových a softvérových platforiem, na ktorých sa používajú, ako aj funkčnosťou, architektúrou a technologickými vlastnosťami. Tieto rozdiely sú spôsobené úzkou integráciou väčšiny produktov rodiny DB2 s operačné systémy v ktorých fungujú, ako aj špecifiká týchto operačných systémov.

Rodina produktov DB2 v súčasnosti zahŕňa:

  • DB2 pre Linux, Unix a Windows, alebo DB2 LUW - DBMS pre systémy so systémom Linux (RedHat, SuSE, Ubuntu), UNIX (AIX, HP-UX, Solaris) a Microsoft Windows, ktorý je predmetom tohto článku a ďalších článkov z tejto série;
  • DB2 pre z/OS- DBMS pre operačný systém z/OS používaný na sálových počítačoch IBM System z;
  • Server DB2 pre VSE a VM- DBMS na prevádzku z/VM a z/VSE používaných na sálových počítačoch IBM System z;
  • DB2 pre i- DBMS pre operačný systém System i používaný na platforme IBM Power.

Každý z uvedených DBMS je architektonicky prispôsobený pre čo najefektívnejšie fungovanie v zodpovedajúcich operačných systémoch a obsahuje vlastnú špecifickú sadu nástrojov a nástrojov na správu.

Terminológia použitá v dokumentácii pre rôzne DBMS rodiny DB2 nie je jednotná a tie isté výrazy môžu mať pre rôzne varianty DB2 rôzne významy: napríklad výrazy „databáza“ a „tabuľkový priestor“ majú rôzne významy pre DB2 LUW a DB2. pre z/OS kvôli architektonickým rozdielom medzi týmito typmi DBMS.

Pri práci s informačnými zdrojmi venovanými DB2 je teda potrebné jasne rozlíšiť, o ktorom z produktov rodiny sa diskutuje, aby nedošlo k zámene a možným chybám.

Zastarané funkcie DB2 LUW

V tej či onej podobe je DB2 LUW na trhu od roku 1989 (rok vydania OS/2 1.10 Extended Edition, ktorý obsahoval komponent Database Manager – teda relačný DBMS, ktorý bol základom pre DB2 LUW).

Počas dlhého vývoja produktu boli niektoré pôvodne vyvinuté funkcie premyslené a nahradené inou implementáciou, alebo úplne vylúčené z produktu pre ich nepotrebnosť. Preto pri práci s materiálmi pripravenými pre staršie verzie DB2 (napríklad verzia 9.7) si uvedomte, že niektoré funkcie opísané v týchto materiáloch môžu byť nahradené v novších verziách DB2 (napríklad 10.5 a 11.1). Podrobné informácie o zastaraných a nahradených funkciách sú uvedené v .

Medzi najvýznamnejšie zmeny pre správcov a vývojárov patria:

  • nahradenie zastaraných grafických nástrojov na správu „Control Center“, „Task Center“ a mnohých ďalších funkciami bezplatného balíka IBM Data Studio, ako aj funkciami nástrojov zahrnutých v bezplatnej edícii IBM Data Server Manager výrobok;
  • ukončenie podpory servera DB2 Administration Server (DAS), ktorý bol potrebný na spustenie starších nástrojov na správu;
  • nahradenie nástrojov na riadenie pracovného zaťaženia DB2 Governor a Query Patroller funkciou DB2 Workload Manager (DB2 WLM).

Účel prípravy tejto série článkov

Hlavným účelom napísania série prehľadových článkov o IBM DB2 je vyplniť nedostatok materiálov na túto tému v ruštine. V skutočnosti, napriek dostupnosti prekladov významnej časti dokumentácie do ruštiny a dostupných kníh o DB2, stále je nedostatok dostupných prehľadových informácií, ktoré by zainteresovaným čitateľom umožnili získať predstavu o funkciách DB2. v špecifikách funkčnosti a administrácie.

Zámerom autora však nie je pripraviť prehľad všetkých produktov rodiny DB2 (pozri bočný panel „Rodina produktov DB2“), namiesto toho sa plánuje zamerať na variant DB2 pre Linux, Unix, resp. Operačné systémy Windows – t.j. na produkte DB2 LUW.

Čitateľov zaujíma praktická príručka ak chcete začať s DB2, odporúčam vám pozrieť si voľne distribuovanú knihu "", preloženú do ruštiny. Táto kniha poskytuje mnoho príkladov bežných operácií so softvérom DB2, vďaka čomu je ľahké začať s verziou DB2 9.7 opísanou v knihe aj s novšími verziami DB2 (10.5 a 11.1). Pri práci s aktuálnymi verziami softvér DB2, uvedomte si, že niektoré funkcie vo verzii 9.7 sú zastarané a nie sú podporované v nových verziách produktu (pozrite si bočný panel "Zastarané funkcie DB2 LUW").

Funkcionalita DB2 LUW

IBM DB2 používa aktuálne akceptované architektúra klient-server relačné DBMS, s ukladaním informácií na serveri a pripojením klientskych aplikácií k databázam lokálne alebo cez sieť.

Na zabezpečenie súbežného prístupu k údajom z paralelných aplikácií používa DB2 transakčný mechanizmus založený na uzamykaní a protokolovaní transakcií na poskytovanie štandardných záruk ACID (atomicita, konzistencia, izolácia, trvanlivosť). Tento mechanizmus prešiel dlhým vývojom, aby zaistil maximálny výkon, spoľahlivosť a minimalizoval oneskorenia pri vykonávaní aplikácií.

DB2 poskytuje podporu pre všetky bežné priemyselné štandardy pre prístup k aplikačným údajom vrátane štandardného jazyka SQL dotazy, rozhrania ODBC a JDBC, práca s typickými formátmi textových tabuliek atď. Okrem toho DB2 obsahuje pokročilé funkcie na ukladanie a prácu s pološtruktúrovanými údajmi XML formáty, JSON/BSON. Na vývoj uložených procedúr poskytuje DB2 podporu pre rôzne procedurálne jazyky vrátane:

  • štandard pre jazyk DB2 SQL PL,
  • jazyk SQL/PL používaný v DBMS spoločnosti Oracle,
  • schopnosť vyvíjať „externé“ uložené procedúry v jazykoch Java, C, C++ a COBOL.

Charakteristické črty DB2 sú:

  • škálovateľnosť, obmedzená len dostupnými výpočtovými zdrojmi a čo najúspornejšie využitie výpočtových zdrojov;
  • výkonné vstavané prostriedky diferenciácie a riadenia prístupu, ktoré poskytujú možnosť granulárneho obmedzenia prístupu k informáciám v kontexte objektov (tabuľky, pohľady), ako aj implementáciu modelu povinného riadenia prístupu;
  • pokročilý integrovaný systém zálohovania a obnovy údajov;
  • dostupnosť celej sady technológií na budovanie „klasických“ analytických dátových skladov (rozdelenie tabuliek na sekcie, materializované pohľady, optimalizácia ukladania dát do vyrovnávacej pamäte a skenovanie tabuliek a indexov, „interný“ paralelizmus pri vykonávaní zložitých dotazov atď.);
  • podpora vytvárania konfigurácií masívne paralelného analytického spracovania údajov (MPP) z viacerých serverov pripojených cez komunikačnú sieť založenú na DB2 Database Partitioning Feature (DB2 DPF);
  • maximálna odolnosť voči chybám a takmer lineárne škálovanie konfigurácií klastra DB2 pureScale s údajmi uloženými na zdieľaných diskoch;
  • Technológia DB2 BLU, ktorá implementuje podporu modernej „stĺpcovej“ analýzy v pamäti bez použitia manuálnej optimalizácie štruktúry databázy.

Na uľahčenie migrácie aplikácií z iných typov DBMS (predovšetkým Oracle Database) poskytuje DB2 pokročilé nástroje kompatibility vrátane podpory pre potrebné typy údajov, uložené procedúry a štandardné systémové pohľady.

Existuje niekoľko vydaní produktu DB2 LUW, ktoré sú zjednotené jednou sadou základných funkcií a navzájom sa líšia v prítomnosti obmedzení použitých výpočtových zdrojov a podpory pokročilých funkcií. Vydanie DB2 Express-C, ktoré je k dispozícii zadarmo, možno použiť na hodnotenie produktov, učenie sa a dokonca aj na nasadenia v malej produkcii. Funkčnosť a obmedzenia prostriedkov rôznych vydaní DB2 LUW sú podrobne uvedené v článku "".

Štruktúra databázového servera

Databázový server DB2 je počítač, na ktorom je nainštalovaný serverový softvér DB2 (motor DB2) a ktorý poskytuje služby správy štruktúrovaných informácií.

Prístup aplikácií k službám DB2 poskytuje klientsky softvér DB2 (IBM Data Server Driver Package), ktorý komunikuje so serverom DB2 v súlade s podporovanými metódami pripojenia aplikácií (vrátane ODBC, JDBC, OLE DB, ADO, CLI a iných metód) . Vo väčšine prípadov sa požadovaný klientsky softvér inštaluje so serverom DB2, čo umožňuje aplikáciám umiestneným priamo na databázovom serveri pripojiť sa k serveru DB2.

Databázový server DB2 môže hostiť viacero kópií softvéru DB2 s rôznymi verziami softvéru a inštalačnými adresármi. Viaceré kópie softvéru DB2 môžu byť hosťované nezávisle na tom istom serveri, pokiaľ medzi nimi neexistujú konflikty prostriedkov (vrátane dostatočných výpočtových zdrojov servera a žiadnych konfliktov týkajúcich sa logických prostriedkov operačného systému: názvy sietí, čísla portov, adresáre systému súborov a tak ďalej.).

Priame poskytovanie služieb DBMS zabezpečuje komponent DB2 databázový manažér (DB2 DBM). Každá kópia môže mať viacero inštancií databázového manažéra DB2 alebo stručnejšie inštancie DB2. Inštancia je nezávislé prostredie, v ktorom možno vytvárať databázy a spúšťať aplikácie. Každá inštancia DB2 má svoju vlastnú konfiguráciu a poskytuje prístup k špecifickej sade databáz. Inštancie DB2 sú nezávislé v tom zmysle, že vykonávanie operácií na jednej inštancii neovplyvňuje ostatné, s výnimkou obmedzení prostriedkov spôsobených spustením viacerých inštancií na rovnakom fyzickom alebo virtuálnom serveri.

Spustenie a zastavenie služieb DB2 sa vykonáva na úrovni inštancie, t.j. každá inštancia DB2 môže byť v spustenom alebo zastavenom stave. Parametre inštancie DB2 môžu definovať limity jej prostriedkov (napríklad z hľadiska využitia pamäte). Prostriedky inštancie DB2 sa používajú na údržbu databáz, ktoré existujú v rámci inštancie.

Databáza je kolekcia objektov, ktoré tvoria jediné informačné pole (tabuľky, pohľady, indexy atď.). Databázy sú nezávislé entity, a preto zvyčajne nezdieľajú objekty s inými databázami (výnimkou môžu byť konfigurácie distribuovaných databáz, ktoré využívajú mechanizmus federácie prístupu k údajom).

Schematický príklad štruktúry databázového servera je znázornený na obrázku.


V mnohých prípadoch databázový server DB2 obsahuje jedinú inštaláciu DB2 s jednou vytvorenou inštanciou slúžiacou jedinej databáze. S touto konfiguráciou sa všetky prostriedky databázového servera používajú na spustenie jednej databázy DB2.

Obsluhovanie požiadaviek z pripojených aplikácií na strane databázového servera vykonávajú takzvaní agenti DB2. Pre každú pripojenú aplikáciu v rámci inštancie DB2 sa spustí koordinačný (primárny) agent, ktorý môže podľa potreby spustiť niekoľko ďalších (pomocných) agentov. Technicky je každý agent samostatným spúšťacím vláknom alebo (pre staršie verzie DB2) samostatným procesom operačného systému s pridruženými prostriedkami potrebnými na jeho spustenie.

Možnosti konfigurácie DB2

Konfiguráciu servera DB2 je možné nastaviť na štyroch rôznych úrovniach:

  • Premenné prostredia;
  • register profilu DB2;
  • konfiguračný súbor správcu databázy (DBM CFG);
  • konfiguračný súbor databázy (DB CFG).

Premenné prostredia sa nastavujú na úrovni operačného systému servera a pomocou operačného systému. Pre OS Windows sú tieto premenné v skutočnosti globálne pre server, pre rodiny OS Unix a Linux môže mať každá inštancia svoje vlastné špecifické nastavenia premennej prostredia.

Nastavenia registra profilu DB2 možno nastaviť na úrovni operačného systému (globálne) alebo na úrovni inštancie, pričom nastavenia na úrovni inštancie prepíšu nastavenia na úrovni operačného systému. Prezeranie a nastavenie hodnôt registra profilu DB2 sa vykonáva pomocou príkazu db2set.

Voľby konfiguračného súboru správcu databázy sú definované na úrovni inštancie, zatiaľ čo voľby konfigurácie databázy sú definované na úrovni databázy.

Mnohé parametre sú dynamické, t. j. vykonané zmeny sa prejavia okamžite; existujú však nastavenia, ktoré vyžadujú zastavenie a spustenie inštancie, aby sa zmenila. Toto je možné vykonať v príkazovom riadku pomocou príkazov db2stop a db2start. Pred zastavením inštancie sa musia všetky aplikácie vypnúť. Na vynútenie zastavenia inštancie môžete použiť príkaz db2stop force.

Konfiguračný súbor databázového manažéra obsahuje nastavenia, ktoré ovplyvňujú inštanciu a všetky databázy, ktoré obsahuje. Konfiguračný súbor databázového manažéra je možné zobraziť alebo upraviť pomocou príkazový riadok(pomocou príkazov GET DBM CFG a UPDATE DBM CFG), ako aj nástrojov IBM Data Studio.

Konfiguračný súbor databázy obsahuje voľby, ktoré ovplyvňujú konkrétnu databázu. Konfiguračný súbor databázy je možné zobraziť alebo upraviť pomocou príkazového riadka (príkazy GET DB CFG a UPDATE DB CFG) a IBM Data Studio.

Podrobný popis podporovaných , ako aj je uvedený v oficiálnej dokumentácii DB2.

Organizácia ukladania údajov

Najmenšia fyzická úložná jednotka v DB2 je stránku. Povolené veľkosti strán sú 4K, 8K, 16K a 32K. Informácie o objektoch databázy (ako sú položky tabuľky a položky indexu) sú umiestnené na stránkach.

Pridelenie dodatočného priestoru pre ukladanie dát je prideľované skupinami stránok, ktoré sú tzv rozsahov. Vykonávanie operácií prideľovania priestoru navyše na úrovni rozsahu zlepšuje výkon vkladania záznamov a aktualizácií.

Ukladanie informácií v databázach DB2 je organizované do objektov tzv tabuľkové priestory. Tabuľkový priestor je pomenovaná množina kontajnerov na ukladanie informácií umiestnených v súborovom systéme databázového servera.

Pre každý tabuľkový priestor je vytvorený jeden alebo viac tabuľkových priestorov. kontajnerov(súbory alebo adresáre v súborovom systéme) na ukladanie informácií, ako aj nastavenie veľkosti stránky a oblasti pre ukladanie údajov do vyrovnávacej pamäte (buffer pool, pozri nižšie), ako aj množstvo ďalších parametrov.

Existujú nasledujúce typy tabuľkových priestorov:

  • obyčajný: používa sa na hosťovanie užívateľských tabuliek a indexov;
  • veľký: Používa sa na hosťovanie užívateľských tabuliek a indexov, ako aj údajov veľkých objektov (LOB) a údajov XML. V moderných verziách DB2 sa štandardne používajú veľké tabuľkové priestory namiesto bežných;
  • dočasné: používa sa na ukladanie dočasných informácií pri vykonávaní dotazov (systémové dočasné tabuľkové priestory) a dočasných tabuliek definovaných aplikáciami (užívateľské dočasné tabuľkové priestory).

Typ tabuľkového priestoru je špecifikovaný pri jeho vytváraní a nemožno ho zmeniť okrem vymazania a opätovného vytvorenia tabuľkového priestoru.

Tabuľkové priestory možno klasifikovať aj podľa typu ovládacieho prvku, ktorý je nastavený pri vytváraní tabuľkového priestoru:

  • tabuľkové priestory riadené systémom (SMS, System Managed Storage) - adresáre sa používajú ako kontajnery tabuľkových priestorov, vytvárajú sa dátové súbory na umiestňovanie úložných objektov do adresárov. Priestor nie je vopred pridelený, súbory dynamicky rastú. Keď sú definované, kontajnery sú fixné v čase, keď sú vytvorené;
  • tabuľkové priestory spravované databázou (DMS, Database Managed Storage) - vopred pridelené súbory sa používajú ako kontajnery tabuľkového priestoru, kontajnery je možné pridávať, mazať alebo meniť;
  • automaticky riadené tabuľkové priestory (automatické ukladanie) - automatická detekcia typu a umiestnenia kontajnera v závislosti od typu tabuľkového priestoru (DMS pre bežné a veľké tabuľkové priestory, SMS pre dočasné tabuľkové priestory). Pri vytváraní tabuľkového priestoru nie sú špecifikované konkrétne definície kontajnerov, potrebné kontajnery sa vytvárajú automaticky. Rast existujúcich kontajnerov a pridávanie nových kontajnerov sú úplne kontrolované DB2.

Ak chcete povoliť automatickú správu tabuľkového priestoru, musíte najprv vytvoriť databázu s povoleným automatickým ukladaním (čo je predvolené nastavenie) a naviazať na ňu sadu ciest k ukladaniu.

V predvolenom nastavení DB2 zapisuje sekvenčne do rozsahov, pričom sa medzi kontajnermi "oddeľuje". Ak máte napríklad tabuľkový priestor s veľkosťou stránky 4 KB a veľkosťou oblasti 8 stránok a používate 3 okamžité kontajnery v tabuľkovom priestore DMS, znamená to, že 32 KB údajov (4 KB x 8 stránok v rozsah = 32 KB) sa zapíše na jeden disk pred začiatkom nahrávania na ďalší.

Počnúc verziou DB2 10.1 bol zavedený nový koncept na zjednodušenie správy ukladania údajov − skladovacia skupina(úložná skupina). Úložná skupina je pomenovaná kolekcia ciest v súborovom systéme servera DBMS, ktorú možno použiť na ukladanie údajov. Zloženie úložných skupín v databáze zvyčajne definuje množinu typov úložných zariadení dostupných na ukladanie informácií. Keď sa vytvorí databáza, v databáze sa vždy automaticky vytvorí predvolená úložná skupina.

Každý automaticky riadený tabuľkový priestor je priradený k jednej z vytvorených skupín úložného priestoru, ktorá určuje fyzické umiestnenie údajov uložených v zodpovedajúcich tabuľkových priestoroch. Tabuľkový priestor je možné presunúť z jednej úložnej skupiny do druhej pomocou príkazu ALTER TABLESPACE ... USING STOGROUP ....

Zaznamenávanie transakcií

IBM DB2 LUW, podobne ako väčšina ostatných moderných relačných DBMS, ktoré poskytujú ACID záruky, používa protokol transakcií ako jeden z primárnych mechanizmov na presadzovanie týchto požiadaviek.

Operácie úpravy údajov vykonávané DB2 sa zaznamenávajú do protokolu transakcií ako séria záznamov protokolu. Každá databáza vedie svoj vlastný protokol transakcií, čo je sekvencia súborov na disku. Veľkosť jedného súboru je určená parametrom LOGFILSIZ, počet pôvodne vytvorených súborov je určený parametrom LOGPRIMARY. V prípade potreby môže DB2 vytvoriť ďalšie súbory log, maximálny počet vytvorených súborov je riadený parametrom LOGSECOND.

Informácie sa zapisujú do protokolu transakcií pomocou špeciálnej vyrovnávacej pamäte v RAM. Obsah vyrovnávacej pamäte sa vyprázdni na disk (do transakčných protokolových súborov) pri zapĺňaní vyrovnávacej pamäte, ako aj pri potvrdení alebo zrušení transakcií (na príkaz aplikácie alebo pri abnormálnom uzavretí spojenia s aplikáciou).

Transakčný protokolový súbor, ktorý je potrebný na obnovenie údajov po zlyhaní, sa nazýva aktívny protokolový súbor. Aktívne súbory protokolu transakcií musia byť vždy dostupné správcovi databázy DB2. Keďže dostupnosť súborov protokolu transakcií je rozhodujúca na zabezpečenie výkonu DBMS, poskytuje sa mechanizmus na zrkadlenie protokolov transakcií v dvoch súborové systémy(konfigurovateľné pomocou parametra LOGMIRROR).

Ak zvolíte nesprávnu veľkosť a počet súborov protokolu transakcií, ktoré nezodpovedajú úrovni aktuálneho zaťaženia, môže dôjsť k preplneniu protokolu transakcií v dôsledku nedostatočného počtu súborov protokolu, ktoré je možné vytvoriť, alebo nedostatku k dispozícii miesto na disku. V závislosti od nastavení databázy (pozri parameter BLK_LOG_DSK_FUL) sa môže aplikáciám vrátiť príslušné chybové hlásenie alebo môže byť spracovanie pozastavené, kým situáciu nevyrieši administrátor.

Situácie pretečenia protokolu transakcií môžu nastať aj vtedy, keď existujú dlhotrvajúce transakcie, ktoré vykonávajú operácie úpravy údajov. Aj keď takáto dlhotrvajúca transakcia vykoná jedinú malú zmenu databázy, ktorá potom zostane dlho nepotvrdená, príslušný súbor denníka transakcií zostane aktívny a nedá sa znova použiť.

Existujú dva hlavné režimy prevádzky transakčného protokolovania DB2: kruhové protokolovanie a protokolovanie archívu. V režime kruhového protokolovania DB2 cyklicky prechádza vygenerovanou sadou transakčných protokolových súborov. V režime protokolovania archívu DB2 voliteľne skopíruje súbory protokolu transakcií do archívu pomocou metód špecifikovaných parametrami LOGARCHMETH1 a LOGARCHMETH2.

Režim kruhového protokolovania zabezpečuje obnovenie integrity databázy v prípade zlyhania servera DBMS. Zálohovanie takejto databázy je možné až po vypnutí všetkých aplikácií (teda s pozastavením prístupu používateľa). Obnova dát z zálohovanie možné len s uvedením databázy do stavu v čase zálohovania.

Režim protokolovania archívu tiež zabezpečuje obnovenie integrity databázy v prípade zlyhania servera DBMS. Okrem toho môžete zálohovať databázu bez prerušenia prístupu používateľov a do zálohy zahrnúť aktívne protokolové súbory (potrebné na obnovenie integrity údajov). Obnovu údajov zo zálohy je možné doplniť aplikáciou zmien vykonaných v databáze od vytvorenia zálohy a uvedením databázy do stavu vo vybranom časovom bode v minulosti (nie však skôr ako v čase vytvorenia zálohy).

Režim protokolovania archívu vyžaduje dodatočné prostriedky na vykonávanie operácií archivácie vrátane zvýšeného I/O a dodatočného miesta na disku na ukladanie archivovaných súborov protokolu transakcií.

Organizácia ukladania údajov do vyrovnávacej pamäte

Aby sa znížilo množstvo vykonávaných I/O, DB2, podobne ako iné moderné relačné DBMS, ukladá čítanie a zápis vykonávané v tabuľkových priestoroch do vyrovnávacej pamäte. Ukladanie do vyrovnávacej pamäte sa vykonáva pomocou oblastí pamäte RAM, ktoré sa nazývajú oblasti vyrovnávacej pamäte. V DB2 možno definovať niekoľko rôznych oblastí vyrovnávacej pamäte (vytvorených príkazom CREATE BUFFERPOOL) s príznakom povolená veľkosť stránky, veľkosť a automatické riadenie veľkosti. Každý tabuľkový priestor je namapovaný na špecifickú oblasť vyrovnávacej pamäte a jednu oblasť vyrovnávacej pamäte možno zdieľať medzi viacerými tabuľkovými priestormi.

Pri vykonávaní operácie čítania najskôr vyhľadá požadovanú stránku s údajmi v oblasti vyrovnávacej pamäte. Ak sa nájde požadovaná stránka, údaje sa načítajú z oblasti vyrovnávacej pamäte, inak sa stránka načíta z disku do oblasti vyrovnávacej pamäte. K dispozícii je mechanizmus na asynchrónne predbežné vyzdvihnutie stránok do oblasti vyrovnávacej pamäte, keď sa zistí lineárny (predvídateľný) charakter prístupov k stránkam. Mechanizmus prefetchingu v mnohých prípadoch znižuje čas čakania na operácie čítania potrebných údajov z disku vykonávaním čítania v asynchrónnom režime.

Keď sa vykoná operácia zápisu, úprava stránky sa vykoná priamo v oblasti vyrovnávacej pamäte. V tomto prípade sa stránka nezapisuje na disk v synchrónnom režime a bezpečnosť údajov je zabezpečená mechanizmom transakčného protokolovania. Stránky zmeneného tabuľkového priestoru sa zapisujú na disk asynchrónne na pozadí a poskytujú primeranú minimalizáciu množstva práce, ktorá môže byť potrebná na obnovenie stavu databázy, keď je abnormálne (nesprávne) zatvorená. Správne zatvorenie databázy (napríklad počas pravidelného vypnutia servera DBMS) zabezpečí, že všetky upravené stránky všetkých oblastí vyrovnávacej pamäte budú zapísané na disk.

využitie RAM

Pamäťový model DB2 pozostáva z rôznych oblastiach pamäte na úrovni inštancie DB2, databázy, aplikácie a agenta.

Podrobný popis úložných oblastí DB2 nájdete nižšie Stručný opis menovania rôznych oblastí.

Zoznam hlavných úložných oblastí DB2 je zobrazený na obrázku nižšie (pôvodne prevzaté z ).

Celková pamäť používaná inštanciou DBMS zahŕňa:

  • Monitor Heap - pamäťová oblasť pre sledovanie operácií a stavu, veľkosť je regulovaná parametrom MON_HEAP_SZ;
  • FCM Buffers – pamäťová oblasť na interakciu medzi koordinačným agentom a jeho podagentmi, ako aj na poskytovanie interných interakcií v rozdelených databázach;
  • Audit Buffer je oblasť pamäte, do ktorej sa umiestňujú záznamy auditu predtým, ako sa vyprázdnia do denníka auditu.

Na úrovni databázy je obvyklé rozlišovať medzi:

  • oblasť globálnej databázy, často označovaná ako oblasť „Performance memory“, ktorá zahŕňa rôzne oblasti ukladania do vyrovnávacej pamäte a oblasť zamykania;
  • oblasť údajov aplikácie, často označovaná ako "funkčná pamäť", ktorá zahŕňa rôzne oblasti pracovnej pamäte agentov, ktoré udržiavajú spojenia s databázou.

Oblasť globálnej databázy pozostáva z týchto hlavných komponentov:

  • Buffer pools - buffer pooly, t.j. oblasti na ukladanie údajov tabuľkového priestoru do vyrovnávacej pamäte;
  • Zoznam zámkov - oblasť pre ukladanie informácií o zámkoch, ktorých veľkosť je riadená parametrom LOCKLIST;
  • Package cache - oblasť pre cachovanie plánov vykonávania dotazov, veľkosť je regulovaná parametrom PCKCACHESZ;
  • Katalógová vyrovnávacia pamäť - oblasť pre kešovanie systémového katalógu, ktorá obsahuje popisy všetkých databázových objektov, veľkosť je regulovaná parametrom CATALOGCACHE_SZ;
  • Utility halda - RAM na vykonávanie operácií údržby databázy (vrátane operácií zálohovania a obnovy), veľkosť je regulovaná parametrom UTIL_HEAP_SZ;
  • Databázová halda - RAM pre obsluhu databázových operácií (vrátane vyrovnávacej pamäte protokolu transakcií a vyrovnávacej pamäte na urýchlenie prístupu do systémového katalógu, ako aj vyrovnávacej pamäte auditu na úrovni databázy), veľkosť je regulovaná parametrom DBHEAP.

Celková veľkosť oblasti globálnej databázy je obmedzená nastavením DATABASE_MEMORY.

Oblasť údajov aplikácie zahŕňa:

  • Aplikačná globálna pamäť - spoločné pamäťové oblasti zdieľané pri spracovávaní aplikačných požiadaviek, maximálne množstvo je regulované parametrom APPL_MEMORY;
  • Agent Private Memory - privátne pamäťové oblasti používané na prevádzku jednotlivých agentov obsluhujúcich pripojené aplikácie.

Voliteľne môžete vyhradiť oblasti pamäte, ktoré sú vyhradené pre ovládač DB2 na spustenie na strane aplikácie. Pre lokálne aplikácie (tie, ktoré používajú IPC namiesto sieťového prístupu na pripojenie k správcovi databáz), nastavenia DB2, ktoré nastavíte, riadia, koľko pamäte RAM je alokované (predovšetkým nastavenie ASLHEAPSZ).

Správa RAM pri vykonávaní operácií triedenia

Mnoho typov operácií DBMS vyžaduje triedenie údajov, preto sa osobitná pozornosť venuje správe pamäte RAM používanej na triedenie.

Ak nie je možné úplne alokovať triediacu oblasť v RAM, údaje na triedenie sa umiestnia do systémového dočasného tabuľkového priestoru. Výkon dotazov, ktoré vyžadujú takéto rozsiahle operácie triedenia, môže byť výrazne znížený.

Parametre, ktoré riadia pridelenie pamäte RAM na triedenie:

  • SORTHEAP - limit pamäte pre operáciu triedenia;
  • SHEAPTHRES - limit veľkosti súkromnej pamäte agenta pridelenej na operáciu triedenia;
  • SHEAPTHRES_SHR - limit množstva celkovej pamäte RAM, ktorú možno použiť na vykonanie operácií triedenia (celkom všetkými spotrebiteľmi) v ľubovoľnom čase.

DB2 podporuje tri základné modely správy pamäte triedenia:

  • Zdieľaný model triedenia (zdieľané triedenie) – používa sa štandardne, znamená nastavenie parametra SHEAPTHRES na 0. Alokácia RAM pre triedenie sa vykonáva z globálnej oblasti databázy.
  • Súkromný model oblasti triedenia (súkromné ​​triedenie) – používa sa, keď je parameter SHEAPTHRES nenulový a nie je nakonfigurovaný žiadny zdieľaná pamäť triedenie. Prideľovanie pamäte RAM na triedenie sa vykonáva z oblasti údajov aplikácie (presnejšie zo súkromných oblastí patriacich agentom).
  • Hybridný model triedenia (hybridné triedenie) – používa sa, keď je parameter SHEAPTHRES nenulový a existuje nakonfigurovaná zdieľaná pamäť triedenia. Operácie, ktoré vyžadujú použitie zdieľanej pamäte triedenia, sa vykonávajú s prideľovaním pamäte v globálnej oblasti databázy, ostatné operácie triedenia sa vykonávajú s prideľovaním pamäte v súkromných oblastiach agentov.

Používanie zdieľanej (globálnej) pamäte na vykonávanie operácií triedenia poskytuje množstvo dôležitých výhod:

  • flexibilnejšia správa pamäte RAM pri vykonávaní dotazov, čo vám umožní zvýšiť efektivitu používania pamäte RAM;
  • možnosť použitia paralelnej verzie triediaceho algoritmu vďaka súčasnému prístupu do pamäťovej oblasti triedenia koordinačného agenta a jeho podriadených sub-agentov DB2.

Na povolenie používania zdieľanej pamäte pri vykonávaní operácií triedenia možno použiť jedno z nasledujúcich nastavení:

  • všeobecný model oblasti triedenia sa aktivuje nastavením parametra SHEAPTHRES na 0;
  • paralelnosť vykonávania operácií je povolená nastavením parametra INTRA_PARALLEL na YES;
  • premenná DB2_WORKLOAD je nastavená na ANALYTICS;
  • je povolená funkcia DB2 Connection Concentrator (zvyčajne sa používa pri prístupe k databázam DB2 for z/OS a DB2 for i, pozrite si popis tejto funkcie v ).

Automatická správa prideľovania pamäte

Prítomnosť veľkého počtu rôznych oblastí pamäte RAM a parametrov, ktoré riadia ich veľkosť, môže vyžadovať značné úsilie na manuálne ladenie servera DB2. Preto počnúc verziou 9 IBM DB2 podporuje automatickú správu distribúcie pamäte RAM medzi rôznymi oblasťami pomocou samoladiaceho správcu pamäte (STMM, Self-Tuning Memory Manager).

Keď je zapnuté bootstrapping, STMM dynamicky prideľuje dostupné pamäťové prostriedky spotrebiteľom pamäte v databáze. STMM reaguje na zmeny charakteristík pracovného zaťaženia úpravou hodnôt konfiguračných parametrov pamäte a veľkosti oblastí vyrovnávacej pamäte, aby sa optimalizoval výkon. Ak chcete povoliť STMM, musíte nastaviť konfiguračný parameter databázy SELF_TUNING_MEM na ON.

Automatická správa prideľovania pamäte sa vykonáva pre tie oblasti pamäte, pre ktoré to bolo výslovne povolené. Keď nastavujete hodnotu konfiguračného parametra pomocou príkazov UPDATE DBM CFG a UPDATE DB CFG, ak chcete použiť STMM, za hodnotou parametra je zadané kľúčové slovo AUTOMATIC. Číselná hodnota parametra špecifikovaného v tomto prípade sa používa ako počiatočná hodnota, potom STMM pravidelne upravuje hodnoty s prihliadnutím na aktuálne zaťaženie a prerozdeľuje RAM medzi rôznych spotrebiteľov.

Automatická správa STMM je podporovaná pre nasledujúce možnosti:

  • INSTANCE_MEMORY je celkové množstvo pamäte RAM v inštancii DB2;
  • DATABASE_MEMORY - oblasti globálnej databázy;
  • DBHEAP - oblasť pre obsluhu databázových operácií;
  • LOCKLIST – priestor na uchovávanie údajov o zámkoch;
  • MAXLOCKS - percento pamäte obsadenej zámkami jednej aplikácie na prepnutie na eskaláciu zámkov;
  • PCKCACHESZ - oblasť vyrovnávacej pamäte pre plány vykonávania dotazov;
  • SHEAPTHRES_SHR - oblasť všeobecného triedenia;
  • SORTHEAP - veľkosť oblasti triedenia pre jednu operáciu;
  • APPL_MEMORY - oblasť funkčnej pamäte;
  • APPLHEAPSZ - limit súkromnej pamäte používaný jedným agentom;
  • STMTHEAP - obmedzenie veľkosti oblasti používanej kompilátorom SQL a XQuery dotazov (na dotaz);
  • STAT_HEAP_SZ je maximálne množstvo pamäte RAM pridelenej na vytváranie štatistík pomocným programom RUNSTATS a pridelenej z oblasti funkčnej pamäte.

Typy databázových objektov

Táto časť poskytuje prehľad typov databázových objektov DB2. Úplný zoznam typov databázových objektov DB2 a podrobné informácie o každom type objektu nájdete v dokumentácii k DB2:

Schéma

Schémy sú menné priestory na zhromažďovanie databázových objektov. Schémy sa používajú predovšetkým na:

  • poskytovanie označenia vlastníctva predmetov alebo odkazov na aplikáciu;
  • logické zoskupenie súvisiacich objektov.

Všetky databázové objekty DB2 (okrem generických synoným) majú plne kvalifikované dvojdielne názvy; schéma je prvá časť takého názvu:<имя_схемы>.<имя_объекта>

Plne kvalifikovaný názov objektu musí byť jedinečný. Ak sa pripojíte k databáze a vytvoríte alebo pristúpite k objektu bez zadania schémy, DB2 použije ako názov schémy ID užívateľa, ktorý vytvoril pripojenie k databáze. Na nastavenie schémy pre aktuálnu reláciu môžete použiť aj príkaz SET SCHEMA.

Vytvorenie schémy je možné vykonať explicitne volaním príkazu CREATE SCHEMA alebo implicitne pri prvom pokuse o vytvorenie objektu bez zadania názvu schémy. V druhom prípade musí byť používateľovi udelené povolenie IMPLICIT_SCHEMA na úspešné vytvorenie schémy.

Pre väčšinu druhov databázových objektov je možné vytvoriť synonymá, čo umožňuje odkazovať na pôvodné objekty pod iným názvom (možno umiestniť do inej schémy). Synonymá sa vytvárajú pomocou príkazu CREATE SYNONYM / CREATE ALIAS. Podporuje tiež prácu s verejnými synonymami, ktoré nie sú viazané na konkrétnu schému. Prístup k verejným synonymám sa vykonáva bez špecifikácie schémy, bez ohľadu na zavedenú aktuálnu schému relácie. Verejné synonymá sa vytvárajú pomocou príkazu CREATE PUBLIC SYNONYM / CREATE PUBLIC ALIAS.

tabuľky

Tabuľka je zbierka súvisiacich údajov usporiadaných logicky do stĺpcov a riadkov.

Každý riadok tabuľky pozostáva z rovnakej množiny pomenovaných stĺpcov. Pri vytváraní tabuľky je každému stĺpcu priradený dátový typ, ktorý obmedzuje povolené hodnoty stĺpcov v riadkoch tabuľky (záznamy databázy) a určuje sémantiku možných operácií s príslušnými hodnotami (vrátane porovnávania, triedenia, výpočtových operácií).

Tabuľka sa vytvorí pomocou príkazu CREATE TABLE a vymaže sa príkazom DROP TABLE. Je podporovaná zmena popisu tabuľky pomocou príkazu ALTER TABLE, vrátane pridávania a odstraňovania stĺpcov, zmeny dátových typov stĺpcov. Po vykonaní niektorých operácií zmeny popisu tabuľky je potrebné ju reorganizovať (reštrukturalizovať fyzické úložisko tabuľky pre optimálny prístup k nej) pomocou príkazu REORG.

Klasifikácia vstavaných dátových typov DB2, ktoré možno použiť na definovanie stĺpcov tabuľky, je znázornená na obrázku nižšie.

Okrem jedného z povolené hodnoty podporovaný dátový typ, hodnoty stĺpca môžu byť prázdne, t.j. prázdna (NULL) hodnota. Schopnosť stĺpca ukladať hodnoty null sa určuje pri vytváraní tabuľky.

Väčšina dátových typov uvedených na obrázku má priamy náprotivok v iných moderných relačných DBMS a sú podrobne popísané v dokumentácii DB2. Nasleduje stručný popis funkcií typu údajov, ktoré sú špecifické pre DB2 alebo ktoré môžu byť náročné na používanie.

Pri práci s údajmi reťazca, na rozdiel od niektorých iných typov DBMS, DB2 rozlišuje medzi prázdnym reťazcom (reťazec nulovej dĺžky) a hodnotou typu reťazca NULL. Táto funkcia ovplyvňuje poradie vyhľadávania (použitím predikátu rovnosti namiesto výrazu IS NULL) a zloženie povolených hodnôt stĺpca (ak sú zakázané hodnoty NULL, do stĺpca možno uložiť prázdny reťazec).

Hodnoty reťazcov typov GRAPHIC, VARGRAPHIC a DBCLOB sa líšia od ostatných typov reťazcov tým, že sú vždy uložené v kódovaní UTF-16. Pri prístupe k zodpovedajúcim stĺpcom zo strany klientskej aplikácie poskytuje DBMS konverziu údajov do kódovania používaného klientskou aplikáciou.

Stĺpce typu DATE (dátum) štandardne neobsahujú časové pečiatky. V režime kompatibility databázy Oracle DB2 navyše podporuje ukladanie časových atribútov (hodiny, minúty, sekundy) v stĺpcoch DATE.

Ak potrebujete efektívne pracovať s presnými desatinnými číslami, ktoré obsahujú zlomkovú časť (napríklad vo finančných aplikáciách), je vhodné použiť dátový typ DECFLOAT, ktorý kombinuje presnú reprezentáciu DECIMAL hodnôt a schopnosť efektívneho výpočtu hodnoty typu FLOAT.

Typ údajov BLOB poskytuje možnosť ukladať neštruktúrované binárne informácie (ako sú obrázky alebo kancelárske dokumenty) do databázy. Hodnoty BLOB môžu byť uložené spolu s inými poliami záznamov (ak ich veľkosť umožňuje, aby boli dostatočne kompaktné), alebo samostatne, v špeciálnom úložnom objekte. V druhom prípade záznam obsahuje odkaz na uloženú hodnotu BLOB namiesto samotnej hodnoty. Ukladanie hodnôt typov CLOB a DBCLOB je organizované podobným spôsobom.

Typ údajov XML poskytuje uloženie v poliach tabuľky štruktúrovaných hierarchických dokumentov XML. Pre uložené XML dokumenty sú podporované operácie prístupu k atribútom (bez nutnosti analyzovať XML dokument pri prístupe), indexovanie jednotlivých atribútov a ďalšie funkcie.

Okrem vstavaných dátových typov DB2 podporuje užívateľom definované dátové typy, ktoré sú definované na základe vstavaných typov. Práca s užívateľsky definovanými typmi údajov je popísaná v dokumentácii DB2.

Pri vytváraní tabuľky je možné určiť pravidlá pre automatické vypĺňanie ich hodnôt pre stĺpce. Špeciálnym prípadom stĺpcov automatického dopĺňania sú stĺpce identity, čo sú číselné stĺpce, ktoré automaticky generujú jedinečnú číselnú hodnotu pre každý vložený riadok. Automatické plnenie je možné vykonať v jednom z dvoch režimov:

  • GENERATED ALWAYS - Hodnota je vždy nastavená serverom DB2 a nemôže byť explicitne nastavená aplikáciou;
  • GENERATED BY DEFAULT - Hodnotu nastaví server DB2, ak aplikácia nešpecifikovala explicitnú hodnotu priradenia pri vkladaní záznamu.

Na úrovni tabuľky možno tiež definovať obmedzenia, ktoré stanovujú obmedzenia na zloženie hodnôt atribútov. Podporované sú nasledujúce typy obmedzení:

  • primárny kľúč (PRIMARY KEY) - obmedzenie jedinečnosti na množine stĺpcov, používa sa hlavne na vyhľadávanie jedného záznamu, v tabuľke môže byť len jeden primárny kľúč;
  • obmedzenie jedinečnosti (UNIQUE) – dodatočné obmedzenie jedinečnosti na množine stĺpcov;
  • cudzí kľúč (FOREIGN KEY) – odkaz vo forme množiny hodnôt stĺpcov poukazujúcich na kombináciu stĺpcov inej tabuľky, pre ktorú je definovaný cudzí kľúč alebo jedinečné obmedzenie;
  • kontrola (CHECK) - logická podmienka, ktorá obmedzuje možné hodnoty jeden alebo viac stĺpcov v príspevku.

Reštrikčný mechanizmus implementuje prostriedky automatickej kontroly a zabezpečenia integrity databázy vrátane referenčnej integrity údajov (kontrola prítomnosti záznamov v „nadradenej“ tabuľke, na ktoré sa odkazuje prostredníctvom cudzích kľúčov záznamov „podriadených“ tabuliek). Správne používanie obmedzení vám umožňuje zaručiť formálnu správnosť naplnenia databázy a do určitej miery sa chrániť pred chybami aplikácií a používateľov pri oprave údajov.

Keďže obmedzovací mechanizmus vytvára dodatočnú výpočtovú záťaž pri zadávaní a aktualizácii údajov, v niektorých prípadoch sa od jeho používania zámerne upúšťa, pričom zodpovednosť za správnu údržbu databázy je prenesená na aplikáciu. DB2 zároveň používa popisy obmedzení integrity na určenie vzťahov medzi tabuľkami a výber najefektívnejšieho plánu vykonávania dotazov.

Dočasné tabuľky

Na ukladanie dočasných aplikačných údajov poskytuje DB2 dočasný tabuľkový mechanizmus, ktorý poskytuje plnú funkčnosť pre prácu s tabuľkovými údajmi, ale v kontexte aktuálnej užívateľskej relácie.

Prístup k dočasným tabuľkám výrazne zlepšuje výkon minimalizáciou alebo odstránením konfliktov prístupu k systémovému katalógu a odstránením uzamykania riadkov, protokolovania (voliteľné, v závislosti od režimu vytvárania tabuľky) a kontroly povolení.

Dočasné tabuľky tiež podporujú indexy, to znamená, že na dočasnej tabuľke je možné vytvoriť akýkoľvek štandardný index. Môžete tiež zhromaždiť štatistiky o takýchto tabuľkách (pomocou príkazu RUNSTATS), aby ste získali informácie potrebné pre optimalizátor dotazov.

Dočasné tabuľky sa nachádzajú v užívateľskom dočasnom tabuľkovom priestore, ktorý musí byť definovaný pred ich vytvorením.

V DB2 existujú dva hlavné druhy dočasných tabuliek:

  • deklarované dočasné tabuľky (DGTT - Declared Global Temporary Tables);
  • vytvorené globálne dočasné tabuľky (CGTT - Created Global Temporary Tables).

Deklarované dočasné tabuľky sú tabuľky v pamäti používané aplikáciou a automaticky zrušené, keď sa ukončí. K takýmto tabuľkám môže pristupovať iba aplikácia, ktorá ich vytvorila, a nie sú uložené v žiadnej z tabuliek systémového katalógu DB2.

Každá deklarovaná dočasná tabuľka má schému SESSION; táto schéma musí byť špecifikovaná odkazom na ňu. ID užívateľa použité na deklarovanie dočasných tabuliek bude mať na tieto tabuľky plné privilégiá. Každá aplikácia, ktorá deklaruje dočasnú tabuľku, bude mať vlastnú kópiu tejto tabuľky.

Zatiaľ čo DGTT vám umožňujú deklarovať dočasnú tabuľku, definíciu takejto tabuľky nemožno zdieľať medzi pripojeniami alebo reláciami. Pri každom spustení relácie musíte vydať príkaz DECLARE GLOBAL TEMPORARY TABLE.

Keď používate generované globálne dočasné tabuľky (CGTT), definíciu dočasnej tabuľky je potrebné vytvoriť iba raz, pretože je uložená v systémovom katalógu DB2. To znamená, že iné pripojenia môžu použiť definíciu tabuľky namiesto jej opätovného vytvárania.

Hoci štruktúru tabuľky CGTT možno použiť okamžite, údaje z rôznych spojení sú na sebe nezávislé a po uzavretí spojenia zmiznú.

indexy

Index je usporiadaná množina kľúčov, z ktorých každý ukazuje na riadok tabuľky. Indexy vynucujú jedinečnosť riadkov (to znamená implementujú jedinečné obmedzenia opísané v predchádzajúcej časti) a zlepšujú výkon. Nasleduje popis niektorých charakteristík, ktoré možno definovať pre indexy:

  • indexy môžu byť zostavené vo vzostupnom alebo zostupnom poradí hodnôt stĺpcov;
  • indexové kľúče môžu byť jedinečné alebo nejedinečné;
  • indexy môžu byť postavené na niekoľkých stĺpcoch (takéto indexy sa nazývajú kombinované);
  • ak sú údaje indexu a tabuľky zoskupené v rovnakej postupnosti indexov, takýto index sa nazýva klastrovaný (CLUSTERED INDEX).

Vytvorenie indexu zabezpečuje príkaz CREATE INDEX, vymazanie príkazom DROP INDEX. Pri vytváraní indexu sa zadáva jeho typ (unikátny / nejedinečný) a zloženie stĺpcov pre zostavenie indexu.

DB2 poskytuje nástroje, ktoré poskytujú automatizovaný výber indexov na optimalizáciu vykonávania dotazov. Najpohodlnejší spôsob práce s týmito nástrojmi je organizovaný v IBM Data Studio.

Sekvencie

Hoci sekvenčné objekty sú nezávislé od tabuliek, fungujú podobne ako stĺpce identity a poskytujú generovanie jedinečných číselných sekvencií. Rozdiel medzi sekvenciami a stĺpcami identity je v tom, že stĺpce identity generujú jedinečné čísla striktne v špecifikovanom stĺpci tabuľky, zatiaľ čo objekty sekvencie možno použiť na generovanie sekvenčných číselných hodnôt, ktorých logiku určuje aplikácia.

Vytváranie sekvencií zabezpečuje príkaz CREATE SEQUENCE, k ďalšej a aktuálne prijatej hodnote sa pristupuje pomocou operátorov NEXT VALUE FOR a PREVIOUS VALUE FOR. Kvôli kompatibilite s databázou Oracle je podporovaná aj syntax pre prístup k sekvenčným hodnotám prostredníctvom pseudostĺpcov „NEXTVAL“ a „CURRVAL“.

zastupovanie

Pohľad je zobrazenie údajov v tabuľkách. Údaje pre zobrazenia sa neukladajú oddelene, získavajú sa pri spustení zobrazenia. Podporované sú vnorené zobrazenia, t. j. zobrazenia vytvorené z iných zobrazení.

Pohľady sa vytvárajú pomocou príkazu CREATE VIEW a vymazávajú sa príkazom DROP VIEW. Na uľahčenie aktualizácie (nahradenia) pohľadov je k dispozícii syntax CREATE OR REPLACE VIEW, ktorá umožňuje vytvorenie nového pohľadu (ak ešte neexistuje) alebo nahradenie existujúceho pohľadu novou definíciou (ak je pohľad s zadaný názov už bol vytvorený).

spúšťače

Spúšťač je objekt, ktorý automaticky vykonáva operáciu na tabuľke alebo zobrazení. Špecifická akcia na objekte, pre ktorý je definovaný spúšťač, spôsobí spustenie spúšťača. Zvyčajne sa spúšťač nepovažuje za aplikačný objekt; podľa toho spúšťače zvyčajne nevytvárajú vývojári, ale správcovia databáz.

Uložené procedúry a funkcie

Uložené procedúry sú databázové objekty, ktoré obsahujú príkazy SQL a obchodnú logiku. Uloženie časti aplikačnej logiky do databázy zlepšuje výkon znížením objemu prenosu medzi aplikáciou a databázou. Okrem toho uložené procedúry poskytujú centrálne miesto na ukladanie programový kód a podľa toho aj iné aplikácie môžu používať rovnaké uložené procedúry. Príkaz CALL sa používa na volanie uloženej procedúry.

Používateľom definované funkcie (UDF) sú databázové objekty, ktoré umožňujú používateľom rozšíriť jazyk SQL o vlastnú logiku. Funkcia vždy vracia hodnotu alebo hodnoty, zvyčajne ako výsledok obchodnej logiky zahrnutej vo funkcii. Ak chcete volať funkciu, použite ju ako súčasť príkazu SQL alebo s príkazom VALUES.

V DB2 môžu byť uložené procedúry a užívateľom definované funkcie vyvinuté v niekoľkých programovacích jazykoch vrátane PL/SQL, SQL PL, Java, C, C++, COBOL.

Systémový adresár

Jeden zo základných informačné zdroje DBMS je systémový katalóg, ktorý ukladá a poskytuje prístup k informáciám o štruktúre databázy, vrátane:

  • popis tabuliek, stĺpcov a indexov;
  • popis a text pohľadov, spúšťačov a uložených procedúr;
  • informácie o tabuľkových priestoroch a kontajneroch na ukladanie údajov;
  • zavedené povolenia na prístup k databázovým objektom;
  • ďalšie metainformácie databázy.

Prístup k systémovému katalógu je potrebný pre mnohé úlohy vrátane automatizácie úloh správy a údržby databázy, vývoja aplikácií a ďalších.

Najčastejšie používané tabuľky (naozaj, pohľady), ktoré sú súčasťou systémového katalógu, sú:

  • SYSCAT.SCHEMAS - popis databázových schém;
  • SYSCAT.TABLES - popis databázových tabuliek;
  • SYSCAT.COLUMNS – popis stĺpcov tabuľky;
  • SYSCAT.INDEXES - popis indexov.

Podrobný popis a zloženie stĺpcov pre vyššie uvedené a ďalšie tabuľky systémového katalógu je uvedené v .

Organizácia paralelného transakčného spracovania

Transakcie

Transakcia (alebo jednotka práce) pozostáva z jedného alebo viacerých príkazov SQL, ktoré sa pri vykonávaní považujú za samostatnú jednotku; inými slovami, zlyhanie jedného výpisu transakcie spôsobí zlyhanie celej transakcie, pričom všetky príkazy vykonané až do bodu zlyhania budú vrátené späť.

Transakcia končí príkazom COMMIT. Transakcia môže skončiť aj príkazom ROLLBACK alebo abnormálnym (abnormálnym) vypnutím aplikácie, po ktorom budú všetky zmeny vykonané aplikáciou v databáze zrušené. Začiatok transakcie je prvý príkaz vykonaný po otvorení pripojenia aplikácie k databáze alebo po dokončení predchádzajúcej transakcie. Každé pripojenie aplikácie k databáze môže mať najviac jednu aktívnu transakciu.

Ako už bolo spomenuté, zmeny v databáze sa zaznamenávajú do transakčného denníka. Aby sa zabezpečilo, že zmeny vykonané vrátenou transakciou možno "vrátiť späť", hranice transakcií sú tiež zaznamenané v protokole transakcií. Transakcie, ktoré vykonávajú iba operácie čítania údajov, sa zároveň nezapisujú do protokolu transakcií. Informácia o začiatku transakcie sa vloží do transakčného logu pred začiatkom vykonania prvého (pre danú transakciu) príkazu zápisu dát.

V prípade chyby pri vykonávaní jedného príkazu, ktorý zapisuje údaje, sa všetky zmeny vykonané týmto príkazom vrátia späť pomocou údajov protokolu transakcií. Aplikácia po prijatí diagnostickej správy o odmietnutí vykonania príkazu môže zrušiť celú transakciu (príkazom ROLLBACK) alebo vykonať niektoré ďalšie akcie s databázou a v dôsledku toho potvrdiť vykonané zmeny (príkazom COMMIT ).

Aplikácia môže definovať ďalšie body vrátenia v rámci transakcie (pomocou príkazu SAVEPOINT) a vrátiť späť zmeny vykonané po vytvorení bodu vrátenia (pomocou príkazu ROLLBACK TO). Použitie bodov vrátenia umožňuje aplikácii selektívne vrátiť späť akcie vykonané v rámci transakcie, čo môže byť užitočné pri riešení chýb integrity údajov a iných scenárov.

Zámky

Paralelné použitie znamená, že na rovnakých databázových objektoch môže súčasne pracovať viacero používateľov. Prístup k údajom musí byť riadne koordinovaný, aby sa zabezpečila integrita a konzistentnosť údajov.

Na získanie konzistentných výsledkov paralelných transakcií je potrebná kontrola nad paralelným využívaním zdieľaných zdrojov. Takáto kontrola je založená na použití zámkov.

Pojmy uzamykanie a súbežnosť spolu úzko súvisia. Zámok dočasne bráni aplikáciám vykonávať iné operácie, kým sa aktuálna operácia nedokončí. Čím aktívnejšie sa uzamykanie v systéme používa, tým menej príležitostí na súbežnosť zostáva. Na druhej strane, čím menej často sa v systéme používa zámok, tým viac možností pre súbežnosť existuje.

Zámok sa získava automaticky podľa potreby na udržanie transakcie a uvoľní sa, keď je takáto transakcia prerušená (pomocou príkazu COMMIT alebo ROLLBACK). Zámky môžu byť umiestnené na stoloch alebo riadkoch.

Existujú dva hlavné typy blokovania:

  • Zdieľaný zámok (S) – nastavte, keď aplikácia číta údaje a bráni iným aplikáciám vykonávať zmeny v rovnakom riadku.
  • Exkluzívny zámok (X) – nastavte, keď aplikácia aktualizuje, vkladá alebo odstraňuje riadok.

Ak dve alebo viaceré aplikácie potrebujú vykonať operáciu na rovnakom objekte, jedna z nich bude musieť počkať, kým získa požadovaný zámok. V predvolenom nastavení bude aplikácia čakať neurčito. Časový limit uzamknutia aplikácie je riadený konfiguračným parametrom databázy LOCKTIMEOUT. Predvolená hodnota pre tento parameter je -1 (nekonečné čakanie).

Premennú relácie CURRENT LOCK TIMEOUT môžete použiť na nastavenie časového limitu uzamknutia pre konkrétne pripojenie. Štandardne je táto premenná nastavená na LOCKTIMEOUT. Na zmenu tejto hodnoty môžete použiť príkaz SET LOCK TIMEOUT.

V prípade, že dve (alebo viaceré) aplikácie pripojené k tej istej databáze donekonečna čakajú na zdroje z dôvodu nesprávnej postupnosti prístupu k týmto zdrojom, dôjde k zablokovaniu. Časový limit nemôže uplynúť, pretože každá aplikácia uchováva zdroj, ktorý druhá aplikácia potrebuje. Vo všetkých prípadoch je problém uviaznutia spôsobený nesprávnou štruktúrou alebo logikou aplikácie.

DB2 automaticky zisťuje situácie zablokovania vykonávaním príslušných kontrol v intervaloch špecifikovaných parametrom DLCHKTIME. Keď DB2 zistí, že skutočne došlo k zablokovaniu, použije interný algoritmus na určenie, ktorá z dvoch transakcií by sa mala vrátiť späť a v ktorej by sa malo pokračovať.

Úrovne izolácie

Podrobná analýza problémov, ktoré môžu nastať, ak neexistuje kontrola súbežnosti, je uvedená v dokumentácii DB2, ako aj v literatúre o teórii fungovania relačných DBMS. Možné typy problémov zahŕňajú:

  • stratená aktualizácia (ak sa jeden blok údajov zmení súčasne rôznymi transakciami, jedna zo zmien sa stratí);
  • nespoľahlivé čítanie (načítanie údajov pridaných alebo zmenených transakciou, ktoré nebudú dodatočne potvrdené);
  • neopakujúce sa čítanie (pri opätovnom čítaní v rámci tej istej transakcie sa zmenia predtým načítané údaje);
  • fantómové čítanie (rovnaké výbery v jednej transakcii poskytujú rôzne sady riadkov v dôsledku pridávania, odstraňovania alebo zmeny riadkov inými transakciami).

Riadenie vstavanej ochrany DB2 proti problémom uvedeným vyššie na strane aplikácie sa vykonáva nastavením úrovne izolácie, ktorá sa má použiť. Úrovne izolácie si možno predstaviť ako politiky uzamykania, kde v závislosti od zvolenej úrovne izolácie môžete dosiahnuť rôzne spôsoby, akými aplikácia uzamkne databázu. Úroveň izolácie vyžadovaná aplikáciou môže byť nastavená na úrovni relácie a na úrovni jedného dotazu alebo čiastkovej požiadavky, ktorá sa vykonáva.

DB2 poskytuje nasledujúce úrovne ochrany pre izoláciu údajov:

  • nespoľahlivé čítanie (Uncommitted Read, UR);
  • stabilita kurzora (Cursor Stability, CS);
  • stabilita čítania (Read Stability, RS);
  • opakované čítanie (Repeatable Read, RR).

Neautentické čítanie nazývaný aj „špinavý“. Toto je najnižšia úroveň izolácie, ktorá to umožňuje najvyšší stupeň paralelné použitie. Riadky nie sú uzamknuté počas operácií čítania, okrem prípadov, keď sa iná aplikácia pokúsi zrušiť alebo upraviť tabuľku; operácie aktualizácie sa vykonávajú rovnakým spôsobom ako pri použití ďalšej úrovne izolácie, úrovne stability kurzora.

Použitie úrovne izolácie Bad Read zabraňuje nasledujúcim problémom:

  • stratená aktualizácia.

Stabilita kurzora je predvolená úroveň izolácie. Poskytuje minimálny stupeň blokovania. Táto úroveň izolácie uzamkne „aktuálny“ riadok kurzora. Ak je riadok len na čítanie, uzamknutie sa podrží, kým sa nezadá nový riadok alebo sa nedokončí operácia. Ak sa riadok aktualizuje, uzamknutie sa podrží, kým sa operácia nedokončí.

Použitím úrovne izolácie stability kurzora sa zabráni nasledujúcim problémom:

  • stratená aktualizácia;
  • nesprávne čítanie.

Pred DB2 9.7 sa pri použití úrovne izolácie stability kurzora vykonaním zápisu (operácia UPDATE) uzavrel prístup na čítanie (operácia SELECT) do rovnakého riadka. Logickým základom bolo, že keďže operácia zápisu vykoná zmeny v riadku, čítanie by malo počkať na dokončenie aktualizácií, aby sa získala konečná hodnota potvrdenia.

DB2 9.7 predvolene používa odlišný prístup k úrovni izolácie stability kurzora pre nové databázy. Tento nový prístup sa implementuje pomocou sémantiky „aktuálne zaviazaných“ (CC). Pri použití sémantiky CC operácia zápisu nezatvára prístup k rovnakému riadku pre operáciu čítania. Predtým bol tento prístup možný pomocou úrovne izolácie UR; rozdiel oproti súčasnému prístupu je v tom, že pri UR operácia čítania dostáva neplatné hodnoty, zatiaľ čo pri sémantike CC dostáva aktuálne akceptované hodnoty. Aktuálne potvrdené hodnoty sú hodnoty, ktoré boli potvrdené pred začiatkom operácie zápisu.

Stabilita čítania poskytuje uzamknutie všetkých riadkov prijatých aplikáciou. Pre daný dotaz sú zablokované všetky riadky, ktoré zodpovedajú množine výsledkov. Použitie tohto režimu izolácie teda môže viesť k tomu, že aplikácia získa veľký počet zámkov a ak sa dosiahnu nastavené limity, eskaluje zámky z úrovne riadkov na úroveň tabuľky. Na úrovni izolácie stability čítania však optimalizátor dotazov DB2 explicitne nezíska zámky na úrovni tabuľky v pláne vykonávania dotazov, ktoré vykonáva, aj keď sada výsledkov obsahuje väčšinu záznamov v tabuľke.

Použitím úrovne izolácie stability čítania predchádzate nasledujúcim problémom:

  • stratená aktualizácia;
  • nesprávne čítanie;
  • neopakovateľné čítanie.

Opakované čítanie je najvyššia úroveň izolácie. Poskytuje najvyšší stupeň uzamknutia a najmenšiu mieru súbežnosti. Zámok sa umiestni na riadky, ktoré sa spracúvajú na zostavenie sady výsledkov; inými slovami, dokonca aj riadky, ktoré sa nedostanú do výsledného balíka, môžu byť zablokované. Iné aplikácie nemôžu aktualizovať, odstraňovať ani vkladať riadky, ktoré ovplyvnia množinu výsledkov, kým sa nedokončí prebiehajúca operácia. Opakované čítanie zaisťuje, že rovnaký dotaz vytvorený aplikáciou viackrát v rámci jednej operácie vždy prinesie rovnaké výsledky.

Optimalizátor dotazov DB2, keď používa úroveň izolácie opakovaného čítania, môže zahrnúť do plánu vykonávania dotazu explicitné operácie nastavenie zámkov na úrovni tabuľky, keď príslušné dotazy zahŕňajú skenovanie všetkých riadkov tabuľky (čo znamená potrebu uzamknúť každý riadok tabuľky počas vykonávania dotazu).

Použitie úrovne izolácie stability čítania zabráni všetkým možné problémy konkurenčný prístup, no zároveň je v maximálnej možnej miere obmedzená možná paralelnosť vykonávania operácií.

Záver

V tomto článku sme sa zaoberali hlavnou funkcionalitou IBM DB2 LUW DBMS, štruktúrou databázového servera, konfiguračnými nastaveniami a organizáciou ukladania dát. Okrem toho sa berú do úvahy základné princípy servera DB2, podporované typy databázových objektov a organizácia paralelného transakčného spracovania DB2.

V práci som sa nejaký čas musel zaoberať IBM DB2 DBMS. Pretože Keďže systém je komerčný, na internete nie je veľa informácií v ruštine, preto som sa rozhodol popísať niektoré funkcie tohto DBMS.

Miesto vstupu

Začnime so vstupným bodom v DBMS. V SQL SERVER je koncovým bodom inštancia, ktorá samozrejme môže mať samostatné databázy, ale konfiguračný a bezpečnostný model je rovnaký pre celú inštanciu. V DB2 vyzerá vstupný bod takto – inštancia (ktorá zodpovedá konkrétnemu portu) – databáza. Zároveň existuje konfigurácia pre celú inštanciu a pre samostatnú databázu.

Konfiguráciu inštancie môžete zobraziť buď pomocou príkazu db2:

Konfigurácia správcu databázy

Typ uzla = Enterprise Server Edition s lokálnymi a vzdialenými klientmi

Úroveň vydania konfigurácie správcu databázy = 0x0b00

Rýchlosť CPU (milisekundy/inštrukcia) (CPUSPEED) = 2,912790e-07
Šírka komunikačného pásma (MB/s) (COMM_BANDWIDTH) = 1,000000e+02

Maximálny počet súčasne aktívnych databáz (NUMDB) = 8
Podpora federatívneho databázového systému (FEDERATED) = ÁNO
Názov monitora procesora transakcií (TP_MON_NAME) =

Predvolený účet na vrátenie prostriedkov (DFT_ACCOUNT_STR) =

Inštalačná cesta Java Development Kit (JDK_PATH) = /home/db2inst1/sqllib/java/jdk32

Úroveň zachytenia diagnostickej chyby (DIAGLEVEL) = 3
Úroveň upozornení (NOTIFYLEVEL) = 3
Cesta k adresáru diagnostických údajov (DIAGPATH) = /home/db2inst1/sqllib/db2dump

Predvolené prepínače monitora databázy
Oblasť vyrovnávacej pamäte (DFT_MON_BUFPOOL) = VYPNUTÉ

Kde budú špecifikované parametre, ich význam a dekódovanie. Je možná aj skrátená verzia:

získať dbm cfg

Alebo s dotazom:

Vyberte názov, hodnotu z sysibmadm.dbmcfg

Medzi dôležité parametre patrí:

  • typ overenia (AUTHENTICATION)
  • predvolená cesta na vytváranie nových databáz (DFTDBPATH)
  • zisťovanie sieťového servera (OBJAVOVAŤ)
Nastavenia pre konkrétnu databázu môžete zobraziť takto:

pripojiť k vzorke(ukážka - názov databázy)

získať konfiguráciu správcu databázy

Alebo s približne rovnakou požiadavkou ako predtým:

vyberte názov, hodnotu zo sysibmadm.dbcfg

Overenie

Veľký rozdiel medzi DB2 a inými DBMS je v autentifikačnom modeli. Neexistujú žiadni interní používatelia ako v SQL Server alebo MySQL. Celá autentifikácia sa vykonáva pomocou externých prostriedkov k DBMS (dynamicky načítané pluginy) - pomocou operačného systému alebo externých pluginov (Kerberos, GSS API). Typ autentifikácie sa nastavuje v parametri AUTHENTICATION konfigurácie databázového manažéra. Štandardne je nastavená hodnota SERVER - užívateľské meno a heslo sa prenášajú ako čistý text a správnosť tejto dvojice sa kontroluje pomocou operačného systému. Ak je používateľské meno a heslo správne, skontroluje sa privilégium CONNECT pre používateľa alebo skupiny, ktorých je členom (vrátane špeciálnej skupiny PUBLIC, ktorá zahŕňa všetkých oprávnených používateľov). Tieto privilégiá si môžete pozrieť v tabuľke SYSCAT.DBAUTH:

vyberte GRANTEE zo SYSCAT.DBAUTH, kde CONNECTAUTH = "Y"

Veľkou chybou konfigurácie je zahrnutie typu autentifikácie KLIENT. V tomto prípade DB2 dôveruje autentifikácii pre pripájajúceho sa klienta, a ak má PUBLIC privilégium CONNECT, potom sa môže k databáze pripojiť každý užívateľ a mať prístup ku všetkým údajom, ktoré má PUBLIC. Používateľské meno je prevzaté z operačného systému. To znamená, že ak sa pripojíme cez Dátové štúdio ako administrátor, budú mu udelené všetky privilégiá, ktoré tento používateľ má. A v tomto prípade nie je rozdiel, z ktorého počítača bol prístup uskutočnený. Tento typ autentifikácie sa odporúča povoliť iba vtedy, keď medzi serverom a klientom existuje zabezpečený kanál a ostatní klienti sa nebudú môcť pripojiť k DBMS.

Autorizácia

Privilégiá na úrovni inštancií sú zapísané v konfigurácii databázového manažéra. Ide o nasledujúce privilégiá:

  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • SYSMON
Tieto privilégiá sa nastavujú zadaním skupiny, do ktorej vstúpi používateľ. V dbmcfg sú to voľby SYSADM_GROUP , SYSCTRL_GROUP , SYSMAINT_GROUP a SYSMON_GROUP.

Ďalej sú tu privilégiá špecifické pre databázu. Sú to privilégiá ako prístup k databáze (CONNECTAUTH), vytváranie tabuliek (CREATETABAUTH), vytváranie rutín (EXTERNALROUTINEAUTH) atď. Tieto privilégiá je možné zobraziť v zobrazení SYSCAT.DBAUTH

A nakoniec prístupové privilégiá ku konkrétnym údajom – tabuľkám, podprogramom atď. Všetko je tu dosť triviálne, ale aj s niektorými zvláštnosťami.

Privilégiá na prístup k tabuľke je možné zobraziť v zobrazení SYSCAT.TABAUTH. Typ udeleného privilégia je uložený v samostatných stĺpcoch v závislosti od samotného privilégia (SELECTAUTH, DELETEAUTH atď.). Pri udeľovaní privilégia pomocou príkazu GRANT pre privilégiá REFERENCES a UPDATE môžete zadať aj názvy stĺpcov, na ktoré sa dané privilégiá rozšíria. V tomto prípade si informácie o tom môžete pozrieť v zobrazení SYSCAT.COLAUTH

Oprávnenia pre rutiny (funkcie, procedúry a metódy) si môžete pozrieť v SYSCAT.ROUTINEAUTH. Nie všetko je tu triviálne, v závislosti od polí SPECIFICNAME a TYPENAME možno udeliť privilégiá všetkým podprogramom danej schémy.

Ak sa čitateľom článok páči, som pripravený hovoriť o ochrane údajov v DB2 pomocou Label-Based Access Control

Relačná databáza je množina vzťahov, ktorých názvy sa zhodujú s názvami schém vzťahov v schéme databázy. Dnes je známe veľké množstvo rôznych databázových serverov SQL. Zamerajme sa na nasledujúce štyri popredné servery DBMS - Oracle8i, IBM DB2, Microsoft SQL Server a Informix - a porovnajte ich v prevádzke v každej z hlavných fáz fungovania.

Oracle8i. Balík Oracle8i vybavený najpokročilejšou sadou funkcií pre prácu s jazykom Java a prístup k údajom cez internet, systém na optimalizáciu súbežného prístupu. Jedinou nevýhodou tohto DBMS je zložitosť administrácie, avšak všetky náklady na jeho implementáciu a vývoj sa neskôr vrátia efektívnou a spoľahlivou prácou. (zložitosť a vysoká cena sú diskutabilné). Medzi hlavné vlastnosti Oracle DBMS treba poznamenať nasledovné: Najvyššia spoľahlivosť. Schopnosť rozdeliť veľké databázy na sekcie (veľký databázový oddiel), čo umožňuje efektívne spravovať gigantické gigabajtové databázy; Dostupnosť univerzálnych prostriedkov ochrany informácií; Efektívne metódy maximálne zvýšenie rýchlosť spracovania požiadavky; indexovanie bitmap; Voľné tabuľky (v iných DBMS sa všetky tabuľky vyplnia ihneď po vytvorení); Paralelizácia operácií v dotaze. Dostupnosť širokej škály nástrojov na vývoj, monitorovanie a správu. Zamerajte sa na internetové technológie Riešenia, ktoré nie sú horšie ako vývoj Oracle, nájdete iba v DB2 od IBM. Orientácia na internetové technológie je hlavným mottom moderných produktov Oracle. V tejto súvislosti možno spomenúť balík interMedia, ktorý zabezpečuje spracovanie dát v multimediálnych formátoch a Jserver, vstavaný nástroj na prácu s jazykom Java, ktorý kombinuje možnosti jazyka Java s možnosťami relačných databáz. Enterprise JavaBeans sú stavebné bloky, ktoré tvoria Java internetové aplikácie. Oracle sa drží zásady, že všetky dôležité funkcie musia byť riadené z jedného centra, preto navrhovaný modul interMedia poskytuje používateľom najpokročilejšie funkcie pre prácu s multimediálnymi objektmi: Veľmi pokročilé nástroje na spracovanie zvukových klipov; Statické obrázky; Videoklipy; Geografické údaje (s celým súborom funkcií súvisiacich s určovaním polohy, ktoré sú súčasťou modulu Lokátor). Oracle8i implementuje dnešné najlepšie nástroje pre objektovo orientovaný návrh databáz, vrátane tabuľkových štruktúr, ktoré umožňujú dedenie vlastností a metód iných tabuľkových databázových objektov, čo zabráni chybám pri budovaní databázy a uľahčí ich údržbu. Malo by sa tiež poznamenať, že systém optimalizácie súbežnosti s viacerými verziami vyvinutý spoločnosťou Oracle je jednou z najdôležitejších charakteristík architektúry Oracle (táto funkcia je dostupná iba v InterBase DBMS od InterBase od Inprise). Táto funkcia umožňuje eliminovať situáciu, keď jeden používateľ musí čakať, kým druhý dokončí zmeny v obsahu databáz (to znamená, že v Oracle nie sú žiadne zámky na čítanie). Táto funkcia umožňuje Oracle8i vykonať viac transakcií za sekundu na používateľa ako ktorákoľvek iná databáza. Z hľadiska výkonu pri práci vo webovom prostredí pod LINUXom je Oracle na čestnom druhom mieste DBMS MySQL, pričom výrazne prevyšuje všetky ostatné DBMS z hľadiska spoľahlivosti a bezpečnosti.

DBMS Microsoft SQL Server Najdôležitejšie vlastnosti tohto DBMS sú: jednoduchosť administrácie, možnosť pripojenia na web, rýchlosť a funkčnosť mechanizmu DBMS servera, dostupnosť nástrojov vzdialený prístup, Sada nástrojov pre správu DBMS obsahuje sadu špeciálnych sprievodcov a nástrojov na automatické nastavenie konfiguračných parametrov. Táto databáza je tiež vybavená vynikajúcimi replikačnými nástrojmi, ktoré vám umožňujú synchronizovať údaje z počítača s informáciami o databáze a naopak. Server OLAP, ktorý je súčasťou balenia, umožňuje ukladať a analyzovať všetky údaje dostupné používateľovi. V princípe je táto DBMS moderná plnohodnotná databáza, ktorá je ideálna pre malé a stredné organizácie. Treba poznamenať, že SQL Server je horší ako ostatné zvažované DBMS v dvoch dôležitých ukazovateľoch: programovateľnosť a spôsob prevádzky. Pri vývoji klientskych databázových aplikácií založených na Jave, HTML často vzniká problém s nedostatočnými softvérovými nástrojmi SQL Servera a použitie tejto DBMS bude náročnejšie ako pri systémoch DB2, Informix, Oracle alebo Sybase. Globálnym trendom 21. storočia sa stal takmer univerzálny prechod na platformu LINUX a SQL Server funguje len v prostredí Windows. Preto je použitie SQL Servera vhodné len vtedy, ak sa štandard ODBC používa výhradne na prístup k obsahu databázy, inak je lepšie použiť iné DBMS.

IBM DB2 IBM DB2 DBMS je výsledkom takmer 30-ročného vývoja a výskumná práca spoločnosťou IBM. Najnovšia verzia tohto DBMS (6.x) obsahuje jeden z najprepracovanejších súborov nástrojov na správu a optimalizáciu a databázový stroj, ktorý môže vyrásť z notebooku s Windowsom 95 na celý klaster sálových počítačov S/390 so systémom OS/390. Balík DB2 je dostupný v dvoch vydaniach: DB2 Workgroup a DB2 Enterprise Edition. Tento DBMS implementuje všetky inovatívne technológie databázového stroja známe z predchádzajúcich verzií DB2, ako je paralelné spracovanie dotazov, úplná sada nástrojov replikácie, súhrnné tabuľky dotazov na zlepšenie výkonu databázy, funkcie objektovo orientovaného návrhu databázy a funkcie jazyka Java. Okrem toho je systém DB2 vybavený kompletnou sadou multimediálnych rozšírení, ktoré vám umožňujú ukladať a manipulovať s textovými, zvukovými a video fragmentmi, obrázkami a geografickými údajmi. Dá sa povedať, že pokiaľ ide o škálovateľnosť, technológia klastrovania databáz vyvinutá špecialistami IBM nemá analógy. Tieto rozšírenia výrazne uľahčujú proces vývoja aplikácií pre web, ako aj programov obsahujúcich fotografické obrázky a objemné textové správy. Systém DB2 je celkom konkurencieschopný aj ako platforma pre vývoj aplikácií, keďže existuje nástroj Stored Procedure Builder, ktorý automaticky konvertuje príkaz SQL do príslušnej triedy Java a zahrnie ho do štruktúry databázy. V DB2 6.1 sa interoperabilita s inými DBMS výrazne zlepšila tým, že sa umožnilo používanie špecifikácie OLE DB od spoločnosti Microsoft, nového štandardu prístupu k databáze. Administratívne ovládacie prvky DB2, ktoré sú Nová verzia prepísané v jazyku Java a možno ich získať z webu si zaslúžia najvyššiu pochvalu. Hlavnými nevýhodami tohto DBMS sú relatívna zložitosť správy a (zatiaľ) nedostatok implementácií pre populárne serverové operačné systémy, ako je LINUX. V tejto DBMS je vďaka Index Smart-Guide možné vykonávať ladenie, vytváranie optimálnych indexov pre daný počet prístupov, ktorý charakterizuje typické zaťaženie databázy. DB2 je jediný balík, ktorý vám umožňuje generovať kontingenčné tabuľky, čo výrazne zlepšuje efektivitu DBMS ako dátových skladov. Kontingenčná tabuľka je dočasný pracovný priestor, ktorý databáza používa na ukladanie odpovedí na často kladené otázky. Model DB2 6.1 sa ukazuje ako cenovo najefektívnejší vysokovýkonný systém. Administračné nástroje tohto DBMS sú celkom vhodné pre úroveň riešených úloh, navyše poskytuje mimoriadne široké možnosti pre prácu s multimediálnymi dátami a programovanie (čo v Microsoft SQL Server jednoznačne chýba).

DBMS od spoločnosti Informix. Nedávno došlo k prechodu od relačných DBMS k objektovo orientovaným (čo je jasne vidieť na príklade Oracle). Spoločnosť Informix v súlade s týmto konceptom tiež oznámila nové riešenie Centaur DBMS založené na relačnej databáze Informix Dynamic Server 7.3 a objektovo relačnej databáze Informix Universal Data Option, ktoré kombinuje vysoký výkon Dynamic Server pri práci s údajmi s univerzálnosťou a multimediálnymi funkciami Universal. Možnosť údajov. Táto implementácia je určená pre vývoj internetových systémov. Očakáva sa, že tento DBMS bude mať flexibilné vývojové prostredie so škálovateľnosťou, aby zodpovedalo intenzívnej pracovnej záťaži charakteristickej pre internet, a nástroje na prácu s novými typmi údajov, ktoré sa stali všadeprítomnými s rozvojom webu. Nástroje Java implementované v novom systéme umožnia vývojárom vytvárať uložené procedúry, používateľské programy a komponenty DataBlades v tomto jazyku, ktorý Informix nazýva

vlastné rozšírenia databázy. Z pohľadu zákazníkov Inforix ide o veľký krok vpred, pretože doteraz pri práci s DataBlades mohli používať iba C a SPL, interný jazyk Informixu na písanie uložených procedúr. Okrem toho sa balík Centaur dodáva so zabudovanou manipuláciou s objektmi ActiveX. To umožní napríklad vytvárať databázové uložené procedúry v jazyku Visual Basic; to však vyžaduje, aby balík Centaur bežal v prostredí Windows NT. Centaur bude doplnkom k Informix Dynamic Server a bude pracovať s tradičným databázovým formátom pre tento balík, takže používatelia budú mať k dispozícii všetky staré funkcie a upgrade systému na novú verziu nebude veľmi náročný. Okrem toho si balík Centaur zachová všetky možnosti dizajnu a programovania, vďaka ktorým je systém Informix Universal Server výnimočným technickým úspechom. Nový systém bude vybavený zariadeniami pre objektovo orientovaný návrh databáz, tvorbu špecializovaných tabuliek a indexovacích programov; umožní používateľom vkladať do dopytov vlastnú funkčnosť a nespoliehať sa len na ne štandardné prostriedky SQL. Závery. Po zvážení hlavných charakteristík architektúr pre budovanie AIS, serverových operačných systémov a DBMS, v budúcnosti ako architektúru AIS zvolíme architektúru Internet / Intranet, ako OS servera Linux, ako Oracle 8i DBMS.

2) Klauzula SQL SELECT. Vstavané funkcie.

SELECT stĺpec FROM tabuľka WHERE stĺpec vzor LIKE

SELECT * FROM Store_Information WHERE store_name LIKE "%AN%";

SELECT názov_stĺpca FROM názov_tabuľky WHERE názov_stĺpca MEDZI hodnota 1 A hodnota2

VYBERTE * FROM Osoby, KDE Priezvisko MEDZI "Hansen" A "Pettersen";

VYBERTE * FROM Osoby, KDE Priezvisko NIE JE MEDZI „Hansen“ A „Pettersen“;

SELECT Company, OrderNumber FROM Orders ORDER BY( triedenie ) Spoločnosť;

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber;

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC( opačné poradie);

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC , OrderNumber ASC( správny . objednať ) ;

SELECT * FROM Persons WHERE FirstName="Tove" AND LastName="Svendson";

SELECT * FROM Osoby WHERE meno="Tove" OR lastname="Svendson" ;

SELECT * FROM Persons WHERE (Meno="Tove" OR First Name="Stephen") AND Priezvisko="Svendson" ;

SELECT store_name FROM Store_Information WHERE Predaj > 1000 ALEBO (Predaj< 500 AND Sales > 275);

FunkcieVYBRAŤfunkciu( stĺpec) ODtabuľky AVG - priemerná hodnota v stĺpci; COUNT - počet hodnôt v stĺpci; MAX - najviac veľký význam v stĺpci; MIN - najmenšia hodnota v stĺpci; SUM - súčet hodnôt podľa stĺpca

Príklady: VYBRAŤ AVG(Vek) OD osôb; VYBRAŤ COUNT(názov_obchodu) FROM Store_Information; VYBRAŤ COUNT(ODLIŠNÝ store_name) FROM Store_Information; VYBRAŤ MAX(Vek) OD osôb VYBERTE SUM(Predaj) FROM Store_Information;

3) Serializácia transakcií, konflikty operácií. Metódy serializácie transakcií. Synchronizačné rukoväte, granulované synchronizačné rukoväte. Metódy serializácie transakcií. Predikátová synchronizácia zachytí. Serializácia na základe časových pečiatok.

Na dosiahnutie izolácie transakcií musí DBMS používať metódy na reguláciu spoločného vykonávania transakcií. Volá sa plán (metóda) na vykonanie množiny transakcií sériový ak je výsledok spoločného vykonávania transakcií ekvivalentný výsledku nejakého postupného vykonávania rovnakých transakcií. Serializácia transakcií- to je mechanizmus na ich implementáciu podľa nejakého sériového plánu. Poskytovanie takéhoto mechanizmu je hlavnou funkciou komponentu DBMS zodpovedného za riadenie transakcií. Systém, ktorý podporuje serializáciu transakcií, poskytuje skutočnú izoláciu používateľov. Hlavným problémom implementácie je výber metódy na serializáciu množiny transakcií, ktorá príliš neobmedzuje ich paralelizmus. Triviálnym riešením, ktoré prichádza do úvahy, je skutočne sekvenčné vykonávanie transakcií. Existujú však situácie, v ktorých je možné vykonať výpisy rôznych transakcií v ľubovoľnom poradí pri zachovaní sériovosti. Príklady zahŕňajú transakcie len na čítanie, ako aj transakcie, ktoré nie sú v konflikte na databázových objektoch. Medzi transakciami môžu existovať nasledujúce typy konfliktov: W-W - transakcia 2 sa pokúša upraviť objekt upravený transakciou 1, ktorá sa neskončila; R-W - transakcia 2 sa pokúša upraviť objekt čítaný transakciou 1, ktorá sa neskončila; W-R – Transakcia 2 sa pokúša prečítať objekt upravený neskončenou transakciou 1. Postupy serializácie transakcií sú založené na týchto konfliktoch.

Existovať dva základné prístupy k serializácii transakcií - na základe synchronizácie zachytávania databázových objektov a používania časových pečiatok. Podstatou oboch prístupov je odhaliť transakčné konflikty a odstrániť ich. Najbežnejším prístupom v centralizovaných DBMS (vrátane systémov založených na architektúre „klient-server“) je prístup založený na dodržiavanie dvojfázového protokolu synchronizačných zachytení databázové objekty. Vo všeobecnosti je protokol taký, že pred vykonaním akejkoľvek operácie v transakcii T na databázovom objekte r v mene transakcie T sa požaduje synchronizačné zachytenie objektu r v príslušnom režime (v závislosti od typu operácie). Hlavné režimy synchronizácie zachytenia sú: spoločný režim - S (Shared), čo znamená zdieľané zachytenie objektu a je potrebné na vykonanie operácie čítania objektu; výhradný režim - X (eXclusive), čo znamená exkluzívne zachytenie objektu a potrebné na vykonávanie operácií vkladania, vymazávania a úpravy. Zachytávanie granulovanej synchronizácie - prístup, ktorý synchronizačné zachytenia možno požadovať na objektoch rôznych úrovní: súbory, vzťahy a n-tice. Požadovaná úroveň objektu je určená vykonávanou operáciou (napríklad, ak chcete vykonať operáciu vymazania vzťahu, celý vzťah musí byť objekt zachytávania synchronizácie, ale na vykonanie operácie vymazania n-tice musí byť táto n-tica). Objekt akejkoľvek úrovne je možné zachytiť v režime S alebo X. Zachytenie predikátovej synchronizácie- nejde o zachytávanie objektov, ale o podmienky (predikáty), ktoré tieto objekty spĺňajú Alternatívna metóda serializácie transakcií, ktorá dobre funguje v podmienkach zriedkavých transakčných konfliktov a nevyžaduje konštrukciu čakacieho grafu transakcie. založené na pomocou časových pečiatok. Hlavná myšlienka metódy (ktorej existuje veľa druhov) je nasledovná: ak transakcia T1 začala pred transakciou T2, potom systém zaistí, že režim vykonania je taký, ako keby bol T1 úplne vykonaný pred začiatkom T2.

Na tento účel je každej transakcii T priradená časová značka t zodpovedajúca počiatočnému času T. Pri vykonávaní operácie na objekte r ju transakcia T označí svojou časovou pečiatkou a typom operácie (prečítanie alebo zmena). Pred vykonaním operácie na objekte r vykoná transakcia T1 nasledujúce akcie: Skontroluje, či transakcia T, ktorá označila tento objekt, skončila. Ak T skončilo, T1 označí objekt r a vykoná svoju operáciu. Ak transakcia T nebola dokončená, potom T1 skontroluje, či nie sú operácie v konflikte. Ak sú operácie nekonfliktné, časová pečiatka s nižšou hodnotou zostáva alebo je pripojená k objektu r a transakcia T1 vykoná svoju operáciu. Ak sú operácie T1 a T v konflikte, potom ak t(T) > t(T1) (to znamená, že transakcia T je mladšia ako T), T sa vráti späť a T1 pokračuje. Ak t(T)< t(T1) (T "старше" T1), то T1 получает новую временную метку и начинается заново. К недостаткам метода временных меток относятся потенциально более частые откаты транзакций, чем в случае использования синхронизационных захватов. Это связано с тем, что конфликтность транзакций определяется более грубо. Кроме того, в распределенных системах не очень просто вырабатывать глобальные временные метки с отношением полного порядка.