OpenOffice.org Základní systém pro správu databází.
Počítačová databáze je znalostní struktura, sbírka záznamů nebo dat, která je uložena v počítačovém systému. Databáze se spoléhá na software, který organizuje ukládání dat a umožňuje osobě nebo programu v počítačovém vyhledávání a vyhledávání informací v úlohách. Termín „databáze“ odkazuje na shromažďování souvisejících záznamů a software by měl být označován jako systém správy databáze (DBMS); ten je někdy zkrácen na správce databáze nebo databázový systém. Odkazovat na software jako na databázi (jako v „databázi OpenOffice“) je nesprávné, ale ne neobvyklé.
Typicky pro danou databázi existuje strukturální popis typu faktů uchovávaných v této databázi: tento popis je znám jako schéma. Schéma popisuje objekty, které jsou v databázi zastoupeny, a vztahy mezi nimi. Existuje řada různých způsobů uspořádání schématu, tedy modelování struktury databáze: ty jsou známé jako databázové modely (nebo datové modely). Model, který se dnes nejčastěji používá, je relační model. Jiné modely, jako je hierarchický model a síťový model, používají explicitnější reprezentaci vztahů (vysvětlení různých databázových modelů viz níže).
Systémy pro správu databází jsou obvykle kategorizovány podle databázového modelu, který podporují. Datový model má tendenci určovat dotazovací jazyky, které jsou k dispozici pro přístup k databázi. Velká část interního inženýrství DBMS je však nezávislá na datovém modelu a zabývá se správou faktorů, jako je výkon, souběžnost, integrita a zotavení z hardwarových selhání. V těchto oblastech existují velké rozdíly mezi produkty.
Nejstarší známé použití termínu databáze bylo v listopadu 1963, kdy společnost System Development Corporation sponzorovala sympozium pod názvem Development and Management of a Computer-centered Data Base. Databáze jako jediné slovo se v Evropě stala běžnou na počátku 70. let a na konci desetiletí se začala používat ve velkých amerických novinách. (Zkratka DB se však dochovala.)
První systémy pro správu databází byly vyvinuty v šedesátých letech. Průkopníkem v této oblasti byl Charles Bachman. Bachmanovy rané práce ukazují, že jeho cílem bylo efektivnější využití nových paměťových zařízení přímého přístupu, která byla k dispozici: do té doby bylo zpracování dat založeno na děrných štítcích a magnetických páskách, takže dominantní činností bylo sériové zpracování. V této době vznikly dva klíčové datové modely: CODASYL vyvinul síťový model založený na Bachmanových myšlenkách a (zřejmě nezávisle) hierarchický model byl použit v systému vyvinutém společností North American Rockwell, který později přijala IBM jako základní kámen jejich produktu IMS. Zatímco IMS spolu s CODASYL IDMS byly velké, dobře viditelné databáze vyvinuté v šedesátých letech, v této dekádě se zrodilo i několik dalších, z nichž některé mají dnes významnou instalovanou základnu. Za zmínku stojí dvě databáze PICK a MUMPS, přičemž první byla původně vyvinuta jako operační systém s vestavěnou databází a druhá jako programovací jazyk a databáze pro rozvoj systémů zdravotní péče.
Relační model byl navržen E. F. Coddem v roce 1970. Kritizoval existující modely za zaměňování abstraktního popisu informační struktury s popisem fyzických přístupových mechanismů. Dlouhou dobu však relační model zůstával pouze akademickým zájmem. Zatímco produkty CODASYL (IDMS) a produkty síťových modelů (IMS) byly koncipovány jako praktická inženýrská řešení s přihlédnutím k technologii, jak v té době existovala, relační model zaujal mnohem více teoretický pohled a argumentoval (správně), že hardwarová a softwarová technologie je časem dožene. Mezi prvními implementacemi byly Ingres Michaela Stonebrakera v Berkeley a projekt System R v IBM. Oba tyto prototypy byly výzkumnými prototypy, oznámenými během roku 1976. První komerční produkty, Oracle a DB2, se objevily až kolem roku 1980. Prvním úspěšným databázovým produktem pro mikropočítače byl dBASE pro operační systémy CP/M a PC-DOS/MS-DOS.
Během 80. let se výzkumná činnost zaměřovala na distribuované databázové systémy a databázové stroje, ale tento vývoj měl na trh jen malý vliv. Další důležitou teoretickou myšlenkou byl funkční datový model, ale kromě některých specializovaných aplikací v genetice, molekulární biologii a vyšetřování podvodů si toho svět příliš nevšímal.
Pro modelování struktury dat se používají různé techniky.
Většina databázových systémů je postavena na jednom konkrétním datovém modelu, i když je stále běžnější, že produkty nabízejí podporu pro více než jeden model. Pro každý jeden logický model mohou být možné různé fyzické implementace a většina produktů nabídne uživateli určitou úroveň kontroly při ladění fyzické implementace, protože provedené volby mají významný vliv na výkon. Příkladem je relační model: všechny seriózní implementace relačního modelu umožňují vytvoření indexů, které poskytují rychlý přístup k řádkům v tabulce, pokud jsou známy hodnoty určitých sloupců.
V hierarchickém modelu jsou data uspořádána do stromové struktury, což znamená, že v každém záznamu je jeden odkaz nahoru, který popisuje vnoření, a třídící pole, které uchovává záznamy v určitém pořadí v každém seznamu stejné úrovně.
Síťový model má tendenci ukládat záznamy s odkazy na jiné záznamy. Přidružení jsou sledována pomocí „ukazatelů“. Těmito ukazateli mohou být čísla uzlů nebo adresy disků. Většina síťových databází má tendenci také obsahovat nějakou formu hierarchického modelu.
Příklady databázových enginů, které mají schopnosti síťového modelu, jsou RDM Embedded a RDM Server.
V relačních databázových modelech se hojně používají tři klíčové pojmy: relace, atributy a domény. Relace je tabulka se sloupci a řádky. Pojmenované sloupce relace se nazývají atributy a doména je množina hodnot, které mohou atributy nabývat.
Základní datovou strukturou relačního modelu je tabulka, kde jsou informace o konkrétní entitě (například zaměstnanci) zastoupeny ve sloupcích a řádcích (také nazývaných tuples). Tedy „relace“ v „relační databázi“ odkazuje na různé tabulky v databázi; relace je množina tuplů. Sloupce obsahují výčet různých atributů entity (například jméno, adresa nebo telefonní číslo zaměstnance) a řádek je aktuální instancí entity (konkrétního zaměstnance), která je reprezentována relací. Výsledkem je, že každá tupla tabulky zaměstnance představuje různé atributy jednoho zaměstnance.
Všechny relace (a tedy i tabulky) v relační databázi musí dodržovat některá základní pravidla, aby se kvalifikovaly jako relace. Za prvé, pořadí sloupců je v tabulce nepodstatné. Za druhé, v tabulce nemohou být identické n-tice nebo řádky. A za třetí, každá n-tice bude obsahovat jednu hodnotu pro každý ze svých atributů, tj. každá n-tice má atomovou hodnotu.
Relační databáze obsahuje více tabulek, z nichž každá je podobná té v „plochém“ databázovém modelu. Jednou ze silných stránek relačního modelu je, že v zásadě každá hodnota vyskytující se ve dvou různých záznamech (patřících do stejné tabulky nebo do různých tabulek) implikuje vztah mezi těmito dvěma záznamy. Pro vynucení explicitních omezení integrity však mohou být vztahy mezi záznamy v tabulkách definovány také explicitně, a to identifikací nebo neidentifikováním vztahů mezi rodičem a dítětem charakterizovaných přiřazením kardinality (1:1, (0) 1:M, M:M). Tabulky mohou mít také určený jediný atribut nebo sadu atributů, které mohou fungovat jako „klíč“, který může být použit pro jednoznačnou identifikaci každé tuple v tabulce.
Klíč, který lze použít k jednoznačné identifikaci řádku v tabulce, se nazývá primární klíč. Klíče se běžně používají ke spojení nebo kombinování dat ze dvou nebo více tabulek. Například tabulka Zaměstnanec může obsahovat sloupec s názvem Umístění, který obsahuje hodnotu odpovídající klíči tabulky Umístění. Klíče jsou také kritické při vytváření indexů, které usnadňují rychlé načítání dat z velkých tabulek. Každý sloupec může být klíčem nebo lze seskupit více sloupců do složeného klíče. Není nutné předem definovat všechny klíče; sloupec lze použít jako klíč i v případě, že jím původně neměl být.
Uživatelé (nebo programy) požadují data z relační databáze tak, že jí zašlou dotaz, který je napsán ve speciálním jazyce, obvykle dialektu SQL. Ačkoli SQL byl původně určen pro koncové uživatele, je mnohem běžnější, že SQL dotazy jsou vloženy do softwaru, který poskytuje jednodušší uživatelské rozhraní. Mnoho webových stránek, jako například Wikipedia, provádí SQL dotazy při generování stránek.
V odpovědi na dotaz databáze vrací množinu výsledků, což je jen seznam řádků obsahujících odpovědi. Nejjednodušší dotaz je jen vrátit všechny řádky z tabulky, ale častěji jsou řádky nějakým způsobem filtrovány, aby vrátily jen požadovanou odpověď. Často jsou data z více tabulek spojena do jedné, a to spojením. Kromě spojení existuje řada relačních operací.
Vztahy jsou klasifikovány podle typů anomálií, vůči kterým jsou zranitelné. Databáze, která je v první normální formě, je zranitelná vůči všem typům anomálií, zatímco databáze, která je v doménové/klíčové normální formě, nemá žádné modifikační anomálie. Normální formy jsou svou povahou hierarchické. To znamená, že nejnižší úroveň je první normální forma a databáze nemůže splnit požadavky na vyšší úroveň normálních forem, aniž by nejprve splnila všechny požadavky nižší normální formy.
Postrelační databázové modely
Několik produktů bylo identifikováno jako postrelační, protože datový model zahrnuje relace, ale není omezen informačním principem, který vyžaduje, aby všechny informace byly reprezentovány datovými hodnotami v relacích. Produkty používající postrelační datový model obvykle používají model, který ve skutečnosti předchází relačnímu modelu. Ty mohou být identifikovány jako řízený graf se stromy na uzlech.
Příklady modelů, které by mohly být klasifikovány jako postrelační, jsou PICK aka MultiValue a MUMPS.
V posledních letech se v databázové technologii uplatňuje objektově orientované paradigma, které vytváří nový programovací model známý jako objektové databáze. Tyto databáze se snaží přiblížit databázový svět a aplikační programovací svět, zejména tím, že zajišťují, aby databáze používala stejný typový systém jako aplikační program. To má za cíl vyhnout se režii (někdy označované jako impedanční nesoulad) při převodu informací mezi jejich reprezentací v databázi (například jako řádky v tabulkách) a jejich reprezentací v aplikačním programu (typicky jako objekty). Objektové databáze se zároveň snaží zavést do světa databází klíčové myšlenky objektového programování, jako je zapouzdření a polymorfismus.
Pro ukládání objektů do databáze byla vyzkoušena celá řada těchto způsobů. Některé produkty přistupují k problému z programovacího konce aplikace tak, že objekty manipulované programem jsou trvalé. To také obvykle vyžaduje přidání nějakého druhu dotazovacího jazyka, protože konvenční programovací jazyky nemají schopnost vyhledávat objekty na základě jejich informačního obsahu. Jiné zaútočily na problém z databázového konce tím, že definovaly objektově orientovaný datový model pro databázi a definovaly databázový programovací jazyk, který umožňuje plné programovací schopnosti i tradiční dotazovací prostředky.
Sémantický model byl nezávisle navržen různými výzkumníky a analytiky, ale žádná reálná implementace zatím neexistuje.
Návrh úložiště a fyzické databáze
Tato sekce je pahýl. Můžete pomoci tím, že do ní přidáte.
Databázové tabulky/indexy jsou obvykle uloženy v paměti nebo na pevném disku v jedné z mnoha forem, uspořádané/neuspořádané ploché soubory, ISAM, haldy, hašovací kbelíky nebo B+ stromy. Ty mají různé výhody a nevýhody, o kterých se dále pojednává v hlavním článku na toto téma. Nejčastěji používané jsou B+ stromy a ISAM.
Další důležité návrhové volby se týkají seskupování dat podle kategorií (například seskupování dat podle měsíce nebo umístění), vytváření předvypočítaných pohledů známých jako materializované pohledy, dělení dat podle rozsahu nebo hash. Stejně tak správa paměti a topologie úložiště mohou být důležitými návrhovými volbami pro návrháře databází. Stejně jako se normalizace používá ke snížení požadavků na úložiště a zlepšení rozšiřitelnosti databáze, naopak denormalizace se často používá ke snížení složitosti spojení a zkrácení doby provádění dotazů.
Všechny tyto databáze mohou využít indexování ke zvýšení své rychlosti a tato technologie se od svého počátečního použití v 60. a 70. letech ohromně rozvinula. Nejběžnějším druhem indexu je seřazený seznam obsahu určitého sloupce tabulky s ukazateli na řádek spojenými s hodnotou. Index umožňuje rychle lokalizovat sadu řádků tabulky odpovídající nějakému kritériu. Indexy se obvykle ukládají také do různých forem datové struktury zmíněných výše (jako jsou B-stromy, hashe a propojené seznamy). Obvykle je projektantem databáze zvolena specifická technika ke zvýšení efektivity v konkrétním případě požadovaného typu indexu.
Relativní DBMSs mají tu výhodu, že indexy mohou být vytvořeny nebo vypuštěny, aniž by se měnily existující aplikace, které by je využívaly. Databáze si vybírá mezi mnoha různými strategiemi, na základě které odhaduje, že jedna z nich poběží nejrychleji. Jinými slovy, indexy jsou průhledné pro aplikaci nebo koncového uživatele dotazující se na databázi; zatímco ovlivňují výkon, jakýkoli SQL příkaz poběží s indexy existujícími v databázi nebo bez nich.
Relační DBMS využívají mnoho různých algoritmů pro výpočet výsledku SQL příkazu. RDBMS vytvoří plán, jak provést dotaz, který je generován analýzou doby běhu různých algoritmů a výběrem nejrychlejšího. Některé klíčové algoritmy, které se zabývají spojeními, jsou vnořené spojení smyčky, spojení třídění-sloučení a spojení hash. Který z nich je vybrán, závisí na tom, zda index existuje, jaký je to typ a jeho mohutnost.
Index urychluje přístup k datům, ale má i nevýhody. Zaprvé, každý index zvyšuje množství úložiště na pevném disku potřebné pro databázový soubor, a zadruhé, index musí být aktualizován pokaždé, když jsou data pozměněna, a to stojí čas.
(Index tedy šetří čas při čtení dat, ale stojí čas při zadávání a pozměňování dat. Záleží tedy na tom, k jakému účelu mají být data použita, zda je index celkově čisté plus nebo minus ve snaze o efektivitu.)
Zvláštním případem indexu je primární index, nebo primární klíč, který se rozlišuje v tom, že primární index musí zajistit jedinečný odkaz na záznam. Často se pro tento účel jednoduše používá číslo běžícího indexu (ID číslo). Primární indexy hrají významnou roli v relačních databázích a mohou výrazně urychlit přístup k datům.
Transakce a souběh
Kromě datového modelu se většina praktických databází („transakční databáze“) pokouší vynutit databázovou transakci . V ideálním případě by databázový software měl vynutit pravidla ACID, shrnuto zde:
V praxi mnoho DBMS umožňuje, aby většina těchto pravidel byla selektivně uvolněna pro lepší výkon.
Řízení souběžnosti je metoda používaná k zajištění toho, aby transakce byly prováděny bezpečným způsobem a dodržovaly pravidla ACID. DBMS musí být schopen zajistit, aby byly povoleny pouze serializovatelné, obnovitelné plány a aby při rušení přerušených transakcí nebyly ztraceny žádné akce odevzdaných transakcí .
Paralelní synchronní replikace databází umožňuje replikovat transakce na více serverech současně, což poskytuje metodu pro zálohování a zabezpečení, stejně jako dostupnost dat.
Zabezpečení databáze označuje systém, procesy a postupy, které chrání databázi před nezamýšlenou činností.
Ve Spojeném království právní předpisy chránící veřejnost před neoprávněným zveřejněním osobních údajů uchovávaných v databázích spadají pod Office of the Information Commissioner. Organizace se sídlem ve Spojeném království, které uchovávají osobní údaje v elektronickém formátu (například databáze), se musí registrovat u Data Commissioner. (odkaz: )
Tato část je pahýl. Pomoci můžete tím, že do ní přidáte.
Uzamčení je akt umístění zámku (omezení přístupu) na určitý aspekt databáze, který je v dané instanci upravován. Takové zámky lze použít na úrovni řádku nebo na jiných úrovních, jako je celá tabulka. To pomáhá udržovat integritu dat tím, že zajišťuje, aby data mohl upravovat vždy pouze jeden uživatel. Databáze lze uzamknout i z jiných důvodů, jako je omezení přístupu pro dané úrovně uživatelů.
Databáze jsou uzamčeny také pro běžnou údržbu databáze, která zabraňuje provádění změn během údržby. Podrobnější informace naleznete v IBM.
V závislosti na zamýšleném použití se používá celá řada databázových architektur. Mnoho databází používá kombinaci strategií.
On-line systémy pro zpracování transakcí (OLTP) často používají architekturu datového úložiště orientovanou na řádky, zatímco datové úložiště a další aplikace zaměřené na vyhledávání, jako je BigTable od Googlu, nebo bibliografické databázové systémy (katalog knihoven) mohou používat architekturu datového úložiště orientovanou na sloupce.
Dokumentově orientované, XML, Knowledgebases, stejně jako databáze rámců a rdf-stores (alias Triple-Stores) mohou také ve své implementaci využít kombinaci těchto architektur.
Závěrem je třeba poznamenat, že ne všechny databáze mají nebo potřebují databázové „schéma“ (tzv. schema-less databáze).
Databáze se používají v mnoha aplikacích, které pokrývají prakticky celou škálu počítačového softwaru. Databáze jsou preferovanou metodou ukládání pro velké multiuživatelské aplikace, kde je nutná koordinace mezi mnoha uživateli. I jednotliví uživatelé je považují za pohodlné a mnoho programů pro elektronickou poštu a osobních organizátorů je založeno na standardní databázové technologii. Softwarové databázové ovladače jsou dostupné pro většinu databázových platforem, takže aplikační software může k načtení informací uložených v databázi používat společné aplikační programovací rozhraní. Dvě běžně používaná databázová API jsou JDBC a ODBC.
Mediální teoretik Lev Manovič popsal, jak se databáze, ač původně počítačová technologie, stává sama o sobě novou kulturní formou a žánrem nových médií . Kulturní forma je jedním z mnoha způsobů, jak lidé reprezentují svět – například umění a literaturu. Manovič se domnívá, že současná kultura je postupně „počítačově řízena“ a tradiční kulturní formy jsou nahrazovány novými, které se odvozují od počítače. Databáze je podle něj korelací počítačového věku s románem (či vyprávěním) jako klíčovou formou kulturního projevu.
Katherine Haylesová v reakci na to tvrdí, že narativ a databáze nejsou v opozici, ale jsou spíše přirozenými symbionty.
Literární kritik Ed Folsom rozšířil Manovichovu diskusi o databázi o tvrzení, že databáze se stává novým literárním žánrem, „žánrem jedenadvacátého století“, současným ekvivalentem starověkého eposu.