Michael Stonebraker Paul Brown s Dorothy Mooreovou
Objektovì-relaèní
SØBD
Analýza pøítí velké vlny
® ®
Object-relational DBMSs, Tracking the Next Great Wave Michael Stonebraker, Paul Brown with Dorothy Moore ISBN 1-55860-452-9
Copyright © 1999 All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the publisher. Designations used by companies to distinguish their products are often claimed as trademarks or registered trademarks. In all instances where Morgan Kaufmann Publishers, Inc. is aware of a claim, the products names appear in initial capital or all capital letters. Readers, however, should contact the appropriate companies for more complete information regarding trademarks an registration. Czech language edition published by Software Applications and Systems. Published with arrangement with the original publisher Morgan Kaufmann Publishers, Inc. Editorial and Sales Office 340 Pine Street, Sixth Floor San Francisco, CA 94104-3205 USA
Telephone +1 415 3922665 Facsimile +1 415 9822665 Email
[email protected] WWW http://www.mkp.com
Michael Stonebraker, Paul Brown s Dorothy Mooreovou
Objektovì-relaèní SØBD, analýza pøítí velké vlny
Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnoována jakoukoli formou (tisk, fotokopie, mikrofilm nebo jiný postup), zadána do informaèního systému nebo pøenáena v jiné formì èi jinými prostøedky. Nároky na odkodnìní na základì zmìn, chyb nebo vynechání jsou zásadnì vylouèeny. Informace, návody a pøíklady obsaené v knize nemohou být dále pøedmìtem obchodu. Vekerá práva vyhrazena. © Softwarové Aplikace a Systémy, s.r.o., Praha 2000 BEN - technická literatura, Praha 2000 Translation copyright © 2000 by Software Applications and Systems Pøedmluva k èeskému vydání © Jaroslav Pokorný Michael Stonebraker, Paul Brown s Dorothy Mooreovou Objektovì-relaèní SØBD, analýza pøítí velké vlny Softwarové Aplikace a Systémy, s.r.o., Praha 2000; BEN - technická literatura, Praha 2000 1. èeské vydání ISBN 80-901507-4-8 (Softwarové Aplikace a Systémy, s.r.o., Praha) ISBN 80-86056-94-5 (BEN technická literatura, Praha) Orig.: ISBN 1-55860-452-9 (Morgan Kaufmann Publishers, Inc.)
OBSAH
Předmluva k českému vydání..................................................................................
xi
Předmluva ...................................................................................................................
xv
KAPITOLA 1 Matice databázových systémů .........................................................
1
1.1 Klasifikační matice databázových systémů..........................................................
1
1.2 Kvadrant 1: jednoduchá data bez dotazů.............................................................
1
1.3 Kvadrant 2: jednoduchá data s dotazy.................................................................
3
Trh SQL databází: hrací plocha je přeplněná ......................................................
6
1.4 Kvadrant 3: Složitá data bez dotazů ....................................................................
7
Dodavatelé na trhu objektových technologií: stále skromný stánek ....................
13
1.5 Kvadrant 4: Složitá data s dotazy ........................................................................
14
Hráči na hřišti objektově-relačních SŘBD ...........................................................
18
1.6 Univerzální aplikace............................................................................................
19
Oceňování rizika a odhalování podvodů v pojišťovnictví .....................................
20
Modernizace tradiční personalistické aplikace ....................................................
20
Multimédia a GIS rozšiřují možnosti rezervačních systémů ................................
21
Odstranění mapovací vrstvy: čísla součástek.......................................................
21
1.7 Technologické hybné síly databázového trhu.......................................................
23
Síla číslo 1: Ekonomické aplikace se z velké míry změní na aplikace univerzální .......................................................................................................
23
Síla číslo 2: Hybnou silou trhu budou nové multimediální aplikace....................
23
1.8 Shrnutí.................................................................................................................
23
KAPITOLA 2 První charakteristika: rozšíření základních datových typů ......
27
2.1 Potřeba rozšíření základních datových typů........................................................
27
iii
Příklad 1: Kalendář trhu s obligacemi................................................................
28
Příklad 2: Abecední práce s jinými znaky než ASCII...........................................
29
Příklad 3: Spolujízda............................................................................................
30
2.2 Lepší způsob: rozšířitelné datové typy .................................................................
33
Vytváření jednoduchých datových typů ...............................................................
34
2.3 Uživatelsky definované funkce a operátory.........................................................
36
Podpora uživatelsky definovaných operátorů ......................................................
39
Uživatelsky definované agregace.........................................................................
40
2.4 Úplné objektově-relační rozšíření datových typů.................................................
41
Rys první: Dynamické linkování..........................................................................
41
Rys druhý: Aktivace funkcí na straně klienta nebo serveru................................
42
Rys třetí: Integrace s middleware ........................................................................
43
Rys čtvrtý: Bezpečnost .........................................................................................
45
Rys pátý: Zpětné volání........................................................................................
47
Rys šestý: Uživatelsky definované přístupové metody.........................................
47
Rys sedmý: Datové typy libovolné délky ..............................................................
51
Rys osmý: Otevřené paměťové manažery.............................................................
51
2.5 Shrnutí.................................................................................................................
53
KAPITOLA 3 Příklady rozšíření základních datových typů ..............................
55
3.1 Aplikace, které využívají geografické informační systémy .................................. 3.2 Aplikace, které používají knihovny pro datový typ image ...................................
58
3.3 Datový typ množství ............................................................................................
59
KAPITOLA 4 Druhá charakteristika: složité objekty ..........................................
61
4.1 Konstruktory typů ...............................................................................................
61
Konstruktor typu řádek .......................................................................................
61
Množiny jako konstruktor typu ...........................................................................
62
Konstruktor typu odkaz .......................................................................................
63
4.2 Používání konstruktorů typu ...............................................................................
63
Manipulace s typy řádek......................................................................................
63
Manipulace s kolekcemi řádků ............................................................................
66
Používání odkazů .................................................................................................
68
Používání kolekcí odkazů.....................................................................................
71
Používání kolekcí základních datových typů .......................................................
72
iv
4.3 Kolekce a komunikace klient-server....................................................................
72
4.4 Základní typy a složité objekty ............................................................................
73
Přirozenost...........................................................................................................
74
Zapouzdření .........................................................................................................
74
OID ......................................................................................................................
74
Konverze dat a řazení ..........................................................................................
75
4.5 Shrnutí.................................................................................................................
75
KAPITOLA 5 Další typy konstruktorů?..................................................................
77
5.1 Příklad časové řady .............................................................................................
77
Data časových řad v objektově-relačním SŘBD ...................................................
78
5.2 Příklad pole .........................................................................................................
79
Optimalizování paměťového uložení polí pro agregace ........................................
80
5.3 Shrnutí.................................................................................................................
83
KAPITOLA 6 Třetí charakteristika: Dědičnost....................................................
85
6.1 Dědičnost dat .......................................................................................................
85
6.2 Dědičnost funkcí ..................................................................................................
90
6.3 Shrnutí.................................................................................................................
95
KAPITOLA 7 Čtvrtá charakteristika: Pravidla....................................................
97
7.1 Pravidla aktualizace-aktualizace.........................................................................
97
7.2 Pravidla dotaz-aktualizace ..................................................................................
99
7.3 Pravidla aktualizace-dotaz ..................................................................................
99
7.4 Pravidla dotaz-dotaz ............................................................................................
100
7.5 Sémantika - odvrácená strana pravidel...............................................................
103
Více pravidel spuštěných stejnou událostí ...........................................................
103
Zřetězená pravidla mohou vyvolat nekonečný cyklus..........................................
104
Přerušení akce pravidla ukončí celou transakci ..................................................
105
Je důležité vědět, kdy se pravidlo odstartuje.......................................................
106
7.6 Shrnutí.................................................................................................................
107
KAPITOLA 8 Objektově-relační lexikální analyzátor .........................................
109
8.1 Jak objektově-relační lexikální analyzátor pracuje .............................................
109
8.2 Shrnutí.................................................................................................................
112
v
KAPITOLA 9 Tradiční relační optimalizátory ......................................................
113
9.1 Jak pracují relační optimalizátory.......................................................................
113
9.2 Realizace omezení platných pro tabulku R_zaměstnanec .................................
114
9.3 Metody pro zpracování spojení ............................................................................
119
KAPITOLA 10 Objektově-relační optimalizátory .................................................
125
10.1 Rozšíření 1: zápis příkazu v notaci používající jak operátory, tak funkce .........
126
10.2 Rozšíření 2 a 3: B-stromy a uživatelsky definované relační operátory ..............
127
10.3 Rozšíření 4: uživatelsky definované funkce selektivity .....................................
129
10.4 Rozšíření 5: uživatelsky definované operátory negace.......................................
130
10.5 Rozšíření 6: uživatelsky definované komutativní operátory ..............................
130
10.6 Rozšíření 7: přístupové metody pro funkce vracející data .................................
131
10.7 Rozšíření 8: inteligentní řazení klauzulí v predikátu ........................................
132
10.8 Rozšíření 9: optimalizace nákladných funkcí ....................................................
134
10.9 Rozšíření 10: uživatelsky definované přístupové metody ..................................
135
10.10 Rozšíření 11: 'uhlazení' dotazů nad složitými objekty ......................................
138
10.11 Rozšíření 12: reprezentace množiny 'v řádku'..................................................
139
10.12 Rozšíření 13: indexy nad atributy množin .......................................................
140
10.13 Rozšíření 14: optimalizace prohlížení hierarchií dědičnosti ............................
140
10.14 Rozšíření 15: optimalizace spojení v hierarchiích dědičnosti ...........................
141
10.15 Rozšíření 16: podpora uživatelsky definovaných agregací ...............................
142
10.16 Shrnutí.............................................................................................................
143
KAPITOLA 11 Implementace systému pravidel ...................................................
145
11.1 Podpora triggerů ................................................................................................
145
Modifikování exekutoru .......................................................................................
145
Modifikování dotazu ............................................................................................
147
11.2 Rozšíření pro obecnější pravidla ........................................................................
150
11.3 Škálovatelnost....................................................................................................
151
11.4 Shrnutí...............................................................................................................
153
KAPITOLA 12 Možnosti, které mají dodavatelé při výběru architektury ....... 12.1 První strategie: nedělej nic ................................................................................
156
12.2 Druhá strategie: přepiš relační stroj od základů znovu .....................................
156
12.3 Třetí strategie: prodávej dva systémy ................................................................
158
vi
12.4 Čtvrtá strategie: o-r nadstavba nad relačním paměťovým manažerem .............
158
12.5 Pátá strategie: postupný vývoj ...........................................................................
160
12.6 Šestá strategie: napiš obálku .............................................................................
161
Granularita............................................................................................................
164
Více systémů správy paměti...................................................................................
165
Problémy optimalizace ...........................................................................................
165
12.7 Sedmá strategie: napiš bránu ............................................................................
166
12.8 Osmá strategie: rozšiř objektově orientovaný SŘBD .........................................
171
12.9 Devátá strategie: Vlep objektově-relační stroj do perzistentního jazyka ...........
173
12.10 Shrnutí.............................................................................................................
173
KAPITOLA 13 Více o objektově-relační architektuře.......................................... 13.1 Volání rozšíření ..................................................................................................
175
Diskuse ................................................................................................................
182
13.2 Middleware ........................................................................................................
182
13.3 Shrnutí...............................................................................................................
189
KAPITOLA 14 Výkonnost rozšíření: rozdíl je v implementaci ...........................
191
14.1 Příklady .............................................................................................................
192
Příklad 1 ..............................................................................................................
192
Příklad 2 ..............................................................................................................
192
Příklad 3 ..............................................................................................................
193
14.2 Řešení v SQL-92.................................................................................................
193
14.3 Přístup 2-D Spatial DataBlade Informixu .........................................................
195
14.4 Řešení založené na Z zobrazení .........................................................................
197
14.5 Závěrečné prostorové rozšíření ..........................................................................
199
14.6 Porovnání variant ..............................................................................................
201
14.7 Shrnutí...............................................................................................................
203
KAPITOLA 15 Objektově-relační databázové systémy a aplikační servery ....
205
15.1 Dopady těžké databáze na tradiční aplikační servery .......................................
208
15.2 Dvouúrovňový model těžké databáze.................................................................
211
15.3 Tříúrovňový model těžké databáze ....................................................................
214
15.4 Shrnutí...............................................................................................................
217
vii
KAPITOLA 16 Multikvadrantové problémy ..........................................................
219
16.1 Aplikace video služby.........................................................................................
219
Příklad z levého dolního kvadrantu.....................................................................
221
Příklady z levého horního kvadrantu ..................................................................
222
Příklady z pravého horního kvadrantu................................................................
223
16.2 Pojišťovací aplikace............................................................................................
225
16.3 Shrnutí...............................................................................................................
227
KAPITOLA 17 Řešení, nabízející se pro multikvadrantové problémy..............
231
17.1 Podpora aspektů aplikace souvisejících se systémem souborů ..........................
231
První volba: použij relační BLOBy.......................................................................
231
Druhá volba: použij datový typ 'rozsáhlý objekt' a odpovídající metody ..............
231
Třetí volba: přikryj druhou volbu vhodnými obálkami z programovacích jazyků
232
Čtvrtá volba: použij datový typ ukládající vlastní data do systému souborů .......
232
Pátá volba: použij rozhraní virtuální tabulky......................................................
233
17.2 Podpora aplikací z pravého dolního kvadrantu .................................................
235
První volba: simuluj perzistentní paměť jako nadstavbu nad objektově-relačním SŘBD ................................................................................
235
Druhá volba: k zajištění přístupu do skladu objektů použij rozhraní virtuální tabulky ze stroje univerzálního serveru .................................
239
17.3 Shrnutí...............................................................................................................
239
KAPITOLA 18 Objektově-relační databázový návrh ...........................................
241
18.1 Relační databázový návrh..................................................................................
241
18.2 Příčiny problémů................................................................................................
245
Přílišné soustředění na formální modelování ......................................................
245
Neochota opakovaně upravovat návrh aplikace ..................................................
246
Nerealistický návrh aplikace ...............................................................................
246
Obtíže se zachycením doplňkové části schématu .................................................
247
Potíže s laděním databáze....................................................................................
248
Zanedbání včasného a řádného vyzkoušení aplikace...........................................
249
18.3 Problémy objektově-relačního databázového návrhu.........................................
249
Více možností nabízí potenciální šanci vnést do řešení daleko větší zmatek .......
249
Volba mezi procedurální a datovou reprezentací .................................................
250
Volba mezi pravidlem a datovou reprezentací .....................................................
251
viii
18.4 Shrnutí...............................................................................................................
252
KAPITOLA 19 Příští velká vlna v technologii databázových systémů .............
253
19.1 Stručné shrnutí obsahu knihy ...........................................................................
253
19.2 Přehled objektově-relačního trhu.......................................................................
255
19.3 Integrace objetově-relačních rysů a databázových služeb..................................
259
19.4 Stručná historická perspektiva..........................................................................
261
19.5 Shrnutí...............................................................................................................
261
BIBLIOGRAFIE ..........................................................................................................
263
REJSTŘÍK ...................................................................................................................
267
ix
x
Předmluva a la historický exkurs Předmluva k českému vydání
Objektově-relační databáze jsou zatím posledním vývojovým článkem v historii databází. Popsat o jakou technologii jde, je záměrem knihy, kterou dostáváte do rukou. Nejde však jen o objektově-relační databáze. Na své si přijdou i příznivci relační komunity. Je to pochopitelné. Nová technologie z relační vychází a v jistém smyslu ji i zahrnuje. Kniha jistě upoutá svým obsahem, nicméně pro databázisty bude zajímavý i fakt, že se na ní autorsky podílel i jeden z nejznámějších databázových odborníků M. Stonebraker. Když jsem v r. 1979 měl na univerzitě ve Stuttgartu poprvé v životě možnost si vyzkoušet relační SŘBD Ingres, netušil jsem, že za více než 20 let budu psát předmluvu do knihy, kterou napsal tentýž člověk jako tvůrce tohoto relačního systému. Ano, M. Stonebraker stál u zrodu jednoho z prvních relačních SŘBD. Byla to tehdy vzrušená doba 70. let, ve které se vyvíjely nové metody ukládání dat, implementoval se jazyk SQL, vyvíjelo se transakční zpracování a mnoho dalších technologických prvků, které jsou dnes v databázích zcela běžné. V teorii i praxi se snažili zastánci relačního modelu dat (RMD) zdůvodnit jeho kvality a přesvědčit veřejnost o jeho použitelnosti v praxi. Kromě systému Ingres patřily k pionýrským implementacím RDM ještě System R a QBE. Prostřednictvím těchto systémů relační technologie postupně dospívala. Databáze však vznikly ještě mnohem dříve. V r. 1965 se formovala konference o jazycích datových systémů (Conference on Data Systems Languages - ve zkratce CODASYL). V rámci této konference byl vytvořen výbor známý jako Database Task Group (DBTG), který měl za úkol standardizačním postupem vytvořit koncepci databázového systému. Vznikly tak SŘBD jako IDMS, známý u nás z éry sálových počítačů. Ve stejnou dobu firma General Electric prodává produkt Integrated Data Store (IDS), vyvinutý týmem pod vedením Ch. Bachmana, dalšího nezapomenutelného protagonisty databázové technologie. V dubnu r. 1971 vydal výbor zprávu "The DBTG April 1971 Report", kde se objevily pojmy jako schéma databáze, jazyk pro definici schématu, subschéma apod., jakož i celková architektura síťového databázového systému. I když byl původní síťový model CODASYLu v dalších letech čtyřikrát aktualizován, poslední standardy již nebyly implementovány. Vyvíjely se však i hierarchické databáze. Na rozdíl od síťového modelu však xi
nemá hierarchický model standard. Jeho historie je nedílně spjata se SŘBD IMS (Information Management System). V této souvislosti se může databázová historie pochlubit vztahem k největšímu projektu, který zřejmě lidstvo za dobu své existence realizovalo. První verze SŘBD IMS byla totiž vyvinuta koncem 60. let firmou IBM a firmou North American Aviation (později Rockwell) pro program Apollo. Netriviální aplikací tehdy bylo organizovat 2 miliony součástek vztažených vůči sobě hierarchickým způsobem. Dneska bychom řekli, že se jednalo o řešení problému kusovníku. Systém IMS byl ukončen v r. 1967 a po završení projektu Apollo se v r. 1968 jeho vývoje chopil jiný tým, který jej dotáhl do komerční verze. Připomeňme, že IMS patří stále k nejrozšířenějším databázovým systémům na sálových počítačích. Relační databáze začínají článkem E.F. Codda v časopise Communications of ACM z r. 1970. Šlo zprvu o zcela teoretický přístup, který sice na jedné straně vrátil data do fyzicky izolovaných souborů, pozvedl ovšem konceptuální úroveň pohledu na ně. Uživatel viděl data jako tabulky a k dispozici dostal silné prostředky pro práci s nimi. Již před r. 1974 se začaly rozvíjet implementace jazyka SQL a nikdo tehdy netušil, že se tento jazyk stane, jak mnohem později věštil Stonebraker, "mezigalaktickým dotazovacím jazykem". První relační software umožňoval sice elegantní přístup k datům, ale značně neefektivním způsobem. Téměř 10 let trvalo, než se relační databázová technologie vyvinula natolik, že z hlediska výkonu byla v reálném prostředí srovnatelná se síťovými a hierarchickými protějšky. Zmíníme stručně 90. léta. Do databázové technologie pronikly prvky objektověorientovaných (dále OO) jazyků. Sváděla k tomu představa ukládat objekty do databáze a využít současně mnoha užitečných prvků OO technologie. Dalším důležitým důvodem byl fakt, že ne pro všechny aplikace byly relační systémy vhodné. Mezi reprezentativní příklady patří problémy modelování objektů v systémech pro návrh (např. CAD) či geografické IS. V roce 1991 existovalo 13 prototypů či komerčních OOSŘBD. S jejich vznikem se také objevila debata týkající se opodstatněnosti těchto SŘBD a jejich vztahu k systémům relačním. Existovaly dokonce názory, že OOSŘBD zcela vytlačí relační systémy. Jaká je situace dnes? V současnosti existuje několik desítek OOSŘBD. Trh v této oblasti dosahoval v roce 1995 hodnoty 75 mil. USD a jeho meziroční nárůst se odhadoval na 50% ročně. Brzy se ovšem ukázalo, že počet nasazení OOSŘBD neroste tak rychle, jak se předpokládalo. Také funkce a výkon těchto systémů jsou dosud na poměrně nízké úrovni. Objektově-relační (dále OR) technologie, kterou nabídla praxe, se zdá být vhodným kompromisem. Jejím cílem je: • obdržet maximum z rozsáhlých investic do relační technologie (vybudování databází, získání zkušeností), xii
• využít výhody v pružnosti, produktivitě a provozních přínosech OO modelování, • integrovat databázové služby do systémů výroby a dalších, nových aplikací. Pro OO modelování je charakteristická především bohatost typů objektů, které jsou k dispozici. Ukazuje se, že pomocí těchto typů objektů se snadno modelují a následně snadno implementují objekty používané právě v podnikových systémech (business objects). Tyto objekty jsou složité nejen z hlediska struktury, ale i z hlediska vzájemných vztahů. Relační databáze založené na normalizovaných tabulkách umožňovaly modelovat takový svět jednoduše, ovšem za cenu mnohdy složitého a neefektivního přístupu k odpovídajícím datům. Proto mohou OO či OR systémy nabývat pro vývoj budoucích aplikací zásadního významu. Na druhé straně svět relačních systémů nabízí možnosti práce s jednoduchými daty (tabulky) s relativně silnými dotazovacími prostředky, které reprezentuje standard SQL89, SQL92 a částečně i dosud nevydaný návrh standardu SQL3. Nepochybně lze velké množství aplikací provádět pomocí relační technologie a není nutné je rekonstruovat do technologie jiné. Relační technologie dospěla ke svému vrcholu v souběžném zpracování požadavků v různých paralelních architekturách, je rozšířená na většině hardwarových platforem, poskytuje "brány" (gateways) mezi jednotlivými relačními SŘBD, pracuje v režimu 7x24. Ve všech těchto oblastech se neustále zdokonaluje. Za zakladatele OR technologie se považuje Won Kim, který již koncem 80. let vyvinul systém UniSQL. V jednom databázovém stroji bylo pro uživatele možné zpracovávat data buď objektově, nebo síťově a nebo relačně. Hned od počátku bylo jasné, že představa integrace relačních a objektových rysů do jednoho systému je sice slibná, ale současně těžko proveditelná. Odpovídající databázové modely mají mnoho zcela protichůdných rysů. Někdy jde pouze o dosažení perzistence objektů. Sem patří i systémy založené na "branách", které poskytují objektový pohled na ne-objektová data. Obvykle se nazývají objektové managery či objektové obálky. Objekty jsou implementovány většinou pomocí relační databáze, nebo naopak, na řádky relační databáze lze pohlížet jako na objekty. Mezi známé produkty, které jsou založené na těchto principech, lze zařadit VisualAge C++ Data Access Builder, ObjectStore Gateway, Persistence, UniSQL/M, Gemstone/Gateway. ORSŘBD se pokoušejí překlenout mezeru mezi relační technologií a OOSŘBD radikálněji. Přidávají možnosti ukládat objekty do relační databáze. Jde o trend pragmatický. Výrobci relačních databází potřebovali rozšířit možnosti jejich aplikace do oblastí požadujících integraci klasických tabulkových dat a objektů speciálních typů, jako jsou např. časové řady, prostorová data, či binární objekty, mezi které patří audio, video, obrázky, či applety. Zapouzdřením metod a datových struktur může OR server vyvolat složité operace pro prohledávání a transformaci těchto složitých multimediálních dat. Nejde však jen o multimedia. Databázové zpracování vyžadují i speciální aplikace objevující se v medicíně xiii
(EKG, rentgenové snímky) či ve výzkumu Země (seismická data, snímky ze satelitů). Protože je nemožné, aby každý výrobce SŘBD byl schopen implementovat širokou škálu různých typů dat a odpovídajících přístupových metod, realizovaly ORSŘBD již dávno požadovanou ideu rozšiřitelných relačních SŘBD. Rozšiřitelnost zde znamená dát možnost přidávání nových datových typů, ale i také potřebných programů (funkcí) pro efektivní vyhledávání dat v souladu s jejich vnitřní strukturou. Řečeno více informatickými pojmy, rozšiřitelnost v daném smyslu vede ke zvýšení sémantického obsahu uložených dat. Rozšiřitelnost databáze směrem k používání nových datových typů se někdy považuje za hlavní rys, který charakterizuje ORSŘBD. Won Kim a další, včetně M. Stonebrakera, však považují rozšiřitelnost, zprvu nejvíce akcentovanou, pouze za druhotný, i když užitečný rys. Rozšiřitelnost je ale jen logickým důsledkem OO přístupu. "Objektovost" by měla u OR technologie zahrnovat z datového modelu minimálně hlavní rysy objektového standardu ODMG-93. Další nutností je odpovídající objektový jazyk vyšší úrovně. ODMG-93 nabízí sice OQL, podobný v lecčems SQL92, pro vývoj ORSŘBD se však ukázal jako nejvhodnější spíše standard SQL3, který vede k vlastnímu řešení objektového rozšíření relační koncepce. Výsledkem těchto snah jsou dnešní univerzální servery, které podporují jak strukturálně složité objekty, tak relační datové struktury obsahující multimediální data. Zdá se zřejmé, že OR technologie má daleko k dokonalosti. Tak jako ani technologie OO nedosáhla dospělosti srovnatelné s relační. Jistý dluh projektantům databází zatím mají současné prostředky pro návrh OR databází. Schází potřebné nové metodologie. Tím spíše je třeba zatím nepřeceňovat současné tzv. ORSŘBD. Jistě, rozšířily okruh databázových aplikací. Jejich proklamovaná univerzálnost je ovšem i jejich největším handicapem. Uvažuje se o použití paralelismu, hledají se možnosti, jak konstruovat optimalizátor takových SŘBD, jak organizovat caching u klienta atd. atd. Většina zájemců o OR databáze se setkala s populární maticí databázových technologií. Uvádí ji ve své knize i M. Stonebraker. Ve čtvrtém kvadrantu, kam patří technologie s nejlepšími vlastnostmi, se logicky dostala právě OR technologie. Nezbývá, než se těšit, kam ji vývoj posune dál a jak se jí chopí uživatelé. Kniha, kterou právě začínáte studovat, je více než dobrým vykročením na této cestě.
V Praze dne 22. 2. 2000
Prof. RNDr. Jaroslav Pokorný, Csc.
xiv
Předmluva
Tato kniha rozebírá novou, slibnou třídu databázových systémů, které se označují jako objektově-relační. Spektrum aplikací, které tyto systémy pokrývají, se rozprostírá od správy videoknihoven a grafiky v zábavním průmyslu přes analýzu časových řad na trhu finančních služeb až po vědecko-technické databáze a geografické informační systémy (GIS). K tomu se přidává explodující trh multimediálních dat, ke kterému se často přistupuje prostřednictvím celosvětové pavučiny World Wide Web a kterému objektově-relační technologie vyhovují nejlépe. Objektově-relační systém řízení báze dat (SŘBD) se dokáže zmocnit reálné sémantiky objektů, představujících předmět tradičního zpracování hromadných dat, jako jsou kusovníky, kalendářní data či jména. Tato kniha vysvětluje, proč objektově-relační technologie nahradí relační systémy a stanou se příští velkou vlnou v moři databázových technologií. Tato kniha byla napsána v první řadě pro aplikační programátory a řídící pracovníky v oblasti informačních služeb, kteří chtějí pochopit, jak tato nová technologie zapadá do jejich prostředí. Kniha obsahuje řadu příkladů a tabulek, napomáhajících kvalifikovaně rozhodovat při výběru objektově-relačního systému. V Kapitole 1 se zavádí matice 2x2, používaná pro klasifikaci databázových systémů. Jednotlivé kvadranty matice reprezentují systém souborů, relační SŘBD, objektově orientované SŘBD a objektově-relační SŘBD. Matice představuje nejen šikovný způsob ohodnocení aplikací využívajících SŘBD, ale nabízí i perspektivní pohled na místo objektově-relačních databází v databázovém světě. Kapitoly 2 až 7 vysvětlují následující čtyři hlavní rysy objektově-relačních SŘBD: • podpora • podpora • podpora • podpora
rozšíření základních datových typů v kontextu SQL; složitých objektů v kontextu SQL; dědičnosti v kontextu SQL; systému pravidel.
Kniha popisuje i specifické podmínky, nezbytné k plné podpoře jednotlivých vlastností. xv
Kapitola 2 se zabývá rozšířením základních datových typů a Kapitola 3 uvádí několik konkrétních příkladů tohoto přístupu. Kapitola 4 nabízí přehled požadavků, kladených objektově-relačním SŘBD na podporu složitých objektů. Pro vytvoření složitých typů jsou nezbytné následující konstruktory: • záznamy složené z objektů; • množiny objektů; • reference (odkazy) na objekty. Existují ovšem ještě další možné typy konstruktorů, přičemž některé z nich jsou důležitější než ty, o kterých bude řeč v Kapitole 5. Kapitola 6 pokračuje popisem dědičnosti a naznačuje, jaké požadavky musí objektově-relační SŘBD splňovat k plné podpoře tohoto konceptu. Poslední požadovaná vlastnost, systém pravidel, je předmětem zkoumání Kapitoly 7. Zatímco první část knihy rozebírá požadované vlastnosti objektově-relačních SŘBD, druhá část se zaměřuje na konkrétní mechanismy, nezbytné pro zajištění podpory vlastního databázového stroje objektově-relačního SŘBD. Kapitola 8 analyzuje požadavky lexikálního analyzátoru a Kapitoly 9 a 10 rozebírají požadavky optimalizátoru. Kapitola 9 popisuje, jak pracuje tradiční relační optimalizátor; Kapitola 10 mapuje změny, které je nezbytné provést k tomu, aby se tradiční optimalizátor změnil na dobrý objektově-relační optimalizátor. Protože většina výrobců není ochotna o kvalitě svých optimalizátorů otevřeně hovořit, obsahuje kapitola i sadu testů, které čtenáři pomohou částečně odhalit vlastnosti optimalizátoru v systému, který ho zajímá. Kapitola 11 uzavírá diskusi o implementaci popisem systému pravidel. Jak čtenář zjistí v Kapitolách 8 až 11, má-li relační stroj obsáhnout objektověrelační funkcionalitu, je třeba ho z velké části přepsat. Kapitola 12 přináší výčet technických možností nabízejících se dodavatelům komerčních systémů, kteří chtějí své stroje přenést do objektově-relačního kvadrantu a uvádí, jaké možnosti si jednotliví dodavatelé vybrali. Je jasné, že výkon dosahovaný objektově-relačním strojem závisí v rozhodující míře na dobrém optimalizátoru; ten je námětem Kapitoly 10. Zásadní dopad na výkonnost mají ovšem ještě ještě dvě další složky. Objektově-relační stroj musí volat rozšíření napsaná uživatelem. Tato rozšíření se dají volat v adresovém prostoru SŘBD, v jiném adresovém prostoru a mohou být dokonce podporována v middleware, vně vlastního stroje. Kapitola 13 zkoumá výkonnostní dopady těchto rozhodnutí. Kapitola 14 pak demonstruje, že i vlastní algoritmy implementované v uživatelsky napsaných rozšířeních mohou být rozhodujícím činitelem ovlivňujícím výkonnost. V literatuře i na konferencích se značná pozornost věnuje komponentovým modelům, typicky podporovaným v systémech typu klient-server či v systémech postavených na middleware. Protože objektově-relační systémy jsou takovým komponentovým systémem, popisuje Kapitola 15 jejich vztah k ostatním xvi
komponentovým modelům. Kapitoly 16 a 17 se zaměřují na obtížný problém, se kterým se bude muset vyrovnat mnoho uživatelů databázových technologií: jak postupovat, jestliže se jedná o "multikvadrantovou" aplikaci, vykazující charakteristické znaky více než jednoho kvadrantu matice z Kapitoly 1. Dva příklady multikvadrantových problémů jsou uvedeny v Kapitole 16. Kapitola 17 nabízí možná řešení. Žádná kniha o databázových technologiích by nebyla úplná bez popisu databázového návrhu. Kapitola 18 ukazuje, že náročný úkol návrhu v prostředí standardní relační databáze se u obecnějšího datového modelu prezentovaného objektově-relačním SŘBD stává ještě obtížnějším. Kapitola 19 na závěr nabízí přehled současného trhu a zjišťuje, jak úspěšně se daří dnešním produktům splňovat požadavky uvedené v seznamu vlastností objektově-relačního SŘBD. Vzhledem k tomu, že pokrok v této oblasti jde velmi rychle kupředu, doporučujeme čtenáři, aby si u konkrétního dodavatele vždy ověřil aktuální popis produktů, které ho zajímají. Kniha se velmi málo zabývá tradičními službami systému řízení báze dat, jakými jsou řízení souběhu, zotavení po haváriích, pohledy (views), ochrana, replikace, paralelismus a podpora distribuovaných SŘBD. Tato témata mají klíčový význam pro jakýkoli SŘBD, bez ohledu na jeho datový model a dotazovací jazyk. Mnozí shrnují tento soubor vlastností do jediného požadavku: SŘBD musí mít schopnost škálovatelného rozpínání, umožňující práci velkého počtu uživatelů a správu rozsáhlého objemu dat. Protože objektově-relační databáze nevznášejí na tyto služby žádné nové požadavky, nebudeme je v této knize z důvodu stručnosti rozebírat a zaměříme se výhradně na definování funkcionality objektově-relačního SŘBD. Celou knihu provázejí příklady ilustrující objektově-relační vlastnosti, vesměs vyjádřené v SQL. Otázka, která se zcela přirozeně nabízí, zní: "Jaký SQL bych měl používat?" Existuje návrh SQL dokumentů jak pro SQL-3, vypracovaný komisí ANSI X3H2 SQL (Melton, 1997), tak OQL skupiny Object Data Management Group (ODMG) (Catell, 1998). Tyto standardy se vyvíjejí velmi rychle a v důsledku toho se i jejich podrobnosti často mění. Alternativně existují rozšířené SQL systémy řady komerčních dodavatelů. V této knize používáme SQL dnes implementovaný Informix Dynamic Serverem rozšířeným o Universal Data Option (IDS-UDO), protože jeho životnost bude podle všeho delší než životnost zmíněných standardů. Dovolili jsme si v této knize tři úpravy SQL IDS-UDO. Za prvé, kvůli zjednodušení výkladu jsme v některých případech upravili individuální syntaktické charakteristiky. Dále jsme si dovolili použít uživatelsky definované operátory. Illustra umožňovala rozšiřovat systém o operátory i funkce. Nedávno se jak SQL-3, tak Informix od podpory uživatelsky definovaných operátorů odklonily. Zdá se pravděpodobné, že budoucí systémy SQL budou nabízet rozšiřitelnost v jedné oblasti, nikoli v obou současně. I když se v tomto bodě xvii
pohybujeme "proti proudu", využíváme zde uživatelsky definované operátory, protože se domníváme, že často nabízejí přirozenější způsob vyjádření dotazů. Za třetí, při popisu rysů, které IDS-UDO v současnosti postrádá, jsme použili syntaxi, která je zpětně kompatibilní, byť není v současnosti podporována. Vzhledem k těmto úpravám nazýváme objektově-relační SQL používaný v této knize jednoduše "OR SQL". Pro hlubší studium řady postupů popsaných v této knize kontaktujte, prosím, Informix Software, Inc., 4100 Bohannon Drive, Menlo Park, CA 94025-1032. Je možné navštívit i domovskou stránku Informixu na adrese http://www.informix.com.
xviii