Žijeme ve věku elektronických databází. Zpravidla si už ani neuvědomujeme, jak úzce jsou naše běžné činnosti provázány s obrovskými datovými centry. Sofistikované databázové systémy zabezpečují převody peněz, umožňují platit platebními kartami, využívat internetové bankovnictví či objednávat letenky a rezervace v hotelích. Pokud se přihlásíme k účtu elektronického obchodu Amazon.com, máme okamžitě k dispozici kustomizovanou nabídku, sestavenou nejen na základě našich minulých objednávek, ale i preferencí zákazníků, kteří si zakoupili stejné zboží. Společnost Amazon.com totiž disponuje obrovskou databází klientů, kterou efektivně využívá k podpoře svých obchodních aktivit – algoritmus Amazonu vyhodnocuje preference uživatele (co vyhledává a kupuje) a na základě toho mu doporučuje další produkty, někdy až s neuvěřitelnou přesností.
V současné době je hojně využíván pojem databáze v různých významech a často je tímto pojmem myšlen databázový systém. Databázový systém (DBS) se skládá z databáze (DB) a systému řízení báze dat (SŘBD). Rozvoj databázových systémů je reakcí na potřebu efektivně zpracovávat různé rozsáhlé agendy se zaměřením na vyhledávání a aktualizaci dat. Vyhledávání představuje nalezení takových informací – záznamů, které vyhovují podmínkám na požadovaná data. Dnes je již naprostou samozřejmostí, že tyto podmínky jsou formulovány ve formě dotazu ve vhodném dotazovacím jazyce a odpovědí je typicky podmnožina z uložených záznamů (případně ještě zpracovaných – výpočtem z uložených dat získáme odvozené informace). Stejnou samozřejmostí je i skutečnost, že výsledné údaje můžeme třídit podle různých kritérií a prezentovat ve formě tištěných výstupních sestav nebo svoje databáze pravidelně aktualizovat tak, aby informace korespondovaly s realitou. Když tyto běžné činnosti provádíme, sotva si už uvědomujeme, že jsou výdobytkem moderních databázových technologií, které se vyvíjejí zhruba od poloviny minulého století. Zásadní přínos do nich vnesl zejména britský matematik a počítačový vědec Edgar Codd, tvůrce relačního modelu databázových systémů, na němž je založena převážná většina databázových systémů, s nimiž den co den pracujeme.
Matematik z Oxfordu
Edgar F. Codd se narodil v srpnu roku 1923 na ostrově Portland v jižní Anglii, a to jako nejmladší ze sedmi dětí. Jeho otec vlastnil malý podnik na zpracování kůže, zatímco matka byla učitelkou na základní škole. Ted Codd od mládí vynikal v matematice. Díky těmto schopnostem stejně jako touze po vyniknutí (což vyplývá z faktu, že coby nejmladší si často musel mezi staršími sourozenci hájit své „místo na slunci“) se dostal na Oxfordskou univerzitu, kde studoval matematiku a chemii na Exeter College. V době druhé světové války přerušil studium a působil jako pilot Royal Air Force. Že si zde vedl odvážně, o tom svědčí skutečnost, že dosáhl hodnosti kapitána. Když se po válce vrátil do klidných uliček starobylého Oxfordu, aby dokončil studium, dlouho zde nepobyl. Vydal se za svou snoubenkou Elizabeth do Spojených států amerických, kde krátce působil jako instruktor matematiky na University of Tennessee.
Poté, co se oženil, se začal rozhlížet po solidnějším zaměstnání. Shodou okolností se zúčastnil konkurzu, který pořádala společnost IBM, jež v té době hledala mladé nadané matematiky. Fakt, že Codd u konkurzu uspěl, pro něj znamenal významný životní předěl – dostal se k počítačům, a to přímo do výzkumného střediska IBM v New Yorku, jednoho z nejprestižnějších výzkumných center počítačového světa té doby. Do programování a práce na počítači jej zasvěcoval mimo jiné i John Backus, který se svým týmem o pár let později vyvinul programovací jazyk FORTRAN. Prvním počítačem, na němž Ted Codd pracoval, byl SSEC (Selective Sequence Electronic Calculator), elektromechanické monstrum, jehož výpočetní jednotku tvořila kombinace elektronek a elektromechanických relé a který do historie vstoupil jako první, byť ne zcela zdařilý prototyp digitálního počítače od společnosti IBM.
První systémy pro řízení databází
Celulární automaty, genetické programování či vývoj samoreplikujících se systémů, to byla lákavá a v šedesátých letech ještě neprobádaná půda pro vědecký výzkum. Nicméně Ted Codd po několika letech, kdy se této problematice věnoval, usoudil, že je třeba se zaměřit na otázky, které v té době byly aktuální z hlediska praktického využití. Ne náhodou učinil toto rozhodnutí na přelomu šedesátých a sedmdesátých let, v té poněkud zmatené době, kdy se ideály desetiletí, jež John Lennon označil za „pohoří století“, střetávaly s drsnou realitou. To se ostatně projevilo i v počítačové vědě – zejména v teoretických oblastech, jako byla např. umělá inteligence, kde se čím dál zřetelněji ukazovalo, že ideje, které se ještě před nedávnem zdály být na dosah ruky, jsou ve skutečnosti, tedy v podobě praktických aplikací, ještě na míle daleko. Na druhé straně to bylo období nesporného pokroku, byť většinové společnosti zatím utajeného. Jak jsme mohli v minulých částech tohoto volného seriálu sledovat, právě v této době si do podniků začaly nacházet cestu minipočítače (a s nimi přirozeně i řada nových aplikací), jasnější obrysy dostávaly snahy v oblasti návrhu operačního systému podporující multiuživatelský režim (stejně jako efektivnějších metod a konceptů programování). V téže době spatřil světlo světa i mikroprocesor, tedy vynález, jenž se zrodil takřka mimoděk v laboratořích společnosti Intel a který znamenal zásadní předěl ve využívání informačních a komunikačních technologií.
Na období, jež označujeme jako poněkud zmatené, to není vůbec špatná bilance, a to jsme zmínili pouze některé z revolučních objevů a inovací, jež v té době oblast informatiky a počítačové vědy užaslému, ale dosud povětšinou nechápajícímu světu představila. Ted Codd přirozeně tento vývoj sledoval a vnímal jej dokonce ještě ostřeji než kolegové (nemluvě o lidech, pro které byl počítač jen ten „drahý stroj na děrné štítky“. O tom vypovídá fakt, že se zaměřil na problematiku, jež kupodivu v té době takřka nikoho nevzrušovala, totiž na otázky spojené s organizováním dat, resp. s vytvářením databázových systémů. Že požadavky na databáze vzrůstaly, je nabíledni. Vyšší výpočetní výkon i kapacita paměťových médií stejně jako dostupnost minipočítačů byly důsledkem toho, že se práce s velkými soubory dat začaly využívat i tam, kde to před desetiletím předpokládal jen málokdo. Nemalou roli sehrál i samotný přechod od magnetických pásek k magnetickým diskům, které umožňovaly jen sériový přístup k datům.
Proč vlastně problematice databází vědci nevěnovali pozornost? Na to je snadná odpověď. Řešení zde v té době již bylo a podle všeobecného názoru více než uspokojivé. Představoval je vyšší programovací jazyk COBOL (COmmon Business Oriented Language), vzniklý díky sdružení uživatelů a výrobců počítačů CODASYL (Conference On Data SYstem Languages) a určený přednostně pro vytváření obchodních aplikací. V rámci CODASYL vznikla samostatná skupina označovaná jako Databaze Task Group (DBTG), kterou vedl Charles Bachman ze společnosti General Electric. Bachman byl první, kdo se otázkou efektivní organizace dat v souvislosti s nástupem digitálních počítačů zevrubně zabýval a byl to také on, kdo již na počátku šedesátých let jakožto vedoucí osobnost DBTG představil první integrovaný datový sklad (Integrated Data Store) s vlastním systémem řízení databáze, který byl založený na tzv. síťovém modelu databází a disponoval některými vlastnostmi databázového managementu, jakkoli z dnešního pohledu značně omezenými.
Ani společnost IBM, v níž Codd působil, nezůstávala samozřejmě v této oblasti pozadu. Díky účasti na velkolepém projektu Apollo (kde „Big Blue“ patřila k firmám, jež od počátku zajišťovaly výpočetní techniku a vývoj potřebného softwaru) vyvinula firma svůj vlastní databázový systém IMS (Information Management System). Ten sice využíval některé vlastnosti Bachmanova IDS, ale na rozdíl od něj a dalších databází kompatibilních s doporučeními CODASYL byl založen na hierarchickém modelu dat. Jak už bylo naznačeno, původně byl IMS navržen pro práci s obrovským objemem dat, který si vyžadovala konstrukce monumentální třístupňové rakety Saturn V, ale v roce 1968 byl tento databázový systém uveden na trh, a to ve spojení s rodinou počítačů IBM System/360s.
Tyto zmíněné databázové systémy (stejně jako řada dalších od nich odvozených) byly dostatečně výkonné a robustní, takže pokud jde o řešení databází, vytvořily status quo, které trvalo dlouhá léta.
Ted Codd, v němž studium celulárních automatů zanechalo smysl pro abstraktní vyjádření, byl přesvědčený, že databázové systémy by mohly pracovat daleko efektivněji, pokud by byly založeny na relačním modelu vycházejícím z teorie množin. Základem jeho modelu je tedy matematické zobecnění pojmu soubor pomocí silného formalismu matematické relace a využívání operací relační algebry.
Codd popsal svůj koncept v článku nazvaném Relační model pro data ve velkých sdílených databankách (A Relational Model of Data for Large Shared Data Banks, 1970), v němž ukázal, že pomocí základních operací (sjednocení, kartézský součin, rozdíl, selekce, projekce a spojení) lze vlastně uskutečnit veškeré operace s daty, přičemž ostatní operace je možné odvodit z kombinace této základní pětice.
Osudné zaváhání
Když Codd v IBM navrhl nový model pro organizaci a práci s daty, setkal se s nepochopením. Vedení firmy považovalo tento návrh pouze jako případnou okrajovou alternativu, intelektuální kuriozitu, která nemá valné praktické využití. Tento názor podporoval fakt, že produkt IMS byl již zavedený, žádaný, a tedy i komerčně úspěšný. Nebyl zkrátka důvod, aby se investovalo do nového databázového systému. Proto vývoj první relační databáze nazvané System R, na němž se Codd se svými spolupracovníky podílel, zůstal v IBM okrajovou záležitostí.
I tak ovšem tato skupina dosáhla značného pokroku. Původní System R byl v první polovině sedmdesátých let testován s daty o objemu 8 MB. System R (a stejně tak i Inges, o němž bude řeč dále) vytvořil základní model pro relační databázi. Jak už bylo předesláno, relační datový model se odklonil od metod provázaných seznamů jednotlivých záznamů a navrhl jako základní jednotku relační tabulku. Data rozložená do více tabulek (relací) jsou tak provázána klíčovými hodnotami a pro manipulaci s nimi lze použít relační algebru založenou na pěti výše zmíněných základních operacích. Toto řešení odstranilo problémy sekvenčního přístupu a obtížné změny datové struktury, s nimiž se potýkaly systémy založené na síťovém a hierarchickém modelu. Klíčovou výhodou se pak stal i dotazovací jazyk, který vznikal ruku v ruce s prací na projektu System R. Záměrem bylo vytvořit jazyk, v němž by se příkazy tvořily syntakticky co nejblíže přirozenému jazyku, resp. angličtině; tento jazyk se rodil ze sady používaných příkazů a byl zprvu označován jako SEQUEL (Structured English Query Language). Krátce poté, co Codd a jeho spolupracovníci v roce 1976 zveřejnili popis jazyka SEQUEL2, byl název změněn na dnes již všeobecně známou zkratku SQL (Structured Query Language).
Mezitím se ledy pohnuly a databázový systém založený na relačním modelu se začínal dostávat do ohniska pozornosti řady počítačových vědců. Největší vliv na pozdější vývoj měl tzv. Project Ingres, relační databáze geografických údajů, jež pod vedením Michaela Stonebrakera a Eugena Wonga vznikala na Kalifornské univerzitě v Berkeley.
Skutečnost, že byrokraticky řízený kolos IBM nedokázal Coddův výzkum dlouhou dobu využít, nahrála ostatním výzkumníkům, zejména skupině z Kalifornské univerzity v Berkeley. Dvojice Stonebraker a Wong založila koncem sedmdesátých let společnost Ingres Corporation, která v roce 1980 představila relační databázový systém Ingres. Robert Epstein, jeden ze členů Stonebrakerovy skupiny, se o čtyři roky později stal spoluzakladatelem společnosti Sybase, jedné z vůdčích firem zaměřených na RDBMS (Relational Database Management System), která např. uvedla první klient-server relační databáze. Illustra, Informix Corporation či Versta, to jsou jen některé z firem, jejichž vznik inicioval výzkum relačních databází na univerzitě v Berkeley.
A pak tu byl také Larry Ellison, programátor a dravý podnikatel, který vytvořil databázové systémy Oracle na základě výzkumů Coddovy skupiny a po nedlouhé době se jeho podnik stal jednou z nejmocnějších firem v Silicon Valley. Codd ovšem nebyl podnikatel, nýbrž vědec. Na jím formulovaných základech pracuje dnes většina databázových systémů, jako jsou Google nebo Amazon.com, a prostřednictvím databázového enginu SQLite i aplikace v mobilních telefonech či tabletech.
Coddova pravidla
Edgar Codd v roce 1985 publikoval dvanáct pravidel, která mají splňovat databázové systémy založené na relačním modelu dat. Jejich znění je následující:
Informační pravidlo: všechna data musejí být reprezentována jako hodnoty v tabulkách.
Pravidlo zajišťující přístup: každá hodnota musí být dosažitelná pomocí názvu tabulky, názvu sloupce a klíče.
Zpracování neznámých hodnot: neznámé (NULL) hodnoty jsou podporovány pro vyjádření neznámé informace, a to nezávisle na datovém typu.
Popis relačního katalogu: Popis celé databáze je na logické úrovni reprezentován stejně jako běžná data, tedy také jako tabulka.
Pravidlo pro jazyk: musí existovat alespoň jeden jazyk, který podporuje DDL, DML, integritní omezení, práci s transakcemi a autorizaci.
Pravidlo pohledů: všechny pohledy, které jsou teoreticky aktualizovatelné, jsou také systémem aktualizovatelné.
Pravidlo operací: schopnost zpracování relace jako operandu je zachována nejen při čtení dat, ale i u vkládání, aktualizace a odstranění dat.
Pravidlo fyzické nezávislosti dat: výsledky operací jsou nezávislé na fyzické datové struktuře.
Pravidlo logické nezávislosti dat: výsledky operací jsou nezávislé na změně logické struktury.
Pravidlo nezávislosti dat na integritních omezeních: integritní omezení musí být definovatelná prostředky relační databáze a musí být uchovatelná v katalogu a ne v aplikačním programu.
Pravidlo nezávislosti dat na distribuci: výsledky operací jsou nezávislé na konkrétním rozmístění dat v distribuované databázi.
Pravidlo nenarušitelnosti SŘBD: žádný uživatel (ani aplikace) nesmí obcházet ani narušovat rozhraní SŘBD.
Edgar Frank („Ted“) Codd (1923–2003), britský počítačový vědec; autor relačního modelu pro databázový management. Vystudoval matematiku a chemii na Oxfordské univerzitě. Během 2. světové války sloužil jako pilot RAF. Po válce se přestěhoval do Spojených států, kde začal pracovat pro společnost IBM. Na Michiganské univerzitě dokončil doktorské studium počítačové vědy. V polovině šedesátých let začal působit ve výzkumném středisku společnosti IBM v San José (IBM Almaden Research Center), kde se zabýval návrhem nového způsobu řízení databázových systémů a na základě poznatků z teorie množin navrhl systém pro řízení báze dat založený na relačním modelu. Společně se svým týmem v 70. letech vytvořil prototyp tohoto systému (System R) a dotazovací jazyk SQL. Z této výzkumné práce vychází většina moderních databázových systémů. Codd se rovněž zabýval celulárními automaty a návrhem samoreplikujících se systémů, zasloužil se také o vznik technologie OLAP (Online Analytical Processing), využívané v systémech business intelligence. Je autorem řady vědeckých článků a knihy Celulární automaty (Cellular Automata, 1968). Za přínos k rozvoji databázových technologií získal v roce 1981 Turingovu cenu. Na jeho počest uděluje SIGMOD (Special Interest Group on Management of Data), skupina v rámci ACM, od roku 2004 cenu Edgara F. Codda (E. F. Codd Innovations Award).