데이터 중심 프로그래밍 언어

Data-centric programming language

데이터 중심 프로그래밍 언어는 주요 기능이 데이터 관리 및 조작인 프로그래밍 언어의 범주를 정의합니다.데이터 중심 프로그래밍 언어는 세트, 테이블, 리스트 및 기타 데이터 구조 및 데이터베이스에 저장된 데이터에 액세스하기 위한 내장 처리 프리미티브와 프로그래밍 애플리케이션에 필요한 데이터의 특정 조작 및 변환을 포함한다.데이터 중심 프로그래밍 언어는 일반적으로 선언형이며 종종 데이터 흐름 지향형이며 원하는 처리 결과를 정의합니다. 처리를 수행하기 위해 필요한 특정 처리 단계는 언어 컴파일러에 맡겨집니다.SQL 관계형 데이터베이스 언어는 선언형 데이터 중심 언어의 예입니다.선언형 데이터 중심 프로그래밍 언어는 데이터 집약적인 컴퓨팅 애플리케이션에 이상적입니다.

배경

인터넷월드 와이드 웹의 급속한 성장으로 인해 온라인에서 이용할 수 있는 방대한 양의 정보와 빅데이터 처리 능력이 필요하게 되었습니다.기업 및 정부 조직은 처리, 분석 및 링크해야 하는 [1]정형 및 비정형 정보를 대량으로 생성합니다.이러한 방대한 양의 데이터를 저장, 관리, 액세스 및 처리하는 것은 이러한 데이터를 [2]정보로서 검색, 분석, 마이닝 및 시각화하는 요구를 충족시키기 위한 근본적인 요구이자 엄청난 과제입니다.선언형 데이터 중심 언어는 이러한 문제에 점점 더 많이 대처하고 있습니다. 데이터에 초점을 맞추면 이러한 문제를 [3]표현하기가 훨씬 쉬워지기 때문입니다.

데이터 병렬 애플리케이션을 지원할 수 있는 Hadoop 및 HPCC같은 컴퓨터 시스템 아키텍처는 데이터 집약적[4][5]컴퓨팅의 테라바이트 및 페타바이트 규모의 데이터 처리 요건에 대한 잠재적인 솔루션입니다.범용 하드웨어 클러스터는 일반적으로 빅데이터 [6]문제를 해결하기 위해 사용됩니다.빅 데이터 애플리케이션 및 데이터[7] 집약적인 컴퓨팅의 근본적인 과제는 기하급수적으로 증가하는 데이터 볼륨을 관리 및 처리하고 관련 데이터 분석 주기를 대폭 단축하여 실용적이고 시기 적절한 애플리케이션을 지원하고 대량의 데이터를 검색 및 처리할 수 있는 새로운 알고리즘을 개발하는 것입니다.National Science Foundation은 데이터 [8]병렬 처리를 자연스럽게 표현할 수 있는 모델, 언어 및 알고리즘을 포함한 프로그래밍 추상화 등 데이터 집약적인 컴퓨팅 문제와 관련된 주요 문제를 확인했습니다.선언형 데이터 중심 프로그래밍 언어는 이러한 종류의 문제에 적합합니다.

데이터 중심 프로그래밍 언어는 응용 프로그램이 데이터에 대한 높은 수준의 운영으로 표현되는 처리 방식을 제공하며 런타임 시스템은 컴퓨팅 클러스터 [9]간의 프로그램 및 데이터 스케줄링, 실행, 로드 밸런싱, 통신 및 이동을 투명하게 제어합니다.프로그래밍 추상화 및 언어 도구를 사용하면 정렬과 같은 공통 데이터 조작 알고리즘의 공유 라이브러리를 포함하는 데이터 흐름 및 변환의 관점에서 처리를 표현할 수 있습니다.

선언적 데이터 중심 프로그래밍 언어는 클러스터, 데이터 그리드, 클라우드 [10]컴퓨팅 등 다양한 형태의 분산 컴퓨팅에 본질적으로 적응할 수 있습니다.선언적인 데이터 중심 프로그래밍 언어를 사용하면 새로운 컴퓨팅 기능에 적응하는 것 이상의 것을 제안할 수 있으며, 데이터 분석 및 애플리케이션 [11]설계의 사고 프로세스에 대한 변화도 제안할 수 있습니다.

데이터 중심 언어의 예

SQL은 가장 잘 알려진 선언형 데이터 중심 프로그래밍 언어이며 1980년대부터 사용되었으며 관계형 데이터베이스에서 사용되는 사실상의 표준이 되었습니다.그러나 데이터 집약적인 컴퓨팅, 빅 데이터 애플리케이션 및 대규모 데이터 분석 애플리케이션을 위해 다양한 새로운 시스템 아키텍처와 관련 프로그래밍 언어가 구현되었습니다.대부분의 데이터 증가는 비정형[12] 데이터이기 때문에 보다 유연한 데이터 모델을 갖춘 새로운 처리 패러다임이 필요했습니다.Google이 개척한 MapReduce 아키텍처와 현재 야후, Facebook 등이 사용하는 Hadoop이라는 오픈 소스 구현과 LexisNexis Risk Solutions가 제공하는 HPCC 시스템 아키텍처를 포함한 여러 솔루션이 등장했습니다.

하둡 피그

그림 1: Pig 라틴어 프로그램 예시
그림 2: Pig 프로그램을 MapReduce로 변환[13]

Hadoop은 MapReduce 아키텍처를 구현하는 Apache Software Foundation(http://www.apache.org)이 후원하는 오픈 소스 소프트웨어 프로젝트입니다.Hadoop 실행 환경은 Hadoop MapReduce 아키텍처를 사용하여 실행되도록 설계된 추가적인 분산 데이터 처리 기능을 지원합니다.여기에는 데이터 집약적인 컴퓨팅을 위한 고급 데이터 흐름 프로그래밍 언어 및 실행 프레임워크인 Pig가 포함됩니다.Pig는 데이터 분석 애플리케이션을 위한 특정 데이터 중심 언어 표기법을 제공하고 Hadoop MapReduce 환경을 사용할 때 프로그래머의 생산성을 향상시키고 개발 주기를 단축하기 위해 Yahoo!에서 개발되었습니다.실행 환경에서 필요한 경우 피그 프로그램은 MapReduce 프로그램의 시퀀스로 자동 변환됩니다.Pig는 데이터에 [13]대한 로드, 저장, 필터링, 그룹화, 중복 제거, 순서 지정, 정렬, 집계 및 결합 작업을 위한 기능을 언어로 제공합니다.그림 1은 샘플 Pig 프로그램을 나타내고 그림 2는 샘플 Pig 프로그램이 일련의 MapReduce 연산으로 변환되는 방법을 보여 줍니다.

HPCC ECL

그림 3: JOIN 조작의 ECL 샘플 구문

LexisNexis Risk Solutions의 HPCC 데이터 집약형 컴퓨팅 플랫폼에는 ECL이라는 새로운 고급 선언형 데이터 중심 프로그래밍 언어가 포함되어 있습니다.ECL을 사용하면 프로그래머는 데이터 처리 결과 및 결과를 얻기 위해 필요한 데이터 흐름과 변환을 정의할 수 있습니다.ECL 언어에는 데이터 정의, 필터링, 데이터 관리 및 데이터 변환을 위한 광범위한 기능이 포함되어 있으며, 사용자 정의 변환 함수를 포함할 수 있는 데이터 세트의 레코드에서 작업할 수 있는 광범위한 내장 함수 세트가 제공됩니다.ECL 프로그램은 최적화된 C++ 소스 코드로 컴파일되며, 이후 실행 가능한 코드로 컴파일되어 처리 클러스터의 노드에 배포됩니다.ECL은 데이터 표현과 알고리즘 구현을 결합하며 쿼리 언어와 병렬 데이터 처리 언어를 모두 결합한 것입니다.

그림 5: NLP의 ECL 코드 예시
그림 4: ECL 코드 예시

ECL에는 PROJECT, ITERATE, ROLUP, JOIN, COMBIN, FETCH, Normalize, Denormalize 및 Process를 포함한 전체 데이터셋을 처리하는 데이터 변환 작업이 포함되어 있습니다.예를 들어 JOIN 동작에 대해 정의된 변환 함수는 결합되는 각 데이터 세트로부터1개의 레코드를 수신하여 레코드 쌍의 필드에 대해 임의의 동작을 실행할 수 있으며 입력 레코드 중 하나와 완전히 다른 출력 레코드를 반환합니다.ECL Language Reference Manual(ECL 언어 참조 매뉴얼)의 JOIN 작업에 대한 구문 예는 그림 3에 나와 있습니다.그림 4는 그림 1과 같이 Pig 예제 프로그램에 해당하는 ECL 코드의 예를 보여줍니다.

ECL 프로그래밍 언어는 PATTANG 문과 PARSE 조작을 포함한 NLP(자연 언어 처리)에 대한 기본 제공 프리미티브도 제공합니다.PATTANGE 문을 사용하면 정규 표현을 포함한 일치 패턴을 정의하고 원시 텍스트 등의 구조화되지 않은 데이터로부터의 정보를 해석하기 위해 사용할 수 있습니다.PATTANGE 문을 조합하여 복잡한 해석 조작을 구현하거나 Backus-Naur 형식(BNF) 정의에서 완전한 문법을 작성할 수 있습니다.PARSEX 조작은 레코드 내의 특정 필드의 레코드 데이터셋에 걸쳐 동작합니다.예를 들어 이 필드는 텍스트파일의 행 전체가 될 수 있습니다.ECL 언어의 이 기능을 사용하면 문서 파일 및 XML 기반 문서 또는 웹 페이지를 포함한 모든 유형의 비구조화 및 반구조화 데이터 간에 병렬 처리 양식 정보 추출 애플리케이션을 구현할 수 있습니다.그림 5는 NLP를 통합한 로그 분석 애플리케이션에서 사용되는 ECL 코드의 예를 보여줍니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ 클라우드 컴퓨팅 핸드북, A. M. 미들턴의 "클라우드 컴퓨팅을 위한 데이터 집약적 기술"클라우드 컴퓨팅 핸드북Springer, 2010년
  2. ^ 「데이터를 입수할 수 있습니까? '정보화 시대의 데이터 보존 가이드' (F)버만.ACM, Vol. 51, No. 12, 2008, 페이지 50-66의 통신.
  3. ^ J. Hellerstein, 2008년, The Data Centric Gambit.
  4. ^ L. S. Nyland, J. F. Prins, A. Goldberg 및 P. H. Mills의 "데이터 병렬 애플리케이션의 설계 방법론"클라우드 컴퓨팅 핸드북Springer, 2010년
  5. ^ D의 '테라스케일[dead link] 챌린지'라비찬드란, P. 판텔, E.Hovy. 시맨틱 웹을 위한 KDD 채굴 워크숍 진행, 2004.
  6. ^ P의 "BOOM: 데이터[dead link] 센터의 데이터 중심 프로그래밍"Alvaro, T. Condie, N. Conway, K. Elmelegy, J. Hellerstein, R.Sears. 캘리포니아 대학교 버클리 전기공학 및 컴퓨터 과학부, 기술 보고서, 2009.
  7. ^ I의 "21세기의 데이터 집약적 컴퓨팅"Gorton, P. Greenfield, A. Szalay, R.윌리엄스.IEEE Computer, Vol.41, No.4, 2008, 페이지 30-32.
  8. ^ 데이터 집약적 컴퓨팅, NSF, 2009.
  9. ^ 데이터 집약적인 스케일러블 컴퓨팅, R. E. Bryant, 2008.
  10. ^ Bamboo: J. Zhou 및 B의 다코어 소프트웨어에 대한 데이터 중심, 객체 지향 접근법.뎀스키.Programming Language Design and Implementation, 2010.
  11. ^ G. S. Davison, K. W. Boyack, R. A. Zacharski, S. C. Helmreich 및 J. R. Cowie의 "Netezza Architecture에 의한 데이터 중심 컴퓨팅"Sandia National Laboratories, Technical Report, 2006.
  12. ^ J. F. Gantz, D.의 "The Expanding Digital Universe"라인젤, C슈트, W. 슐리칭, J. 맥아더, S. 민튼, J. 제네티, A.톤체바, A.만프레디즈.IDC, White Paper, 2007.
  13. ^ a b c 피그 라틴: 데이터 처리위한 Not-So-Foreign Language 2011-07-20 Wayback Machine에서 C에 의해 아카이브되었습니다.올스턴, B리드, U.Srivastava, R. Kumar 및 A.톰킨스.스탠포드 대학교, 2008.