Data (počítače)

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Data jsou v informatice veškeré informace v digitální (číselné) podobě určené k počítačovému zpracování. Data (např. číslo, text, obrázek, zvuk, zdrojový kód atd.) jsou zapsány (kódovány) v podobě posloupností čísel (bajtů) a uloženy např. v operační paměti počítače nebo na záznamovém médiu (pevný disk, CD, paměťová karta, internetový server ap.). Stejným způsobem je kromě dat uložený sled instrukcí tvořící počítačový program, který určuje, jak má počítač data zpracovávat.

Data se sice zapisují jako posloupnosti bajtů, ale lidsky přítulnější je uvažovat na vyšší úrovni abstrakce - např. data jsou obrázek, který je uložen v nějakém formátu. K datům (bajtům, bitům) taktéž potřebujeme informaci, co reprezentují (představte si dobře zkomprimovaný soubor); k tomu se používají metadata. Data se často shlukují a strukturují a databáze je nástroj pro uchovávání a zpracovávání větších množství dat. Operační systém počítače pracuje se soubory a stará se o ně prostřednictvím souborového systému.

V jiném pojetí se za data považuje binární soubor, který není lidmi čitelný, na rozdíl od lidmi čitelných textových souborů.[1] Ale (moderní) datové formáty jako SGML, XML a JSON dovolují zachycovat data ve více (či méně) lidsky čitelné podobě.

Celkový objem digitálních dat v roce 2007 byl odhadnut na 281 bilionů GB.[2][3]

Data vs. program[editovat | editovat zdroj]

Počítače v podstatě provádějí tok instrukcí, který dostanou. Řada instrukcí k vykonání úlohy (nebo úloh) se nazývá počítačový program, na nízké úrovni pak vykonatelný kód. Ten je pak vykonáván počítačem a je zapsán ve strojovém kódu. Části paměti, používané programem, které nejsou vykonávány procesorem, obsahují data. Obvykle se data měnit můžou a program se nemění. Striktní oddělení programu a dat (na nízké úrovni) je pragmatický přístup, který slouží i jako ochrana proti chybám softwaru a před úmyslnou snahou program změnit, resp. "vykonávat" data.

Typicky, různé soubory jsou používány na uchování programů nebo dat a rozlišují se konvencí pomocí přípon za tečkou. Spustitelné soubory obsahují programy; všechny ostatní soubory jsou datové. Přesto, spustitelné soubory mohou také obsahovat vestavěná data. V některých případech některé spustitelné soubory mají datový segment, který obsahuje konstanty a inicializační hodnoty, což jsou data. Knihovny (DLL) obsahují jak vykonatelné části, tak datové informace.

Například: uživatel může nejprve instruovat operační systém, aby načetl textový editor z jednoho souboru a následně editovat textový dokument uložený v jiném souboru. V tomto příkladě dokument obsahuje data. Pokud textový editor obsahuje i kontrolu pravopisu, pak jeho slovník (seznam slov) bude také obsahovat data. Algoritmus používaný kontrolou překlepů, navrhující opravy, by byl považován za programový kód.

Hranice mezi programem a daty může být (někomu) nejasná. Stejný soubor nebo část paměti může být podle způsobu použití data nebo program. Například interpret je program, kde vstupní data do interpretu jsou sama o sobě programový kód, jen nejsou vyjádřena v přirozeném počítačovém jazyce. V mnoha případech bude interpretovaný program v lidsky čitelné podobě (textový soubor), s nímž lze manipulovat v textovém editoru jako s přirozeným textem.

O vykonatelném kódu se často mluví i v případě, že je interpretován. Z technického pohledu jde o data interpretu, například shellu (sh, BAT). Ale protože ten interpret může podle těch dat vykonat skoro cokoli, z pohledu uživatele šlo o vykonání programu. Kompilátor, když generuje strojové instrukce, tak jsou to pro něj data. A JIT kompilátor taková data vygeneruje a pak je následně vykoná.

von Neumannova architektura[editovat | editovat zdroj]

V běžně používané von Neumannově architektuře můžeme bajty použít jako data nebo program. Kompilátor generuje budoucí spustitelný kód jako data a ta se pak spustí. Interpret čte data, která někteří uživatelé chápou jako zdroják (což není kód, ale jeho abstrakce), a při jeho interpretaci vykonává interpret svoje instrukce. Na nízké úrovni je bajt data neodlišitelný od bajtu kódu, na vyšší úrovni programovacích jazyků se pro shodný formát programu i dat používá pojem homoikonicita (angl. homoiconicity).

Formát[editovat | editovat zdroj]

Formát dat (v širokém smyslu, nejen souborů) je často standardizován, aby se počítače a programy domluvily. A aby se v tom vyznali i uživatelé, tak různé formáty souborů mají svoje konvenční přípony.

Neveřejné (binární) formáty nutily uživatele používat programy určitého výrobce. Otevřené formáty, často textové, odstraňují do určité míry tuto nepříjemnost.

Data v programovacích jazycích mají typ. Jednoduchý vestavěný nebo složený. Typ taky určuje, jak se kódují data do bitů (nebo bajtů) a teda jak se mají chápat bajty dat.

Klíče a hodnoty dat, struktury a persistence[editovat | editovat zdroj]

Klíče v datech poskytují kontext pro hodnoty. Data vždy obsahují nějaký klíč bez ohledu na jejich strukturu. Klíče jsou v datech a datových strukturách nezbytným prvkem, který dává datům jejich význam. Bez klíče, který je přímo nebo nepřímo spojen s hodnotou, nebo s kolekcí hodnot ve struktuře, přestávají mít hodnoty význam a přestávají být daty. Nutno říct, že je potřeba, aby byla alespoň klíčová komponenta spojena s hodnotou, aby se na to dalo pohlížet jako na data. Data mohou být v počítačích reprezentována různými způsoby, viz následující příklady:

RAM[editovat | editovat zdroj]

  • Hlavní paměť počítače nebo RAM je organizovaná jako pole sad elektronických spínačů nebo adres, které začínají na nule. Každá adresa může uložit byte (obvykle 8, 16, 32 nebo 64 bitů v závislosti na architektuře procesoru). Proto má každá hodnota uložená v RAM adresu, která je rovna odchylce od počáteční adresy. Např. na adrese 0+n, kde n je zmiňovaná odchylka.

Klíče[editovat | editovat zdroj]

  • Datové klíče nemusí být přímou hardwarovou adresou v paměti. Nepřímé, abstraktní a logické klíče mohou být uloženy společně s hodnotami, aby utvořily datové struktury. Datové struktury mají předdefinované odchylky (nebo linky nebo cesty) od začátku struktury, ve kterých jsou hodnoty dat uloženy. Proto se datový klíč skládá z klíče a odchylky (nebo linků nebo cest) struktury. Když se taková struktura opakuje, ukládání variací datových hodnot a klíčů ve stejné opakující se struktuře, na výsledek může být pohlíženo tak, že připomíná tabulku, v které je každý element opakující se struktury považován za sloupec a každé opakování struktury se považuje za řádek. V takové organizaci dat je datový klíč obvykle hodnotou (nebo složením hodnot v několika sloupcích) v některém sloupci.

Organizované rekurzivní datové struktury[editovat | editovat zdroj]

  • Dívat se na rekurzivní data jako na tabulku je pouze jeden z mnoha způsobů pohledu. Rekurzivní datové struktury mohou být organizované hierarchicky. To znamená, že všichni jejich členové jsou navzájem propojeny a mají mezi sebou vztah typu rodič potomek. Jednotlivé hodnoty a potencionálně složitější datové struktury jsou udržovány v jednotlivých uzlech. Takže stromová hierarchie poskytuje klíče k adresování datových struktur svázanými s jednotlivými uzly. Tato reprezentace může být myšlena jako B strom. Jako jeden z příkladů můžeme uvést například souborové systémy moderních operačních systémů, nebo třeba XML.

Setříděná a seřazená data[editovat | editovat zdroj]

  • Data nesou některé neodmyslitelné vlastnosti, pokud jsou tříděna podle klíče. Všechny hodnoty podmnožin, které mají stejný klíč, jsou zobrazeny pohromadě. Když sekvenčně procházíme skupiny dat se stejným klíčem, nebo se podmnožina klíče mění, tak to vede na zpracování dat v kruzích. To zejména usnadňuje agregaci dat na podmnožinách klíče.

Periferní úložiště[editovat | editovat zdroj]

  • Až do příchodu nevolatilních počítačových pamětí jako jsou USB flash disky, se jako persistentní datové úložiště tradičně využívalo zapisování dat do externích blokových zařízení jako jsou magnetické pásky a diskové jednotky. Tyto zařízení typicky hledají adresu na magnetickém médiu a potom čtou nebo zapisují bloky dat předem definované velikosti. V tomto případě je hledaná adresa na médiu datovým klíčem a bloky jsou datové hodnoty. První datové souborové systémy, nebo systémy operující s diskovou jednotkou rezervovaly sousedící bloky na diskové jednotce pro datové soubory. V těchto systémech se soubory mohou zaplnit. Může jim dojít místo ještě před tím, než se všechna data na jednotku stihnou zapsat. Ne tolik využívaný prostor pro data byl zarezervován neproduktivně, aby se předešlo vzniku této situaci. To bylo známé jako syrový disk. Pozdější souborové systémy představily oddíly. Ty rezervovaly bloky diskových dat pro oddíly a používaly alokované bloky více ekonomicky dynamickým přiřazováním bloků oddílu souborům, pro které to bylo potřeba. Aby toho bylo možné dosáhnout, tak musel souborový systém udržovat informace o tom, které bloky byly nebo nebyly využívány datovými soubory v katalogu nebo alokační tabulce pro soubory. Přes to, že to vedlo k lepšímu využití místa na diskové jednotce, tak z toho vzešla fragmentace souborů napříč celým diskem a současně snížení výkonu díky vysoké latenci. Moderní souborové systémy přeorganizovávají fragmentované soubory dynamicky, aby optimalizovaly čas přístupu k souborům. Další vývoj v souborových systémech vedl k virtualizaci diskových jednotek. Například tak, že jako logický disk může být definováno několik oddílů z různých fyzických diskových jednotek.

Indexovaná data[editovat | editovat zdroj]

  • Vybrání podmnožiny z velkého množství dat způsobuje sekvenční vyhledávání napříč daty. To je velmi neekonomické. Indexování je způsob vykopírování klíčů a skutečného umístění dat do datové struktury v souborech, tabulkách a dalších datových strukturách. Tato data mohou být reprezentovány pomocí B-stromu, aby se redukoval čas na obdržení dat vyhovujícím nějaké podmínce. Vzhledem k tomu musíme znát klíčové atributy podmnožiny dat, kterou chceme získat, ještě před započetím vyhledávání. Nejoblíbenější struktury pro indexaci dat jsou B-stromy a dynamické struktury, které pro indexování využívají hashovacích funkcí. Indexování dat má však celkem vysokou režii při vkládání a úpravách dat. Existují proto i jiné metody na organizaci indexů. Například řazení dat podle klíčových atributů (nebo dokonce klíčů a dat dohromady), a použití binárního vyhledávání.

Abstrakce a dereference[editovat | editovat zdroj]

  • Objektově orientované softwarové inženýrství používá dva základní koncepty pro porozumění datům a programu: 1) Systematicky ohodnocenou strukturu tříd, což je příklad hierarchické datové struktury; 2) Vytváření datových a klíčových referencí na datové struktury objektů v paměti, které jsou vytvářeny pomocí knihovních tříd za běhu programu. Poté, co je reference na klíč objektu zrušena, dojde také k zániku dat, na které klíč ukazoval a z toho důvodu dojde také k zániku objektu. Paměťové místa, kde byly data objektu uloženy, jsou následně vyčištěna pomocí garbage collectoru a označena jako nepoužitá. Jsou tedy připravena ke znovupoužití.

Databázová data[editovat | editovat zdroj]

Zpracování paralelně distribuovaných dat[editovat | editovat zdroj]

  • Moderní technologie pro škálování a výkonnou persistenci dat spoléhají na masivní paralelizaci při zpracování dat mezi mnoha databázovými stroji napříč datovou sítí s vysokou prostupností dat. Příkladem takové technologie může být například Apache Hadoop. V takových systémech jsou data distribuovaná napříč mnoha počítači. Poté jednotlivé stanice sítě musí být reprezentovány v klíči u dat: buď přímo, nebo nepřímo. To umožňuje odlišit dvě rozdílné sady dat, kde se každá zpracovává na jiném stroji ve stejném čase.

Reference[editovat | editovat zdroj]

  1. file(1) [online]. 2004-12-04, [cit. 2007-03-19]. (OpenBSD Manual Pages.) Dostupné online.  
  2. Paul, Ryan. Study: amount of digital info > global storage capacity. Parametr "periodikum" je povinný! Ars Technica, March 12, 2008. Dostupné online [cit. 2008-03-12].  
  3. Gantz, John F. et al.. The Diverse and Exploding Digital Universe [online]. International Data Corporation via EMC, 2008, [cit. 2008-03-12]. Dostupné online.  

Související články[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Data (computing) na anglické Wikipedii.