SlideShare a Scribd company logo

Gremlin's Graph Traversal Machinery

This document summarizes the key concepts and components of Gremlin's graph traversal machinery: - Gremlin uses a traversal language to express graph queries via step composition, with steps mapping traversers between domains. - Traversals are compiled to bytecode and optimized by traversal strategies before being executed by the Gremlin machine. - The Gremlin machine consists of steps implementing functions that process traverser streams. Their composition forms the traversal. - Gremlin is language-agnostic, with language variants translating to a shared bytecode that interacts with the Java-based implementation.

1 of 85
Download to read offline
Gremlin’s Graph Traversal Machinery
Dr. Marko A. Rodriguez
Director of Engineering at DataStax, Inc.
Project Management Committee, Apache TinkerPop
http://tinkerpop.apache.org
f : X ! X
The function f is a process that maps a structure of type X to a structure of type X.
f(x1) = x2
The function f maps the object x1 (from the set of X) to the object x2 (from the set of X).
x1 2 X x2 2 X
f(x)
A step is a function.
f(x)
Assume that this step rotates an X by 90°.
90°
90°
The algorithm of the step is a “black box.”

Recommended

ACM DBPL Keynote: The Graph Traversal Machine and Language
ACM DBPL Keynote: The Graph Traversal Machine and LanguageACM DBPL Keynote: The Graph Traversal Machine and Language
ACM DBPL Keynote: The Graph Traversal Machine and LanguageMarko Rodriguez
 
The Gremlin Graph Traversal Language
The Gremlin Graph Traversal LanguageThe Gremlin Graph Traversal Language
The Gremlin Graph Traversal LanguageMarko Rodriguez
 
Graph Partition with Natural Cuts
Graph Partition with Natural CutsGraph Partition with Natural Cuts
Graph Partition with Natural Cutsilyaraz
 
Deep Dive on Amazon Neptune - AWS Online Tech Talks
Deep Dive on Amazon Neptune - AWS Online Tech TalksDeep Dive on Amazon Neptune - AWS Online Tech Talks
Deep Dive on Amazon Neptune - AWS Online Tech TalksAmazon Web Services
 
Introduction to Graph Database
Introduction to Graph DatabaseIntroduction to Graph Database
Introduction to Graph DatabaseEric Lee
 
NoSQL Graph Databases - Why, When and Where
NoSQL Graph Databases - Why, When and WhereNoSQL Graph Databases - Why, When and Where
NoSQL Graph Databases - Why, When and WhereEugene Hanikblum
 

More Related Content

What's hot

Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28Amazon Web Services
 
Domain Modeling Made Functional (KanDDDinsky 2019)
Domain Modeling Made Functional (KanDDDinsky 2019)Domain Modeling Made Functional (KanDDDinsky 2019)
Domain Modeling Made Functional (KanDDDinsky 2019)Scott Wlaschin
 
Json in Postgres - the Roadmap
 Json in Postgres - the Roadmap Json in Postgres - the Roadmap
Json in Postgres - the RoadmapEDB
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Mario Fusco
 
RedisConf18 - Lower Latency Graph Queries in Cypher with Redis Graph
RedisConf18 - Lower Latency Graph Queries in Cypher with Redis GraphRedisConf18 - Lower Latency Graph Queries in Cypher with Redis Graph
RedisConf18 - Lower Latency Graph Queries in Cypher with Redis GraphRedis Labs
 
Introduction to Graph Databases
Introduction to Graph DatabasesIntroduction to Graph Databases
Introduction to Graph DatabasesDataStax
 
Introduction to Graph Databases
Introduction to Graph DatabasesIntroduction to Graph Databases
Introduction to Graph DatabasesMax De Marzi
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQLJoel Brewer
 
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...Jan Margeta
 
PySpark dataframe
PySpark dataframePySpark dataframe
PySpark dataframeJaemun Jung
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with GroovyArturo Herrero
 
JanusGraph DataBase Concepts
JanusGraph DataBase ConceptsJanusGraph DataBase Concepts
JanusGraph DataBase ConceptsSanil Bagzai
 
Applied category theory: the emerging science of compositionality
Applied category theory: the emerging science of compositionalityApplied category theory: the emerging science of compositionality
Applied category theory: the emerging science of compositionalitykenbot
 
What Is RDD In Spark? | Edureka
What Is RDD In Spark? | EdurekaWhat Is RDD In Spark? | Edureka
What Is RDD In Spark? | EdurekaEdureka!
 
EDB Postgres with Containers
EDB Postgres with ContainersEDB Postgres with Containers
EDB Postgres with ContainersEDB
 

What's hot (20)

Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28
 
Graphdatabases
GraphdatabasesGraphdatabases
Graphdatabases
 
Graph databases
Graph databasesGraph databases
Graph databases
 
Graph database
Graph database Graph database
Graph database
 
Domain Modeling Made Functional (KanDDDinsky 2019)
Domain Modeling Made Functional (KanDDDinsky 2019)Domain Modeling Made Functional (KanDDDinsky 2019)
Domain Modeling Made Functional (KanDDDinsky 2019)
 
Json in Postgres - the Roadmap
 Json in Postgres - the Roadmap Json in Postgres - the Roadmap
Json in Postgres - the Roadmap
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...
 
Graph databases
Graph databasesGraph databases
Graph databases
 
TinkerPop 2020
TinkerPop 2020TinkerPop 2020
TinkerPop 2020
 
RedisConf18 - Lower Latency Graph Queries in Cypher with Redis Graph
RedisConf18 - Lower Latency Graph Queries in Cypher with Redis GraphRedisConf18 - Lower Latency Graph Queries in Cypher with Redis Graph
RedisConf18 - Lower Latency Graph Queries in Cypher with Redis Graph
 
Introduction to Graph Databases
Introduction to Graph DatabasesIntroduction to Graph Databases
Introduction to Graph Databases
 
Introduction to Graph Databases
Introduction to Graph DatabasesIntroduction to Graph Databases
Introduction to Graph Databases
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQL
 
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
 
PySpark dataframe
PySpark dataframePySpark dataframe
PySpark dataframe
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
JanusGraph DataBase Concepts
JanusGraph DataBase ConceptsJanusGraph DataBase Concepts
JanusGraph DataBase Concepts
 
Applied category theory: the emerging science of compositionality
Applied category theory: the emerging science of compositionalityApplied category theory: the emerging science of compositionality
Applied category theory: the emerging science of compositionality
 
What Is RDD In Spark? | Edureka
What Is RDD In Spark? | EdurekaWhat Is RDD In Spark? | Edureka
What Is RDD In Spark? | Edureka
 
EDB Postgres with Containers
EDB Postgres with ContainersEDB Postgres with Containers
EDB Postgres with Containers
 

Similar to Gremlin's Graph Traversal Machinery

MATLAB Fundamentals - Cheat Sheet.pdf.pdf
MATLAB Fundamentals - Cheat Sheet.pdf.pdfMATLAB Fundamentals - Cheat Sheet.pdf.pdf
MATLAB Fundamentals - Cheat Sheet.pdf.pdfAlexSimeonBustillos
 
CS 354 Graphics Math
CS 354 Graphics MathCS 354 Graphics Math
CS 354 Graphics MathMark Kilgard
 
Rate of change and tangent lines
Rate of change and tangent linesRate of change and tangent lines
Rate of change and tangent linesMrs. Ibtsam Youssef
 
Computer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bComputer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bPhilip Schwarz
 
Advanced Functions Unit 1
Advanced Functions Unit 1Advanced Functions Unit 1
Advanced Functions Unit 1leefong2310
 
ImplementDijkstra’s algorithm using the graph class you implemente.pdf
ImplementDijkstra’s algorithm using the graph class you implemente.pdfImplementDijkstra’s algorithm using the graph class you implemente.pdf
ImplementDijkstra’s algorithm using the graph class you implemente.pdfgopalk44
 
Mikhail Khristophorov "Introduction to Regular Expressions"
Mikhail Khristophorov "Introduction to Regular Expressions"Mikhail Khristophorov "Introduction to Regular Expressions"
Mikhail Khristophorov "Introduction to Regular Expressions"LogeekNightUkraine
 
Lesson 2: A Catalog of Essential Functions (slides)
Lesson 2: A Catalog of Essential Functions (slides)Lesson 2: A Catalog of Essential Functions (slides)
Lesson 2: A Catalog of Essential Functions (slides)Mel Anthony Pepito
 
Lesson 2: A Catalog of Essential Functions (slides)
Lesson 2: A Catalog of Essential Functions (slides)Lesson 2: A Catalog of Essential Functions (slides)
Lesson 2: A Catalog of Essential Functions (slides)Matthew Leingang
 
3.5 Transformation of Functions
3.5 Transformation of Functions3.5 Transformation of Functions
3.5 Transformation of Functionssmiller5
 
Website designing company in delhi ncr
Website designing company in delhi ncrWebsite designing company in delhi ncr
Website designing company in delhi ncrCss Founder
 
Website designing company in delhi ncr
Website designing company in delhi ncrWebsite designing company in delhi ncr
Website designing company in delhi ncrCss Founder
 
Applicationofpartialderivativeswithtwovariables 140225070102-phpapp01 (1)
Applicationofpartialderivativeswithtwovariables 140225070102-phpapp01 (1)Applicationofpartialderivativeswithtwovariables 140225070102-phpapp01 (1)
Applicationofpartialderivativeswithtwovariables 140225070102-phpapp01 (1)shreemadghodasra
 
A walk in graph databases v1.0
A walk in graph databases v1.0A walk in graph databases v1.0
A walk in graph databases v1.0Pierre De Wilde
 
Monadologie
MonadologieMonadologie
Monadologieleague
 

Similar to Gremlin's Graph Traversal Machinery (20)

ML-CheatSheet (1).pdf
ML-CheatSheet (1).pdfML-CheatSheet (1).pdf
ML-CheatSheet (1).pdf
 
MATLAB Fundamentals - Cheat Sheet.pdf.pdf
MATLAB Fundamentals - Cheat Sheet.pdf.pdfMATLAB Fundamentals - Cheat Sheet.pdf.pdf
MATLAB Fundamentals - Cheat Sheet.pdf.pdf
 
CS 354 Graphics Math
CS 354 Graphics MathCS 354 Graphics Math
CS 354 Graphics Math
 
Data transformation-cheatsheet
Data transformation-cheatsheetData transformation-cheatsheet
Data transformation-cheatsheet
 
Rate of change and tangent lines
Rate of change and tangent linesRate of change and tangent lines
Rate of change and tangent lines
 
Computer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bComputer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1b
 
Advanced Functions Unit 1
Advanced Functions Unit 1Advanced Functions Unit 1
Advanced Functions Unit 1
 
ImplementDijkstra’s algorithm using the graph class you implemente.pdf
ImplementDijkstra’s algorithm using the graph class you implemente.pdfImplementDijkstra’s algorithm using the graph class you implemente.pdf
ImplementDijkstra’s algorithm using the graph class you implemente.pdf
 
Mikhail Khristophorov "Introduction to Regular Expressions"
Mikhail Khristophorov "Introduction to Regular Expressions"Mikhail Khristophorov "Introduction to Regular Expressions"
Mikhail Khristophorov "Introduction to Regular Expressions"
 
Lesson 2: A Catalog of Essential Functions (slides)
Lesson 2: A Catalog of Essential Functions (slides)Lesson 2: A Catalog of Essential Functions (slides)
Lesson 2: A Catalog of Essential Functions (slides)
 
Lesson 2: A Catalog of Essential Functions (slides)
Lesson 2: A Catalog of Essential Functions (slides)Lesson 2: A Catalog of Essential Functions (slides)
Lesson 2: A Catalog of Essential Functions (slides)
 
3.5 Transformation of Functions
3.5 Transformation of Functions3.5 Transformation of Functions
3.5 Transformation of Functions
 
latexcheatsheet.pdf
latexcheatsheet.pdflatexcheatsheet.pdf
latexcheatsheet.pdf
 
Abstract machines for great good
Abstract machines for great goodAbstract machines for great good
Abstract machines for great good
 
Mini-curso JavaFX Aula1
Mini-curso JavaFX Aula1Mini-curso JavaFX Aula1
Mini-curso JavaFX Aula1
 
Website designing company in delhi ncr
Website designing company in delhi ncrWebsite designing company in delhi ncr
Website designing company in delhi ncr
 
Website designing company in delhi ncr
Website designing company in delhi ncrWebsite designing company in delhi ncr
Website designing company in delhi ncr
 
Applicationofpartialderivativeswithtwovariables 140225070102-phpapp01 (1)
Applicationofpartialderivativeswithtwovariables 140225070102-phpapp01 (1)Applicationofpartialderivativeswithtwovariables 140225070102-phpapp01 (1)
Applicationofpartialderivativeswithtwovariables 140225070102-phpapp01 (1)
 
A walk in graph databases v1.0
A walk in graph databases v1.0A walk in graph databases v1.0
A walk in graph databases v1.0
 
Monadologie
MonadologieMonadologie
Monadologie
 

More from Marko Rodriguez

mm-ADT: A Virtual Machine/An Economic Machine
mm-ADT: A Virtual Machine/An Economic Machinemm-ADT: A Virtual Machine/An Economic Machine
mm-ADT: A Virtual Machine/An Economic MachineMarko Rodriguez
 
mm-ADT: A Multi-Model Abstract Data Type
mm-ADT: A Multi-Model Abstract Data Typemm-ADT: A Multi-Model Abstract Data Type
mm-ADT: A Multi-Model Abstract Data TypeMarko Rodriguez
 
Open Problems in the Universal Graph Theory
Open Problems in the Universal Graph TheoryOpen Problems in the Universal Graph Theory
Open Problems in the Universal Graph TheoryMarko Rodriguez
 
Gremlin 101.3 On Your FM Dial
Gremlin 101.3 On Your FM DialGremlin 101.3 On Your FM Dial
Gremlin 101.3 On Your FM DialMarko Rodriguez
 
Quantum Processes in Graph Computing
Quantum Processes in Graph ComputingQuantum Processes in Graph Computing
Quantum Processes in Graph ComputingMarko Rodriguez
 
Faunus: Graph Analytics Engine
Faunus: Graph Analytics EngineFaunus: Graph Analytics Engine
Faunus: Graph Analytics EngineMarko Rodriguez
 
Solving Problems with Graphs
Solving Problems with GraphsSolving Problems with Graphs
Solving Problems with GraphsMarko Rodriguez
 
Titan: The Rise of Big Graph Data
Titan: The Rise of Big Graph DataTitan: The Rise of Big Graph Data
Titan: The Rise of Big Graph DataMarko Rodriguez
 
The Pathology of Graph Databases
The Pathology of Graph DatabasesThe Pathology of Graph Databases
The Pathology of Graph DatabasesMarko Rodriguez
 
Traversing Graph Databases with Gremlin
Traversing Graph Databases with GremlinTraversing Graph Databases with Gremlin
Traversing Graph Databases with GremlinMarko Rodriguez
 
The Path-o-Logical Gremlin
The Path-o-Logical GremlinThe Path-o-Logical Gremlin
The Path-o-Logical GremlinMarko Rodriguez
 
The Gremlin in the Graph
The Gremlin in the GraphThe Gremlin in the Graph
The Gremlin in the GraphMarko Rodriguez
 
Memoirs of a Graph Addict: Despair to Redemption
Memoirs of a Graph Addict: Despair to RedemptionMemoirs of a Graph Addict: Despair to Redemption
Memoirs of a Graph Addict: Despair to RedemptionMarko Rodriguez
 
Graph Databases: Trends in the Web of Data
Graph Databases: Trends in the Web of DataGraph Databases: Trends in the Web of Data
Graph Databases: Trends in the Web of DataMarko Rodriguez
 
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Marko Rodriguez
 
A Perspective on Graph Theory and Network Science
A Perspective on Graph Theory and Network ScienceA Perspective on Graph Theory and Network Science
A Perspective on Graph Theory and Network ScienceMarko Rodriguez
 
The Graph Traversal Programming Pattern
The Graph Traversal Programming PatternThe Graph Traversal Programming Pattern
The Graph Traversal Programming PatternMarko Rodriguez
 
The Network Data Structure in Computing
The Network Data Structure in ComputingThe Network Data Structure in Computing
The Network Data Structure in ComputingMarko Rodriguez
 
A Model of the Scholarly Community
A Model of the Scholarly CommunityA Model of the Scholarly Community
A Model of the Scholarly CommunityMarko Rodriguez
 

More from Marko Rodriguez (20)

mm-ADT: A Virtual Machine/An Economic Machine
mm-ADT: A Virtual Machine/An Economic Machinemm-ADT: A Virtual Machine/An Economic Machine
mm-ADT: A Virtual Machine/An Economic Machine
 
mm-ADT: A Multi-Model Abstract Data Type
mm-ADT: A Multi-Model Abstract Data Typemm-ADT: A Multi-Model Abstract Data Type
mm-ADT: A Multi-Model Abstract Data Type
 
Open Problems in the Universal Graph Theory
Open Problems in the Universal Graph TheoryOpen Problems in the Universal Graph Theory
Open Problems in the Universal Graph Theory
 
Gremlin 101.3 On Your FM Dial
Gremlin 101.3 On Your FM DialGremlin 101.3 On Your FM Dial
Gremlin 101.3 On Your FM Dial
 
Quantum Processes in Graph Computing
Quantum Processes in Graph ComputingQuantum Processes in Graph Computing
Quantum Processes in Graph Computing
 
The Path Forward
The Path ForwardThe Path Forward
The Path Forward
 
Faunus: Graph Analytics Engine
Faunus: Graph Analytics EngineFaunus: Graph Analytics Engine
Faunus: Graph Analytics Engine
 
Solving Problems with Graphs
Solving Problems with GraphsSolving Problems with Graphs
Solving Problems with Graphs
 
Titan: The Rise of Big Graph Data
Titan: The Rise of Big Graph DataTitan: The Rise of Big Graph Data
Titan: The Rise of Big Graph Data
 
The Pathology of Graph Databases
The Pathology of Graph DatabasesThe Pathology of Graph Databases
The Pathology of Graph Databases
 
Traversing Graph Databases with Gremlin
Traversing Graph Databases with GremlinTraversing Graph Databases with Gremlin
Traversing Graph Databases with Gremlin
 
The Path-o-Logical Gremlin
The Path-o-Logical GremlinThe Path-o-Logical Gremlin
The Path-o-Logical Gremlin
 
The Gremlin in the Graph
The Gremlin in the GraphThe Gremlin in the Graph
The Gremlin in the Graph
 
Memoirs of a Graph Addict: Despair to Redemption
Memoirs of a Graph Addict: Despair to RedemptionMemoirs of a Graph Addict: Despair to Redemption
Memoirs of a Graph Addict: Despair to Redemption
 
Graph Databases: Trends in the Web of Data
Graph Databases: Trends in the Web of DataGraph Databases: Trends in the Web of Data
Graph Databases: Trends in the Web of Data
 
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
 
A Perspective on Graph Theory and Network Science
A Perspective on Graph Theory and Network ScienceA Perspective on Graph Theory and Network Science
A Perspective on Graph Theory and Network Science
 
The Graph Traversal Programming Pattern
The Graph Traversal Programming PatternThe Graph Traversal Programming Pattern
The Graph Traversal Programming Pattern
 
The Network Data Structure in Computing
The Network Data Structure in ComputingThe Network Data Structure in Computing
The Network Data Structure in Computing
 
A Model of the Scholarly Community
A Model of the Scholarly CommunityA Model of the Scholarly Community
A Model of the Scholarly Community
 

Recently uploaded

AMER Introduction to ThousandEyes Webinar
AMER Introduction to ThousandEyes WebinarAMER Introduction to ThousandEyes Webinar
AMER Introduction to ThousandEyes WebinarThousandEyes
 
What’s New in CloudStack 4.19, Abhishek Kumar, Release Manager Apache CloudSt...
What’s New in CloudStack 4.19, Abhishek Kumar, Release Manager Apache CloudSt...What’s New in CloudStack 4.19, Abhishek Kumar, Release Manager Apache CloudSt...
What’s New in CloudStack 4.19, Abhishek Kumar, Release Manager Apache CloudSt...ShapeBlue
 
Centralized TLS Certificates Management Using Vault PKI + Cert-Manager
Centralized TLS Certificates Management Using Vault PKI + Cert-ManagerCentralized TLS Certificates Management Using Vault PKI + Cert-Manager
Centralized TLS Certificates Management Using Vault PKI + Cert-ManagerSaiLinnThu2
 
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24Umar Saif
 
Elevating Cloud Infrastructure with Object Storage, DRS, VM Scheduling, and D...
Elevating Cloud Infrastructure with Object Storage, DRS, VM Scheduling, and D...Elevating Cloud Infrastructure with Object Storage, DRS, VM Scheduling, and D...
Elevating Cloud Infrastructure with Object Storage, DRS, VM Scheduling, and D...ShapeBlue
 
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...Product School
 
Battle of React State Managers in frontend applications
Battle of React State Managers in frontend applicationsBattle of React State Managers in frontend applications
Battle of React State Managers in frontend applicationsEvangelia Mitsopoulou
 
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlueCloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlueShapeBlue
 
Trending now: Book subjects on the move in the Canadian market - Tech Forum 2024
Trending now: Book subjects on the move in the Canadian market - Tech Forum 2024Trending now: Book subjects on the move in the Canadian market - Tech Forum 2024
Trending now: Book subjects on the move in the Canadian market - Tech Forum 2024BookNet Canada
 
VM Migration from VMware to CloudStack and KVM – Suresh Anaparti, ShapeBlue
VM Migration from VMware to CloudStack and KVM – Suresh Anaparti, ShapeBlueVM Migration from VMware to CloudStack and KVM – Suresh Anaparti, ShapeBlue
VM Migration from VMware to CloudStack and KVM – Suresh Anaparti, ShapeBlueShapeBlue
 
PrismCRM-RealEstate-SalesCRM_byCode5Company
PrismCRM-RealEstate-SalesCRM_byCode5CompanyPrismCRM-RealEstate-SalesCRM_byCode5Company
PrismCRM-RealEstate-SalesCRM_byCode5CompanyMustafa Kuğu
 
Revolutionizing The Banking Industry: The Monzo Way by CPO, Monzo
Revolutionizing The Banking Industry: The Monzo Way by CPO, MonzoRevolutionizing The Banking Industry: The Monzo Way by CPO, Monzo
Revolutionizing The Banking Industry: The Monzo Way by CPO, MonzoProduct School
 
National Institute of Standards and Technology (NIST) Cybersecurity Framework...
National Institute of Standards and Technology (NIST) Cybersecurity Framework...National Institute of Standards and Technology (NIST) Cybersecurity Framework...
National Institute of Standards and Technology (NIST) Cybersecurity Framework...MichaelBenis1
 
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...UiPathCommunity
 
Transcript: Trending now: Book subjects on the move in the Canadian market - ...
Transcript: Trending now: Book subjects on the move in the Canadian market - ...Transcript: Trending now: Book subjects on the move in the Canadian market - ...
Transcript: Trending now: Book subjects on the move in the Canadian market - ...BookNet Canada
 
Roundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfRoundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfMostafa Higazy
 
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...htrindia
 
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlueCloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlueShapeBlue
 
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...SearchNorwich
 

Recently uploaded (20)

AMER Introduction to ThousandEyes Webinar
AMER Introduction to ThousandEyes WebinarAMER Introduction to ThousandEyes Webinar
AMER Introduction to ThousandEyes Webinar
 
What’s New in CloudStack 4.19, Abhishek Kumar, Release Manager Apache CloudSt...
What’s New in CloudStack 4.19, Abhishek Kumar, Release Manager Apache CloudSt...What’s New in CloudStack 4.19, Abhishek Kumar, Release Manager Apache CloudSt...
What’s New in CloudStack 4.19, Abhishek Kumar, Release Manager Apache CloudSt...
 
Centralized TLS Certificates Management Using Vault PKI + Cert-Manager
Centralized TLS Certificates Management Using Vault PKI + Cert-ManagerCentralized TLS Certificates Management Using Vault PKI + Cert-Manager
Centralized TLS Certificates Management Using Vault PKI + Cert-Manager
 
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
 
Elevating Cloud Infrastructure with Object Storage, DRS, VM Scheduling, and D...
Elevating Cloud Infrastructure with Object Storage, DRS, VM Scheduling, and D...Elevating Cloud Infrastructure with Object Storage, DRS, VM Scheduling, and D...
Elevating Cloud Infrastructure with Object Storage, DRS, VM Scheduling, and D...
 
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
 
Battle of React State Managers in frontend applications
Battle of React State Managers in frontend applicationsBattle of React State Managers in frontend applications
Battle of React State Managers in frontend applications
 
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlueCloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
 
Trending now: Book subjects on the move in the Canadian market - Tech Forum 2024
Trending now: Book subjects on the move in the Canadian market - Tech Forum 2024Trending now: Book subjects on the move in the Canadian market - Tech Forum 2024
Trending now: Book subjects on the move in the Canadian market - Tech Forum 2024
 
VM Migration from VMware to CloudStack and KVM – Suresh Anaparti, ShapeBlue
VM Migration from VMware to CloudStack and KVM – Suresh Anaparti, ShapeBlueVM Migration from VMware to CloudStack and KVM – Suresh Anaparti, ShapeBlue
VM Migration from VMware to CloudStack and KVM – Suresh Anaparti, ShapeBlue
 
PrismCRM-RealEstate-SalesCRM_byCode5Company
PrismCRM-RealEstate-SalesCRM_byCode5CompanyPrismCRM-RealEstate-SalesCRM_byCode5Company
PrismCRM-RealEstate-SalesCRM_byCode5Company
 
Revolutionizing The Banking Industry: The Monzo Way by CPO, Monzo
Revolutionizing The Banking Industry: The Monzo Way by CPO, MonzoRevolutionizing The Banking Industry: The Monzo Way by CPO, Monzo
Revolutionizing The Banking Industry: The Monzo Way by CPO, Monzo
 
National Institute of Standards and Technology (NIST) Cybersecurity Framework...
National Institute of Standards and Technology (NIST) Cybersecurity Framework...National Institute of Standards and Technology (NIST) Cybersecurity Framework...
National Institute of Standards and Technology (NIST) Cybersecurity Framework...
 
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
 
In sharing we trust. Taking advantage of a diverse consortium to build a tran...
In sharing we trust. Taking advantage of a diverse consortium to build a tran...In sharing we trust. Taking advantage of a diverse consortium to build a tran...
In sharing we trust. Taking advantage of a diverse consortium to build a tran...
 
Transcript: Trending now: Book subjects on the move in the Canadian market - ...
Transcript: Trending now: Book subjects on the move in the Canadian market - ...Transcript: Trending now: Book subjects on the move in the Canadian market - ...
Transcript: Trending now: Book subjects on the move in the Canadian market - ...
 
Roundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfRoundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdf
 
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
 
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlueCloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
 
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
 

Gremlin's Graph Traversal Machinery

  • 1. Gremlin’s Graph Traversal Machinery Dr. Marko A. Rodriguez Director of Engineering at DataStax, Inc. Project Management Committee, Apache TinkerPop http://tinkerpop.apache.org
  • 2. f : X ! X The function f is a process that maps a structure of type X to a structure of type X.
  • 3. f(x1) = x2 The function f maps the object x1 (from the set of X) to the object x2 (from the set of X). x1 2 X x2 2 X
  • 4. f(x) A step is a function.
  • 5. f(x) Assume that this step rotates an X by 90°. 90°
  • 6. 90° The algorithm of the step is a “black box.”
  • 7. 90° A traverser wraps a value of type V. class Traverser<V> { V value; } class Traverser<V> { V value; }
  • 8. 90° The step maps an integer traverser to an integer traverser. class Traverser<V> { V value; } class Traverser<V> { V value; } Traverser<Integer> Traverser<Integer>
  • 9. 90° A traverser of with a rotation of 0° becomes a traverser with a rotation of 90°. Traverser(0) Traverser(90) class Traverser<V> { V value; } class Traverser<V> { V value; }
  • 10. 90°
  • 11. Both the input and output traversers are of type Traverser<Integer>. 90° T[N] ! T[N] 2 T[N] 2 T[N]
  • 12. A stream of input traversers… 90°
  • 13. …yields a stream of output traversers. 90°
  • 14. A traverser can have a bulk which denotes how many V values it represents. 90° class Traverser<V> { V value; long bulk; } class Traverser<V> { V value; long bulk; }
  • 15. 4 4 Bulking groups identical traversers to reduce the number of evaluations of a step. 90° class Traverser<V> { V value; long bulk; } class Traverser<V> { V value; long bulk; }
  • 16. A variegated stream of input traversers yields a variegated stream of output traversers. 90°
  • 17. 1 2 1 1 1 2 Bulking can reduce the size of the stream. 90° class Traverser<V> { V value; long bulk; } class Traverser<V> { V value; long bulk; }
  • 18. If the order of the stream does not matter… 90°
  • 19. …then reordering can increase the likelihood of bulking. 90° 1 21 total bulk = 4 total count = 4 total bulk = 4 total count = 3
  • 20. 90° 180° 270° 360° A traversal is a list of one or more steps. 90° 90° 90° 90°
  • 21. f : X ! Y Different functions can yield different mappings between different domains and ranges. h : Y ! Z
  • 22. The output of f can be the input to h because the range of f is the domain of h (i.e. Y). Y y = f(x) Z z = h(y)
  • 23. y = f(x) z = h(y)
  • 24. y = f(x) z = h(y)
  • 28. f(x) h = z
  • 29. f h = zx
  • 30. f h = zx · ·
  • 31. x · f · h = z h(f(x)) = z readable unreadable ≣
  • 32. z = x · f · h
  • 33. z = x.f().h().next() z = x · f · h stream/iterator/traversalhead/start
  • 34. 90° 225° 315° Different types of steps exist and their various compositions yield query expressivity.
  • 35. 90° 225° 315° Steps process traverser streams/flows and their composition is a traversal/iterator. = . (). ().next()90° 225°
  • 36. repeat( ).times(2) 180° Anonymous traversals can serve as step arguments. 90° traversal with a single step 90°
  • 37. repeat( ).times(2) 180° Some functions serve as step-modulators instead of steps. 90° …groupCount().by(out().count()) …select(“a”,”b”).by(“name”) …addE(“knows”).from(“a”).to(“b”) …order().by(“age”,decr)
  • 38. repeat( ).times(2) ≣ 90° 90° 180° During optimization, traversal strategies may rewrite a traversal to a more efficient, semantically equivalent form. 90° RepeatUnrollStrategy interface TraversalStrategy { void apply(Traversal traversal); Set<TraversalStrategy> applyPrior(); Set<TraversalStrategy> applyPost(); }
  • 39. repeat( ).until(0°)90° Continuously process a traverser until some condition is met.
  • 40. repeat( ).until(0°) 4 loops 2 loops 1 loop 90° 180° 360° 90°do while(x != ) repeat().until() provides do/while-semantics. 90° ≣
  • 41. until(0°).repeat( ) 0 loops 2 loops 1 loop 90° 180° 0° 90°dowhile(x != ) 90° ≣ until().repeat() provides while/do-semantics.
  • 42. until(0°).repeat( ) 3 Even if the traversers in the input stream can not be bulked, the output traversers may be able to be. 90°
  • 44. filter(x)map(x) sideEffect(x)flatMap(x) one-to-one one-to-many one-to-(one-or-none) one-to-same out(“knows”) has(“name”,”gremlin”) groupCount(“m”) where(“a”,eq(“b”)) select(“a”,”b”) path() mean() sum() count() groupCount() many-to-one(reducers) order() values(“age”) values(“name”) and(x,y) or(x,y) coin(0.5) sample(10) simplePath() dedup() store(“m”) tree(“m”) subgraph(“m”) in(“created”) group(“m”) m label() id() * A collection of examples. Not the full step library. match(x,y,z) properties() outE(“knows”) V()
  • 45. values(“age”) filter(x)map(x) sideEffect(x)flatMap(x) one-to-one one-to-many one-to-(one-or-none) one-to-same out(“knows”) has(“name”,”gremlin”) path() groupCount() simplePath() m label() outE(“knows”) group(“m”) V()
  • 46. T[V [ E] ! T[N+ ] values(“age”) filter(x)map(x) sideEffect(x)flatMap(x) one-to-one one-to-many one-to-(one-or-none) one-to-same out(“knows”) has(“name”,”gremlin”) path() groupCount() simplePath() m label() outE(“knows”) T[?] ! T[path] T[V [ E] ! T[string] T[?] ! T[?] T[V [ E] ! ; [ T[V [ E] T[?] ! ; [ T[?] T[V ] ! T[V ]⇤ T[V ] ! T[E]⇤ group(“m”) V()T[?] ! T[map[?, N+ ]] T[G] ! T[V ]⇤
  • 47. T[V [ E] ! T[N+ ] values(“age”) out(“knows”) has(“name”,”gremlin”) groupCount() T[V [ E] ! ; [ T[V [ E] T[V ] ! T[V ]⇤ V()T[?] ! T[map[?, N+ ]] T[G] ! T[V ]⇤ g.V().has(“name”,”gremlin”). out(“knows”).values(“age”). groupCount()
  • 48. T[V [ E] ! T[N+ ]values(“age”) out(“knows”) has(“name”,”gremlin”) groupCount() T[V ] ! T[V ]⇤ V() T[?] ! T[map[?, N+ ]] T[G] ! T[V ]⇤ g.V().has(“name”,”gremlin”). out(“knows”).values(“age”). groupCount() Steps can be composed if their respective domains and ranges match. T[V [ E] ! ; [ T[V [ E]
  • 49. values(“age”) out(“knows”) has(“name”,”gremlin”) groupCount() T[V ] ! T[V ]⇤ V() T[G] ! T[V ]⇤ g.V().has(“name”,”gremlin”). out(“knows”).values(“age”). groupCount() T[V ] ! ; [ T[V ] T[V ] ! T[N+ ] T[N+ ] ! T[map[N+ , N+ ]]
  • 52. g.V().has(“name”,”gremlin”). out(“knows”).values(“age”). groupCount() one graph to many vertices (flatMap) one vertex to that vertex or no vertex (filter) ? …
  • 53. g.V().has(“name”,”gremlin”). out(“knows”).values(“age”). groupCount() one graph to many vertices (flatMap) one vertex to that vertex or no vertex (filter) one vertex to many friend vertices (flatMap) ? … name=gremlin
  • 54. g.V().has(“name”,”gremlin”). out(“knows”).values(“age”). groupCount() one graph to many vertices (flatMap) one vertex to that vertex or no vertex (filter) one vertex to many friend vertices (flatMap) one vertex to one age value (map) ? … 37 name=gremlin
  • 55. g.V().has(“name”,”gremlin”). out(“knows”).values(“age”). groupCount() one graph to many vertices (flatMap) one vertex to that vertex or no vertex (filter) one vertex to many friend vertices (flatMap) one vertex to one age value (map) many age values to an age distribution (map — reducer) ? … 37 [37:2, 41:1, 24:1, 35:4]37 37 24 35 35 35 35 41 name=gremlin
  • 56. The Gremlin Traversal Language The Gremlin Traversal Machine
  • 57. a b c a b c Traversal creation via step composition Step parameterization via traversal and constant nesting a().b().c() a(b().c()).d(x)d(x) function com position function nesting fluent m ethods m ethod argum ents Any language that supports function composition and function nesting can host Gremlin. Gremlin Traversal Language
  • 58. class Traverser<V> { V value; long bulk; } class Step<S,E> { Traverser<E> processNextStart(); } f(x) class Traversal<S,E> implements Iterator<E> { E next(); Traverser<E> nextTraverser(); } The fundamental constructs of Gremlin’s machinery. Gremlin Traversal Machine interface TraversalStrategy { void apply(Traversal traversal); Set<TraversalStrategy> applyPrior(); Set<TraversalStrategy> applyPost(); } a db c a de ≣
  • 59. 1 Bytecode Gremlin-Java g.V(1). repeat(out(“knows”)).times(2). groupCount().by(“age”) [[V, 1] [repeat, [[out, knows]]] [times, 2] [groupCount] [by, age]] Traversal GraphStep GroupCountStep RepeatStep VertexStep GraphStep GroupCountStepVertexStep VertexStep Traversal Strategies GraphStep GroupCountStepVertexStep VertexStep translates compiles optimizes executes [29:2, 30:1, 31:1, 35:10]
  • 60. 1 Bytecode Gremlin-Python g.V(1). repeat(out(‘knows’)).times(2). groupCount().by(‘age’) [[V, 1] [repeat, [[out, knows]]] [times, 2] [groupCount] [by, age]] Traversal GraphStep GroupCountStep RepeatStep VertexStep GraphStep GroupCountStepVertexStep VertexStep Traversal Strategies GraphStep GroupCountStepVertexStep VertexStep translates compiles optimizes executes [29:2, 30:1, 31:1, 35:10]
  • 61. 1 Bytecode Gremlin-Python g.V(1). repeat(out(‘knows’)).times(2). groupCount().by(‘age’) [[V, 1] [repeat, [[out, knows]]] [times, 2] [groupCount] [by, age]] Traversal GraphStep GroupCountStep RepeatStep VertexStep GraphStep GroupCountStepVertexStep VertexStep Traversal Strategies GraphStep GroupCountStepVertexStep VertexStep translates compiles optimizes executes [29:2, 30:1, 31:1, 35:10] Gremlin language variant Language agnostic bytecode Execution engine assembly Execution engine optimization Execution engine evaluation LanguageMachine
  • 63. Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from gremlin_python.structure.graph import Graph >>> from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection Gremlin-Python CPython
  • 64. Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from gremlin_python.structure.graph import Graph >>> from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection >>> graph = Graph() >>> g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182','g')) Gremlin-Python DriverRemoteConnection CPython
  • 65. Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from gremlin_python.structure.graph import Graph >>> from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection >>> graph = Graph() >>> g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182','g')) # nested traversal with Python slicing and attribute interception extensions >>> g.V().hasLabel("person").repeat(both()).times(2).name[0:2].toList() [u'marko', u'marko'] Gremlin-Python Bytecode DriverRemoteConnection Gremlin Traversal Machine CPython JVM
  • 66. Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from gremlin_python.structure.graph import Graph >>> from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection >>> graph = Graph() >>> g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182','g')) # nested traversal with Python slicing and attribute interception extensions >>> g.V().hasLabel("person").repeat(both()).times(2).name[0:2].toList() [u'marko', u'marko'] # a complex, nested multi-line traversal >>> g.V().match( ... as_(“a”).out("created").as_(“b”), ... as_(“b”).in_(“created").as_(“c”), ... as_(“a”).out("knows").as_(“c”)). ... select("c"). ... union(in_(“knows"),out("created")). ... name.toList() [u'ripple', u'marko', u'lop'] >>> Gremlin-Python Bytecode DriverRemoteConnection Gremlin Traversal Machine CPython JVM
  • 67. Cypher Bytecode Distinct query languages (not only Gremlin language variants) can generate bytecode for evaluation by any OLTP/OLAP TinkerPop-enabled graph system. Gremlin Traversal Machine
  • 68. SELECT DISTINCT ?c WHERE { ?a v:label "person" . ?a e:created ?b . ?b v:name ?c . ?a v:age ?d . FILTER (?d > 30) } [ [V], [match, [[as, a], [hasLabel, person]], [[as, a], [out, created], [as, b]], [[as, a], [has, age, gt(30)]]], [select, b], [by, name], [dedup] ] Bytecode
  • 69. Graph Database OLTP Graph Processor OLAP Bytecode Bytecode Bytecode TinkerGraph DSE Graph Titan Neo4j OrientDB IBM Graph … TinkerComputer Spark Giraph Hadoop Fulgora … Gremlin Traversal Machine Traversal Traversal Traversal Gremlin traversals can be executed against OLTP graph databases and OLAP graph processors. That means that if, e.g., SPARQL compiles to bytecode, it can execute both OLTP and OLAP.
  • 70. Graph Database OLTP Graph Processor OLAP Gremlin Traversal Machine Traversal Traversal Traversal TraversalStrategies TraversalStrategies optimizes Graph system providers (OLTP/OLAP) typically have custom strategies registered with the Gremlin traversal machine that take advantage of unique, provider-specific features.
  • 71. Most OLTP graph systems have a traversal strategy that combines [V,has*]-sequences into a single global index-based flatMap-step. g.V().has(“name”,”gremlin”). out(“knows”).values(“age”). groupCount() one graph to many vertices using index lookup (flatMap) GraphStepStrategy one graph to many vertices (flatMap) one vertex to that vertex or no vertex (filter) ? … compiles optimizes name=gremlin DataStax Enterprise Graph
  • 72. Most OLAP graph systems have a traversal strategy that bypasses Traversal semantics and implements reducers using the native API of the system. g.V().count() one graph to long (map — reducer) rdd.count() 12,146,934 compiles one graph to many vertices (flatMap) many vertices to long (map — reducer) … 12,146,934 optimizes SparkInterceptorStrategy …
  • 73. Physical Machine DataProgram Traversal Heap/DiskMemory Memory Memory/Graph System Physical Machine Java Virtual Machine bytecode steps DataProgram Memory/DiskMemory Physical Machine instructions Java Virtual Machine Gremlin Traversal Machine From the physical computing machine to the Gremlin traversal machine.
  • 74. Stakeholders Language Providers Gremlin Language Variant Distinct Query Language Application Developers Graph System Providers OLAP Provider OLTP Provider
  • 75. Stakeholders Application Developers One query language for all OLTP/OLAP systems. GremlinG = (V, E) Real-time and analytic queries are represented in Gremlin. Graph Database OLTP Graph Processor OLAP
  • 76. Stakeholders Application Developers One query language for all OLTP/OLAP systems. No vendor lock-in. Apache TinkerPop as the JDBC for graphs. DataStax Enterprise Graph
  • 77. Stakeholders Application Developers One query language for all OLTP/OLAP systems. No vendor lock-in. Gremlin is embedded in the developer’s language. Iterator<String> result = g.V().hasLabel(“person”). order().by(“age”). limit(10).values(“name”) vs. ResultSet result = statement.executeQuery( “SELECT name FROM People n” + “ ORDER BY age n” + “ LIMIT 10”) Grem lin-Java SQL in Java No “fat strings.” The developer writes their graph database/processor queries in their native programming language.
  • 78. Stakeholders Language Providers Gremlin Language Variant Distinct Query Language Easy to generate bytecode. GraphTraversal.getMethods() .findAll { GraphTraversal.class == it.returnType } .collect { it.name } .unique() .each { pythonClass.append( """ def ${it}(self, *args): self.bytecode.add_step(“${it}”, *args) return self “””)} Gremlin-Python’s source code is programmatically generated using Java reflection.
  • 79. Stakeholders Language Providers Gremlin Language Variant Distinct Query Language Easy to generate bytecode. Bytecode executes against TinkerPop-enabled systems. Language providers write a translator for the Gremlin traversal machine, not a particular graph database/processor. DataStax Enterprise Graph
  • 80. Graph Database OLTP Graph Processor OLAP Stakeholders Language Providers Gremlin Language Variant Distinct Query Language Easy to generate bytecode. Bytecode executes against TinkerPop-enabled systems. Provider can focus on design, not evaluation. Gremlin Traversal Machine The language designer does not have to concern themselves with OLTP or OLAP execution. They simply generate bytecode and the Gremlin traversal machine handles the rest.
  • 81. Easy to implement core interfaces. Graph System Providers Stakeholders OLAP Provider OLTP Provider Vertex Edge Graph Transaction TraversalStrategy Property key=value ? ? ?
  • 82. Provider supports all provided languages. Easy to implement core interfaces. Graph System Providers Stakeholders OLAP Provider OLTP Provider The provider automatically supports all query languages that have compilers that generate Gremlin bytecode.
  • 83. OLTP providers can leverage existing OLAP systems. Provider supports all provided languages. Easy to implement core interfaces. Graph System Providers Stakeholders OLAP Provider OLTP Provider DSE Graph leverages SparkGraphComputer for OLAP processing. DataStax Enterprise Graph
  • 84. Stakeholders Language Providers Gremlin Language Variant Distinct Query Language Application Developers Graph System Providers OLAP Provider OLTP Provider One query language for all OLTP/OLAP systems. No vendor lock-in. Gremlin is embedded in the developer’s language. Easy to generate bytecode. Bytecode executes against TinkerPop-enabled systems. Provider can focus on design, not evaluation. Easy to implement core interfaces. Provider supports all provided languages. OLTP providers can leverage existing OLAP systems.