Datově orientovaný programovací jazyk - Data-centric programming language - Wikipedia
Datově orientovaný programovací jazyk definuje kategorii programovacích jazyků, kde primární funkcí je správa a manipulace s daty. Programovací jazyk zaměřený na data zahrnuje integrovaná primitiva zpracování pro přístup k datům uloženým v sadách, tabulkách, seznamech a dalších datových strukturách a databázích a pro specifickou manipulaci a transformaci dat požadovaných programovací aplikací. Typicky jsou to programovací jazyky zaměřené na data deklarativní a často orientovaný na tok dat a definovat požadovaný výsledek zpracování; konkrétní kroky zpracování potřebné k provedení zpracování jsou ponechány na překladači jazyků. The SQL jazyk relační databáze je příkladem deklarativního jazyka zaměřeného na data. Deklarativní, datově orientované programovací jazyky jsou ideální pro datově náročné výpočty aplikace.
Pozadí
Rychlý růst Internet a Celosvětová Síť vedlo k obrovskému množství informací dostupných online a k potřebě Velká data možnosti zpracování. Obchodní a vládní organizace vytvářejí velké množství strukturovaných i nestrukturovaný informace, které je třeba zpracovat, analyzovat a propojit.[1] Ukládání, správa, přístup a zpracování tohoto obrovského množství dat představuje základní potřebu a nesmírnou výzvu k uspokojení potřeb vyhledávání, analýzy, těžby a vizualizace těchto dat jako informací.[2] Deklarativní, datově orientované jazyky se těmito problémy stále více zabývají, protože zaměření na data činí tyto problémy mnohem jednodušší na vyjádření.[3]
Architektury počítačových systémů jako např Hadoop a HPCC které mohou podporovat datově paralelní aplikace, jsou potenciálním řešením požadavků na zpracování dat v terabajtovém a petabajtovém měřítku datově náročné výpočty.[4][5] K řešení problémů s Big Data se běžně používají klastry komoditního hardwaru.[6] Základní výzvy pro aplikace Big Data a datově náročné výpočty[7] spravují a zpracovávají exponenciálně rostoucí objemy dat, významně snižují související cykly analýzy dat a podporují praktické, včasné aplikace a vyvíjejí nové algoritmy, které lze škálovat a vyhledávat a zpracovávat obrovské objemy dat. Národní vědecká nadace identifikovala klíčové problémy související s datově náročnými výpočetními problémy, jako jsou programovací abstrakce včetně modelů, jazyků a algoritmů, které umožňují přirozené vyjádření paralelního zpracování dat.[8] Deklarativní, datově orientované programovací jazyky jsou vhodné pro tuto třídu problémů.
Programovací jazyky zaměřené na data poskytují přístup ke zpracování, ve kterém jsou aplikace vyjádřeny z hlediska operací na vysoké úrovni s daty a běhový systém transparentně řídí plánování, provádění, vyvažování zátěže, komunikaci a pohyb programů a dat napříč výpočetním klastrem .[9] Programovací abstrakce a jazykové nástroje umožňují vyjádření zpracování z hlediska toků dat a transformací zahrnujících sdílené knihovny běžných algoritmů manipulace s daty, jako je třídění.
Deklarativní programovací jazyky zaměřené na data jsou ze své podstaty přizpůsobitelné různým formám distribuovaných výpočtů, včetně klastrů a datových sítí a cloudových výpočtů.[10] Použití deklarativních, datově orientovaných programovacích jazyků naznačuje více než jen přizpůsobení nové výpočetní schopnosti, ale také navrhuje změny v myšlenkovém procesu analýzy dat a designu aplikací.[11]
Příklady jazyků zaměřených na data
SQL je nejznámější deklarativní programovací jazyk zaměřený na data a používá se od 80. let 20. století a stal se de facto standardem pro použití s relačními databázemi. Byla však implementována celá řada nových systémových architektur a souvisejících programovacích jazyků datově náročné výpočty, Big Data aplikace a aplikace pro rozsáhlou analýzu dat. Většina dat roste s daty v nestrukturované podobě[12] a byla zapotřebí nová paradigmata zpracování s pružnějšími datovými modely. Objevilo se několik řešení, včetně architektury MapReduce propagované společností Google, která je nyní k dispozici v implementaci open-source s názvem Hadoop používaná společností Yahoo, Facebook a dalšími a architekturou systému HPCC nabízenou společností LexisNexis Risk Solutions.
Hadoop Pig
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Data-Centric_Figure1.jpg/220px-Data-Centric_Figure1.jpg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Data-Centric_Figure2.jpg/220px-Data-Centric_Figure2.jpg)
Hadoop je open source softwarový projekt sponzorovaný The Apache Software Foundation (http://www.apache.org ), který implementuje architekturu MapReduce. Spouštěcí prostředí Hadoop podporuje další možnosti zpracování distribuovaných dat, které jsou navrženy ke spuštění pomocí architektury Hadoop MapReduce. Patří mezi ně Pig - programovací jazyk na vysoké úrovni pro tok dat a rámec pro provádění výpočtů náročných na data. Pig byl vyvinut ve společnosti Yahoo! poskytnout specifickou jazykovou notaci zaměřenou na data pro aplikace pro analýzu dat a zlepšit produktivitu programátoru a snížit vývojové cykly při použití prostředí Hadoop MapReduce. Programy pro prasata jsou automaticky přeloženy do sekvencí programů MapReduce, pokud je to v prováděcím prostředí potřeba. Prase poskytuje funkce v jazyce pro operace načítání, ukládání, filtrování, seskupování, odstraňování duplicit, objednávání, třídění, agregace a spojování dat.[13] Obrázek 1 ukazuje ukázkový program Pig a obrázek 2 ukazuje, jak je to přeloženo do řady operací MapReduce.
HPCC ECL
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Data-Centric_Figure3.jpg/220px-Data-Centric_Figure3.jpg)
HPCC datově náročná výpočetní platforma od LexisNexis Risk Solutions obsahuje nový deklarativní programovací jazyk na vysoké úrovni s názvem ECL. ECL umožňuje programátorovi definovat, jaký by měl být výsledek zpracování dat, a datové toky a transformace, které jsou nezbytné k dosažení výsledku. Jazyk ECL zahrnuje rozsáhlé funkce pro definici dat, filtrování, správu dat a transformaci dat a poskytuje rozsáhlou sadu integrovaných funkcí pro práci se záznamy v datových sadách, které mohou zahrnovat uživatelsky definované transformační funkce. Programy ECL jsou kompilovány do optimalizovaného zdrojového kódu C ++, který je následně kompilován do spustitelného kódu a distribuován do uzlů zpracovatelského klastru. ECL kombinuje reprezentaci dat s implementací algoritmu a je fúzí jak dotazovacího jazyka, tak jazyka paralelního zpracování dat.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Data-Centric_Figure5.jpg/220px-Data-Centric_Figure5.jpg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Data-Centric_Figure4.jpg/220px-Data-Centric_Figure4.jpg)
ECL zahrnuje integrované operace transformace dat, které zpracovávají celé datové sady včetně PROJEKTU, ITERACE, ROLLUPU, PŘIPOJENÍ, KOMBINACE, NAČÍTÁNÍ, NORMALIZACE, DENORMALIZACE a PROCES. Například transformační funkce definovaná pro operaci JOIN přijímá dva záznamy, jeden z každé datové sady, ke které se připojuje, a může provádět jakékoli operace s poli v dvojici záznamů a vrací výstupní záznam, který se může zcela lišit od jednoho z vstupní záznamy. Příklad syntaxe operace JOIN z referenční příručky jazyka ECL je uveden na obrázku 3. Obrázek 4 ukazuje příklad ekvivalentního kódu ECL pro ukázkový program Pig zobrazený na obrázku 1.
Programovací jazyk ECL také poskytuje integrovaná primitiva pro Zpracování přirozeného jazyka (NLP) s příkazy PATTERN a předdefinovanou operací PARSE. Příkazy PATTERN umožňují definovat porovnávací vzory včetně regulárních výrazů a použít je k analýze informací z nestrukturovaných dat, jako je hrubý text. Příkazy PATTERN lze kombinovat a implementovat složité operace analýzy nebo dokončit gramatiky z Backus – Naurova forma (BNF) definice. Operace PARSE funguje napříč datovou sadou záznamů na konkrétním poli v záznamu, toto pole může být například celý řádek v textovém souboru. Pomocí této schopnosti jazyka ECL je možné implementovat formulář paralelního zpracování extrakce informací aplikace napříč soubory dokumentů a všemi typy nestrukturovaných a polostrukturovaných dat včetně dokumentů založených na XML nebo webových stránek. Obrázek 5 ukazuje příklad kódu ECL použitého v aplikaci pro analýzu protokolů, která obsahuje NLP.
Viz také
- Programovací jazyk
- Deklarativní programování
- Datově náročné výpočty
- Paralelní výpočty
- Distribuované výpočty
- Datový paralelismus
- Velká data (ECL, programovací jazyk zaměřený na data pro Big Data )
Reference
- ^ Příručka cloud computingu „Data-Intensive Technologies for Cloud Computing“ A. M. Middletona. Příručka cloud computingu. Springer, 2010.
- ^ "Máte data? Průvodce uchováním dat v informačním věku "F. Berman. Komunikace ACM, sv. 51, č. 12, 2008, s. 50–66.
- ^ Gambit Data Centric, J. Hellerstein, 2008.
- ^ „Metodika návrhu pro datově paralelní aplikace“ L. S. Nylanda, J. F. Prinsa, A. Goldberga a P. H. Millsa. Příručka cloud computingu. Springer, 2010.
- ^ "Terascale výzva „D. Ravichandran, P. Pantel a E. Hovy. Sborník workshopů KDD o těžbě pro a ze sémantického webu, 2004.
- ^ "BOOM: Programování zaměřené na data v datovém centru "P. Alvaro, T. Condie, N. Conway, K. Elmeleegy, J. Hellerstein a R. Sears. Oddělení elektrotechniky a počítačových věd, University of California v Berkeley, technická zpráva, 2009.
- ^ "Datově náročné výpočty v 21. století „I. Gorton, P. Greenfield, A. Szalay a R. Williams. IEEE Computer, sv. 41, č. 4, 2008, s. 30–32.
- ^ Datově náročné výpočty, NSF, 2009.
- ^ Datově intenzivní škálovatelné výpočty autor: R. E. Bryant, 2008.
- ^ Bamboo: Datově orientovaný objektově orientovaný přístup k vícejádrovému softwaru, J. Zhou a B. Demsky. Návrh a implementace programovacího jazyka, 2010.
- ^ "Data-Centric Computing s architekturou Netezza "G. S. Davison, K. W. Boyack, R. A. Zacharski, S. C. Helmreich a J. R. Cowie. Sandia National Laboratories, technická zpráva, 2006.
- ^ „Expandující digitální vesmír“ J. F. Gantz, D. Reinsel, C. Chute, W. Schlichting, J. McArthur, S. Minton, J. Xheneti, A. Toncheva a A. Manfrediz. IDC, bílá kniha, 2007.
- ^ A b C Prasečí latina: Ne tak cizí jazyk pro zpracování dat Archivováno 2011-07-20 na Wayback Machine, C. Olston, B. Reed, U. Srivastava, R. Kumar a A. Tomkins. Stanford University, 2008.