Hlavní navigace

Příchod hackerů: otec databází

16. 8. 2016
Doba čtení: 7 minut

Sdílet

Náš svět je světem databází – moderní výroba, obchod, vzdělávání, státní správa, oběh peněz – nic z toho by bez nich již nedokázalo fungovat. Jak se zrodily databáze pracující s jazkem SQL.

Za zrod obojího vděčíme Tedu Coddovi, matematikovi a počítačovému vědci, který se rozhodl nespokojit s tím, jak fungovaly hierarchické databázové systémy vyvinuté v 60. letech v IBM. Jestliže Charles Bachman byl praotcem databází, Tedu Coddovi patří titul otce jejich současné podoby.

Nespokojenost a neochota smířit se s věcmi „tak, jak jsou“ do značné míry definuje celý Coddův život. Edgar Frank Codd se narodil v létě roku 1923 na ostrůvku Portland u pobřeží půvabného jihoanglického hrabství Dorset. Byl nejmladším ze sedmi dětí, jeho otec měl malou firmu na zpracování kůže a matka učila na místní základní škole. Jako nadaný student, zejména co se matematiky týče, získal poměrně snadno stipendium na Oxfordu, kde se ale nejprve zaměřil vedle matematiky na chemii. Během druhé světové války vstoupil jako dobrovolník do britského královského letectva a stal se pilotem. Ani po návratu do Oxfodu se ale nezaměřil na počítače – jeho oborem zůstávala matematika, kterou zde dokončil a poté se vydal za svou snoubenkou do USA. Poznal ji během válečných let, kdy jej RAF vyslala za Atlantik v rámci jeho pilotního výcviku, a tak se po dostudování prakticky ihned odstěhoval za oceán, kde mohl nejen létat, ale jako matematik také získat zajímavější místo.

To se mu podařilo už v roce 1949, kdy uspěl v matematické soutěži vyhlášené IBM a záhy se tak stal programátorem elektromechanických počítačů IBM SSEC a děrnoštítkových kalkulátorů. Na počátku 50. let byl součástí týmu pracujícího na vývoji prvního vědeckého počítače IBM, modelu 701. S počátkem padesátých let se ale pojí i počátek McCarthyismu – prostředí, které Codd nemohl vystát, a tak se v roce 1953 rozhodl odejít i s rodinou do Kanady, kde pracoval na vývoji systémů pro řízené střely. Už v roce 1957 se ale vrací do IBM a pracuje v týmu navrhujícím superpočítač STRETCH, zejména v oblasti multiprogramování, tedy schopnosti provozovat několik programů současně.

Edgar Frank „Ted“ Codd

Edgar Frank „Ted“ Codd

Databáze na měsíc a zpět

Na počátku 60. let udělilo Coddovi IBM stipendium aby se mohl věnovat studiu komunikačních věd na univerzitě v Michiganu. Svou doktorskou obhajobu zpracoval na téma celulárních automatů a samoreplikujících se systémů. Navázal v této oblasti na práce Von Neumanna a značně jeho koncept zjednodušil (z 29 fází na pouhých 8). Jeho práce Cellular Automata byla publikována v roce 1968 – Coddovi bylo 45 let a pro normálního smrtelníka by mohlo jít o vrchol skvělé kariéry – Ted ale vlastně ještě ani nezačal. Sebereplikující se systémy, buněčné automaty či genetické programování byla sice „cool“ akademická témata, nicméně na sklonku 60. let už začínalo být jasné, že příslib brzkého zrodu počítačové inteligence je ještě poměrně daleko. A tak se Codd rozhodl zaměřit na praktičtější oblast a ještě téhož roku přešel do výzkumné laboratoře IBM v San Jose, kde začal se věnovat problematice databází.

Z pohledu jeho kolegů v IBM se mohlo zdát, že Codd hledá klidné místo. Právě v roce 1968 totiž „modří“ uvedli jako novinku na trh svou obří hierarchickou databázi IMS (Information Management System) – pochopitelně pro svůj tehdy veleúspěšný Systém/360. Ta se zrodila jako součást měsíčního programu Apollo – společně s IBM na ní pracovali lidé z Rockwellu a Caterpillaru, protože potřebovali softwarový nástroj pro obrovský kusovník raket Saturn V. IMS nebyla (i s ohledem na svůj původ a určení) databází navigační a neodpovídala specifikacím CODASYLu, využívala ale některé prvky IDS Charlese Bachmana. Tak či onak, IBM považovalo IMS za špičkový produkt, který by jistě bylo možné postupně vylepšovat, rozhodně ale není třeba provádět zásadní revizi jeho podstaty. Codd to viděl jinak. Prakticky všechny databáze, které byly na konci 60. let na trhu, byly podle něj neohrabané, neuspořádané a především uživatelsky nepřátelské, spravovatelné jen zkušenými specialisty – bez ohledu na obrovský posun vpřed, který přinesla standardizace CODASYLem. V roce 1969 zpracoval Codd interní zprávu, v níž se objevila věta, jež se stala mottem zrodu nové generace databází:

Budoucí uživatelé velkých datových bank musí být ochráněni před povinnosti vědět, jak jsou data uspořádána ve stroji samotném.

O rok později shrnul své poznatky a vlastní teorii o uspořádání dat do studie „Relační datový model pro velké sdílené datové banky“. Popis relačního datového modelu jsme si vypůjčili z českého překladu hesla na Wikipedii:

Dle relační teorie lze pomocí základních operací (sjednocení, kartézský součin, rozdíl, selekce, projekce a spojení) uskutečnit veškeré operace s daty a ostatní operace jsou již jen kombinacemi těchto šesti. Zavádí tedy použití relačního kalkulu a algebry. Databáze mají být nezávislé na fyzickém uložení dat i na použitém jazyce.

Základním konstruktorem relačních databází jsou relace (databázové tabulky), což jsou dvourozměrné struktury tvořené záhlavím a tělem. Jejich sloupce se nazývají atributy, řádky tabulky jsou pak záznamy. Atributy mají určen svůj konkrétní datový typ a doménu, což je množina přípustných hodnot daného atributu. Řádek je řezem přes sloupce tabulky a slouží k vlastnímu uložení dat.

Pojem „relační databáze“ souvisí s teorií množin. Každá konkrétní tabulka totiž realizuje podmnožinu kartézského součinu množin přípustných hodnot všech sloupců – relaci.

Výběr pasáží z hesla Relační databáze na Wikipedii.

V relačním modelu jsou vztahy v záznamech propojeny společným „klíčem“
Autor: Wikipedia

V relačním modelu jsou vztahy v záznamech propojeny společným „klíčem“

Coddovy práce si začali všímat výrobci počítačů i software a po několika měsících bylo jasné, že jedinou firmou, která o myšlenku relačních databází nejeví valný zájem je paradoxně IBM – koneckonců databáze IMS byla obchodním úspěchem, tak proč opravovat něco co zjevně funguje. V IBM sice zafinancovali vývoj relační databáze Systém R v rámci skupiny projektů Future Systems, vše ale bohužel bylo zadáno skupině programátorů, nad kterou neměl Codd kontrolu. Ti proto nepoužili jím navržený jazyk Alpha, ale vyvinuli pro definování a ovládání databáze jazyk vlastní pod označením SEQUEL (Structured English Query Language), ten byl později doplněn a rozšířen jako SEQUEL2 – a protože tento název vlastnilo IBM, verze, které se začaly šířit v produktech jiných výrobců, byly nakonec označeny SQL.

Zaváhání IBM totiž dalo příležitost jiným – ať už šlo o akademický projekt Ingres, nebo o zrod databázových softwarových gigantů. Codd sám nebyl podnikatel, ale akademik, a tak se snažil jen dohlédnout na to, aby jméno relačního datového modelu nebylo zneužito. V roce 1985 proto definoval dvanáct pravidel relačních databázových systémů:

CS24_early

  1. Informační pravidlo: Všechny informace v relační databázi jsou vyjádřeny explicitně na logické úrovni jediným způsobem – hodnotami v tabulkách.
  2. Pravidlo jistoty: Všechna data v relační databázi jsou zaručeně přístupná kombinací jména tabulky s hodnotami primárního klíče a jménem sloupce.
  3. Systematické zpracování nulových hodnot: Nulové hodnoty jsou plně podporovány relačním SŘBD pro reprezentaci informace, která není definována, a to nezávisle na datovém typu.
  4. Dynamický on-line katalog založený na relačním modelu: Popis databáze je vyjádřen na logické úrovni stejným způsobem jako zákaznická data, takže autorizovaný uživatel může aplikovat stejný relační jazyk ke svému dotazu jako uživatel při práci s daty.
  5. Obsáhlý datový podjazyk: Relační systém může podporovat několik jazyků a různých módů použitých při provozu terminálu. Nicméně musí být nejméně jeden příkazový jazyk s dobře definovanou syntaxí, který obsáhle podporuje definici dat, definici pohledů, manipulaci s daty jak interaktivně, tak programem, integritní omezení, autorizovaný přístup k databázi, transakční příkazy apod.
  6. Pravidlo vytvoření pohledů: Všechny pohledy, které jsou teoreticky možné, jsou také systémem vytvořitelné.
  7. Schopnost vkládání, vytvoření a mazání: Schopnost zachování relačních pravidel u základních i odvozených relací je zachována nejen při pohledu na data, ale i při operacích průniku, přidání a mazání dat.
  8. Fyzická datová nezávislost: Aplikační programy jsou nezávislé na fyzické datové struktuře.
  9. Logická datová nezávislost: Aplikační programy jsou nezávislé na změnách v logické struktuře databázového souboru.
  10. Integritní nezávislost: Integritní omezení se musí dát definovat prostředky relační databáze nebo jejím jazykem a musí být schopna uložení v katalogu a nikoliv v aplikačním programu.
  11. Nezávislost distribuce: Relační SŘBD musí být schopny implementace na jiných počítačových architekturách.
  12. Pravidlo přístupu do databáze: Jestliže má relační systém jazyk nízké úrovně, pak tato úroveň nemůže být použita k vytváření integritních omezení a je nutno vyjádřit se v relačním jazyce vyšší úrovně.

(Zdroj: databázové modely)

Edgar Frank Codd, v té době již více než šedesátiletý, už mohl jen spokojeně sledovat, jak jeho relační model přebírá v rukou gigantů jako Oracle či Sybase (a nakonec i IBM) vládu nad světem databází a vlastně i nad všemi uspořádanými informacemi – jimž vládne, přes novinky jako je NoSQL, dodnes. To už jsou ale další příběhy příchodu hackerů. Ted Codd za svůj přínos světu informačních technologií získal v roce 1981 Turingovu cenu. Zemřel v roce 2003, ve věku nedožitých 80 let.

Odkazy

Byl pro vás článek přínosný?

Autor článku