그렘린 (질의어)

그렘린(Gremlin)은 아파치 소프트웨어 재단의 아파치 팅커팝(Apache TinkerPop)이 개발한 그래프 순회 언어이자 가상 머신이다. 그렘린은 OLTP 기반 그래프 데이터베이스, OLAP 기반 그래프 프로세서와 함께 동작한다.

그렘린의 오토마타 및 함수형 언어 파운데이션은 그렘린이 자연스럽게 명령형, 선언형 쿼리, 호스트 언어 아그노스티시즘, 사용자 지정 도메인 특화 언어, 확장 가능한 컴파일러/옵티마이저, 싱글 및 멀티 실행 모델, hybrid depth- 및 breadth-first 평가, 튜링 완전을 지원할 수 있게 한다.

역사 
 2009-10-30 프로젝트 탄생, 팅커팝(TinkerPop)의 이름
 2009-12-25 v0.1 최초 릴리스
 2011-05-21 v1.0 출시
 2012-05-24 v2.0 출시
 2015-01-16 팅커팝이 아파치 인큐베이터 프로젝트가 됨
 2015-07-09 v3.0.0-incubating 출시
 2016-05-23 아파치 팅커팝이 최상위 프로젝트로 됨
 2016-07-18 v3.1.3 및 v3.2.1이 아파치 팅커팝으로 첫 출시
 2017-12-17 v3.3.1 출시

벤더 연동 
그렘림은 아파치2-라이선스의 그래프 순회 언어이며 그래프 시스템 벤더들에 의해 사용할 수 있다. 일반적으로 두 종류의 그래프 시스템 벤더가 있다: OLTP 그래프 데이터베이스 및 OLAP 그래프 프로세서. 아래의 표는 그렘린을 지원하는 그래프 벤더를 요약한 것이다.

순회의 예 
그렘린-그루비 환경에서 다음의 그렘린 쿼리 및 응답의 예는 MovieLens 데이터셋의 그래프 표현에 상대적이다. 데이터셋에는 영화를 평가하는 사용자들이 포함되어 있다. 사용자는 각자 하나의 직업이 있으며 각 영화는 그와 연계된 하나 이상의 분류가 있다. MovieLens 그래프 스키마는 아래와 같다.
user--rated[stars:0-5]-->movie
user--occupation-->occupation
movie--category-->category

단순 순회 

gremlin> g.V().label().groupCount()
==>[occupation:21, movie:3883, category:18, user:6040]

gremlin> g.V().hasLabel('movie').values('year').min()
==>1919

gremlin> g.V().has('movie','name','Die Hard').inE('rated').values('stars').mean()
==>4.121848739495798

각주

외부 링크 
 Apache TinkerPop Homepage
 GremlinDocs.com (TinkerPop2)
 sql2gremlin.com (TinkerPop2)
 Rodriguez, M.A., "The Gremlin Graph Traversal Machine and Language," Proceedings of the ACM Database Programming Languages Conference, October, 2015.

클러스터 컴퓨팅
하둡
아파치 소프트웨어 재단
자바 플랫폼
스칼라로 작성된 자유 소프트웨어
선언형 프로그래밍 언어
아파치 라이선스 소프트웨어