LINUXSOFT.cz Přeskoč levou lištu

ARCHIV



   

> IBM DB2 historie (2)

Dnes se podíváme na DB2 verze 4 a databáze na nemainframových platformách z ní vycházející.

2.4.2010 00:00 | Radim Kolář | Články autora | přečteno 8214×

DB2 Version 4

Verze 4.0 vyšla 30. listopadu 1995 a byla opět plná revolučních změn. Verze 4.0 byla dlouhou dobu mojí nejoblíbenější DB2 verzí vůbec. Z tohoto místa ji sesadila až DB2 LUW 9.7, kterou považuji za nejrevolučnější DB2 v historii. DB2 4 jsem používal až do doby než vyšla osmička. Ze čtyřky na osmičku jsme přemigrovali protože na současných operačních systémech již čtyřka nejenže nebyla oficiálně podporována, ale už ani neběžela. Čtyřka se mi líbila, protože obsahovala vše co potřebujeme pro vývoj aplikací a neobsahovala nic co nepotřebujeme. Byla to neuvěřitelně kompaktní databáze s minimálními systémovými nároky. Dnes je tomu asi těžké uvěřit, ale jádro DB2 mělo po odečtení knihoven pouhé 4 MB. Čtyřka byla taky první verze DB2 s kterou jsem měl co do činění. Oproti Oracle 6.5 byla výrazně rychlejší a hlavně jednoduší na použití. Jak se říká - byla to láska na první pohled.

Začneme technickou novinkou - byl zaveden nový diskový formát (Type 2) B-Tree indexů. Tento nový typ se používá dodnes a velmi výrazně zvyšuje dostupnost databáze protože na rozdíl od předchozího formátu nevyžaduje zamykání celého indexu při jeho aktualizaci. Protože Type 2 index byl už prakticky lockfree (až na next index key lock v cursor stability izolačním levelu) mělo smysl implementovat nové izolační levely uncommited read a read stability. Čtyřka tedy podporovala všechny 4 standardní izolační levely, ačkoliv jsou v terminologii DB2 jinak nazývány. V DB2 se levelu serializable říká Repeatable read, Repeatable read se říká Read stability a read committed se říká cursor stability. DB2 pro i5/OS má navíc ještě izolační level NO COMMIT při kterém se všechny commity ignorují a nedochází proto k žádným persistentním změnám v databázi. V DB2 9.7 přibyl pak ještě jeden izolační level - v DB2 terminologii nazývaný read commited, který pracuje stejně jako u Oracle a MS SQL databází. Jedná se o pseudo MVCC implementaci založenou na statement snapshotech kde se navzájem neblokují readers a writers. Současně došlo k rozšíření SQL DML příkazů o klauzuli WITH (nezaměňovat s WITH v CTE) pomocí které šlo specifikovat izolační level pro jeden SQL příkaz.

Indexy typu 2 kvůli zamykání (potřeboval by se na to page lock) neodmazávají staré hodnoty z indexu ale označují je příznakem smazané. Čas od času musí administrátor spustit údržbu indexů aby se uvolnilo již nepotřebné místo v indexech. V novějších verzích počínaje 8 je tato činnost již volitelně automatizována. Údržba je trojího druhu: 1. můžeme starý index smazat a vytvořit nový - používá se pokud byla z indexu odstraněna většina dat 2. smazat smazané záznamy a pokud bude index stránka příliš prázdná tak ji sloučit s vedlejší stránkou 3. smazat celou stránku pokud jsou všechny záznamy smazané - velmi rychlé a používá se pro tabulky kde s daty zacházíme stylem FIFO. Většina nových funkcí kupříkladu UNIQUE WHERE NOT NULL byla podporována jen pro nový typ indexu.

Type 1 indexy byly označené za zastaralé a jejich odstranění se plánovalo na verzi 6. Databáze vytvářela standardně nový druh indexů, pouze v případě že nad tabulkou byl již vytvořen index typu 1 tak nově vytvořený index byl také typu 1. Při reorganizaci indexů (údržba prvního typu viz výše) byly automaticky překonvertovány na typ 2. Zajímavé je, že podpora indexů typu 1 byla odstraněna mnohem později než se původně plánovalo - až ve verzi 9.7 tedy více než za 14. let po jejich uvedení. Existovaly totiž instalace kde se typ 1 indexů pořád používal a kde se nenašla za 12 let chvíle času na jejich konverzi protože by to znamenalo během reindexace uzamknout tabulku pro zápis. Tento zajímavý fakt dokládá že ve světě mainframů je 24/7 provoz databáze a uptime pojat úplně jinak než jsme z malých systémů zvyklí. Více podrobnostech o nových Type 2 indexech se dočtete zde.

Nejpokrokovější ale bylo že tato verze implementovala uložené procedury, triggery, uživatelem definované funkce a uživatelem definovatelné datové typy. O těchto věcech se v té době hodně psalo. Autoři se shodovali, že je to ten směr kterým by se měly databáze vyvíjet. Největší pozornost se věnovala uloženým procedurám. Jejich hlavní výhodou oproti dosavadní praxi bylo, že aplikace již nemusela posílat do databáze sady příkazů, ale stačilo poslat jen jeden - zaslání uložené procedury. Tento postup eliminoval prodlevy, které vznikaly při posílání příkazů přes síť, což se začalo používat čím dál tím víc protože čtyřka už plně podporovala klient/server model. Zejména velké zrychlení tak nastávalo u dávkového zpracování pokud k němu nebylo potřeba využívat data uložená mimo databázi. Jako programovací jazyk byl pro uložené procedury bylo použito mírně rozšířené SQL, COBOL, C a REXX. Možnost definovat si své vlastní datové typy byla také velmi lákavá a diskutovalo se jaká data by se měli v databázi pomocí uložených procedur zpracovávat místo dosavadního pouhého ukládání. Uvažovalo se o obrázcích, audiu a videu.

Další věcí která mě nadchla byla podpora inline views - možnost použití SELECTu ve FROM clausuli. Bylo to velmi jednoduché na použití a znatelně to šetřilo čas. V DB2 byly inline views dokonce i zapisovatelné - šly použít v UPDATE a DELETE, což byl na svou dobu unikát. Přibyla SQL92 standardní klauzule CHECK pro omezení vkládaných dat do tabulek. S její pomocí se daly zohlednit hodnoty jednoho či více sloupců a omezení v CHECK klauzuli uměl používat i optimalizátor SQL dotazů pro eliminaci zbytečných porovnání. Pokud totiž podle CHECK nesměl sloupec nabývat některých hodnot a tyto hodnoty uživatel hledal ve WHERE, tak nebylo potřeba prohledávat tabulku jelikož se tam hledaná hodnota nemohla vyskytovat. A poslední inovací na poli SQL byly Common Table Expressions které podporovali už i rekurzi. Dalším významným rozšířením dotazovacích schopností jazyka SQL byla nová podpora OUTER JOIN. Pro zlepšení administrace přibyl příkaz CANCEL THREAD pro odpojení uživatele od databáze (Dřive se při nutnosti odpojení uživatele prostě ukončila přímo klientská aplikace) a možnost nastavit RESTRICT ON DROP příznak u tabulek zabraňující nechtěnému smazání tabulek administrátorem.

Velké změny nastaly v oblasti škálovatelnosti. Přibyla optimalizace partition exclusion u fullscanu partitioned tabulek, maximální počet připojení do databáze byl navýšen z původních 10 000 na 25 000, ale hlavní novinkou byla možnost vytvoření data sharing group kde jednotlivé uzly přistupují ke sdíleným databázovým souborům. Dnes tuto technologii známe jako shared disk cluster. Cluster DB2 instancí podporoval až 800 000 spojení, maximální počet členů clusteru byl 32. Jedná se o podobnou technologii jako používá dnes Oracle RAC jen zamykání je řešeno lépe (sdílení zámků pomocí CF) a není tudíž potřeba tolik vzájemné komunikace mezi jednotlivými uzly nebo sesynchronizovat zámky v celém clusteru při výpadku uzlu. Pokud dojde k výpadku, tak data zamčená uzlem zůstanou sice zamčená, ale zbytek dat je normálně přístupný i pro zápis. Pro uvolnění zámků držených nedostupným uzlem je potřeba znovu spustit uzel aby provedl crash recovery při které dojde k rollbacku inflight transakcí a uvolnění zámků. Pokud je počítač na kterém běžel nedostupný uzel také nedostupný tak je tento uzel nastartován na jiném počítači v data sharing group. Uzel na jiném počítači je spuštěn jen za účelem crash recovery - nepřijímá uživatelská spojení aby negeneroval nepředvídanou zátěž systému. Za normálních okolností je tato činnost plne automatizována.

Připomeňme si ještě jednou když mluvíme o těchto pokročilých SQL rysech že se psal rok 1995. Verze DB2 zde popsané se týkaly její mainframové verze, především verze pro operační systém MVS/ESA. DB2 začala postupně vycházet i na jiných platformách, kterým se v terminologii IBM říkalo distributed platforms, případně open system platforms a znamenalo to všechny nemainframové platformy.

V roce 1987 byla vydána speciální verze "Extended Edition" tehdy nového operačního systému OS/2 1.0, který obsahoval DB2. OS/2 1.0 byl 16-bitový operační systém a měl to být nástupce PC-DOSu. IBM měla s OS/2 velké plány a brala tento operační systém zpočátku velmi vážně. OS/2 byl první nemainframový operační systém na který byla DB2 portována a dědictví původního kódu v DB2 LUW syntaxi pro administraci instanci (GET DBM CFG) přetrvalo dodnes. Na OS/2 platformě se DB2 nejmenovala ještě DB2 ale Database Manager 1.0

Další verze DB2 nazývaná SQL/400 pro operační systém AS/400 vyšla v roce 1988. AS/400 operační systém je dost specifický. Nejedná se totiž o operační systém jako ho běžně známe například z z/OS, MVS, MS-DOSu nebo Unixu. AS znamená aplikační server a AS/400 je aplikační server a operační systém v jednom. DB2 se v AS/400 zabydlela a je jeho standardní součástí dodnes. OS AS/400 se od té doby několikrát z čistě marketingových důvodů (neprodávalo se ho tolik kolik by si výrobce přál) přejmenoval, v současnosti se jmenuje IBM i. Nejzajímavějším rysem IBM i je spouštění programů ve virtuálním stroji TIMI, který umožňuje binární kompatibilitu napříč procesory a platformami podobně jako virtuální stroj Javy.

Další OS/2 verze - OS/2 Extended Edition 1.1 vyšla v roce 1989. SQL jazyk byl rozšířen o UNION, INTERSECT a EXCEPT a přibyly holdable cursors - kurzory co zůstanou otevřené i po provedení COMMIT. Také bylo možně rozšířit DB2 C preprocesor o podporu pro uživatelem definované C kompilátory.

O OS/2 Extended Edition 1.3 (1.2 pravděpodobně ani nebyla) se mi nepodařilo sehnat žádné podrobnější informace co se DB2 týče a tak si alespoň můžete prohlédnout grafické rozhraní a query builder.

Další verze OS/2 z roku 1991 - 2.0 byla již 32-bitový operační systém využívajícím schopností procesoru Intel 386, ačkoliv některé části zůstaly stále s šestnáctibitovým API. Nás ale zajímá, že nová 32-bitová DB2 byla nyní součástí balíku (nikoliv už OS edice) OS/2 Extended Services 1.0.

V roce 1993 IBM vydala DB2 pro 32-bitový OS/2 poprvé samostatně. Produkt se jmenoval DB2/2 V1 a byl založen na DB2 2.3. Podobná verze vyšla i pro AIX pod názvem DB2/6000 V1. V další verzi DB2/2 1.2 bylo už možné dělat online backup/rollforward recovery, což přineslo výrazné zlepšení dostupnosti databáze i na pouhém IBM PC.

DB2 se pak rozšířila na ne IBM unix platformy pod názvem DB2 Common Server Technology 1.0. Tento produkt existuje dodnes a v současnosti se jmenuje DB2 LUW (Linux, Unix, Windows). Podporované operační systémy byly HPUX, Solaris, a betaverze pro Windows NT. K tomuto produktu jsem našel administrační příručku, která prakticky beze změn platí dodnes.

DB2 Common Server technology 2.0 byla založena na mainframové DB V4 a vyšla pro OS/2, AIX, HP, Sun, SCO, SINIX a Windows NT. Této databázi se říkalo objektově-relační protože podporovala uživatelem definované data typy. Dnes se tomu asi budeme usmívat, protože to s dnešními objektovými databázemi nemělo prakticky nic společného, ale byla to první databáze co uměla datové typy definované uživatelem. Panovalo okolo toho ze strany aplikačních programátorů velké nadšení - zkoušelo se k čemu se tato vymoženost dá v praxi využít, přečtěte si dobový dokument srovnávající různé databáze co do podpory multimédií.

Krátce po vydání vydala IBM minor revizi DB2 2.1 obohacenou o volitelné rozšiřující moduly, které umožňovaly pracovat s textem, obrázky, videem a audiem pomocí SQL uložených procedur a nových datových typů. Vývojáři mohli začít směle experimentovat.

Dalším velkým zlomem bylo vydání DB2 Parallel Edition V1 pro platformu RS/6000 SP2. Jednalo se o implementaci shared nothing clusteru určnou zejména pro data warehousing. Architektura shared nothing má prakticky lineární škálovatelnost v závislosti na počtu uzlů. Na rozdíl od data sharing group u mainframů nebyl na RS/6000 vyžadován žádný speciální hardware. Tato technologie se za následujících 15 let sice dvakrát přejmenovala, ale používá se dodnes a je podporována i na Linuxu či Windows.

V roce 1995 vyšel na platformách AIX a OS/2 produkt WWW Gateway for DB2 V1. Zpřístupňoval data z DB2 databáze přes HTTP rozhraní. Produkt obsahoval HTTP server, ale neběžel jako modul v serveru jak bychom dnes čekali ale jako CGI script. Obsahoval makrojazyk a dokonce byl i patentován. Podrobnější informace o makrojazyku najdete v druhém patentu.

V roce 1996 vyšla IBM DB2 2.1.2 - první komerční databáze s podporou Javy a aplikačního rozhraní JDBC. IBM tím dala jasně najevo, že to s podporou tehdy ještě velmi nové technologie Java myslí opravdu vážně.

Verze pro tisk

pridej.cz

 

DISKUZE

historie Oracle 12.4.2010 16:41 Radim Kolář




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1

12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář

6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

31.7.2023 14:13 / Linda Graham
iPhone Services

30.11.2022 9:32 / Kyle McDermott
Hosting download unavailable

13.12.2018 10:57 / Jan Mareš
Re: zavináč

2.12.2018 23:56 / František Kučera
Sraz

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze