그렘린 (질의어)
(그렘린 (프로그래밍 언어)에서 넘어옴)
그렘린(Gremlin)은 아파치 소프트웨어 재단의 아파치 팅커팝(Apache TinkerPop)이 개발한 그래프 순회 언어이자 가상 머신이다. 그렘린은 OLTP 기반 그래프 데이터베이스, OLAP 기반 그래프 프로세서와 함께 동작한다.
설계자 | Marko A. Rodriguez |
---|---|
개발자 | 아파치 소프트웨어 재단의 아파치 팅커팝 |
발표일 | 2009년 |
최근 버전 | 그렘린 3.4.10[1] |
운영 체제 | 크로스 플랫폼 (멀티 플랫폼) |
라이선스 | 아파치 라이선스 2.0 |
웹사이트 | 공식 사이트 |
방언 | |
Gremlin‑Java8, Gremlin‑Groovy, Gremlin‑Python, Gremlin‑Scala, Gremlin‑Clojure, Gremlin‑PHP, Gremlin‑JavaScript, Gremlin‑Typeset | |
영향을 받은 언어 | |
정규 표현식, XPath, 리플, SPARQL, SQL, 자바/JVM |
그렘린의 오토마타 및 함수형 언어 파운데이션은 그렘린이 자연스럽게 명령형, 선언형 쿼리, 호스트 언어 아그노스티시즘, 사용자 지정 도메인 특화 언어, 확장 가능한 컴파일러/옵티마이저, 싱글 및 멀티 실행 모델, hybrid depth- 및 breadth-first 평가, 튜링 완전을 지원할 수 있게 한다.[2]
역사 편집
- 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 그래프 프로세서. 아래의 표는 그렘린을 지원하는 그래프 벤더를 요약한 것이다.
벤더 | 그래프 시스템 |
---|---|
Neo4j | 그래프 데이터베이스 |
OrientDB | 그래프 데이터베이스 |
DataStax Enterprise (5.0+) | 그래프 데이터베이스 |
Hadoop (Giraph) | 그래프 프로세서 |
Hadoop (Spark) | 그래프 프로세서 |
InfiniteGraph | 그래프 데이터베이스 |
JanusGraph | 그래프 데이터베이스 |
Cosmos DB | 그래프 데이터베이스 |
Amazon Neptune | 그래프 데이터베이스 |
Ontotext 그래프DB | Triplestore |
순회의 예 편집
그렘린-그루비 환경에서 다음의 그렘린 쿼리 및 응답의 예는 MovieLens 데이터셋의 그래프 표현에 상대적이다.[3] 데이터셋에는 영화를 평가하는 사용자들이 포함되어 있다. 사용자는 각자 하나의 직업이 있으며 각 영화는 그와 연계된 하나 이상의 분류가 있다. 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
각주 편집
- ↑ “Gremlin 3.4.10”. 2021년 1월 18일에 확인함.
- ↑ Rodriguez, Marko A. (2015). 〈The Gremlin graph traversal machine and language (invited talk)〉. 《The Gremlin Graph Traversal Machine and Language》. 1쪽. arXiv:1508.03843 [cs.DB]. doi:10.1145/2815072.2815073. ISBN 9781450339025.
- ↑ “The Gremlin Graph Traversal Language”. 2015년 8월 22일에 확인함.
외부 링크 편집
- 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.