그렘린 (질의어)
보이기
설계자 | 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 |
그렘린(Gremlin)은 아파치 소프트웨어 재단의 아파치 팅커팝(Apache TinkerPop)이 개발한 그래프 순회 언어이자 가상 머신이다. 그렘린은 OLTP 기반 그래프 데이터베이스, OLAP 기반 그래프 프로세서와 함께 동작한다.
그렘린의 오토마타 및 함수형 언어 파운데이션은 그렘린이 자연스럽게 명령형, 선언형 쿼리, 호스트 언어 아그노스티시즘, 사용자 지정 도메인 특화 언어, 확장 가능한 컴파일러/옵티마이저, 싱글 및 멀티 실행 모델, 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.