Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Grafos com TinkerPop3 e TitanDB - TDC2016
Search
Mike Dias
July 08, 2016
Technology
0
88
Grafos com TinkerPop3 e TitanDB - TDC2016
Mike Dias
July 08, 2016
Tweet
Share
More Decks by Mike Dias
See All by Mike Dias
Elytics: Métricas em tempo real no Elo7
mikedias
0
120
Grafos distribuídos com Titan:db
mikedias
0
410
Index Activiti data on Elasticsearch
mikedias
0
380
TinkerPop Blueprints
mikedias
0
72
Other Decks in Technology
See All in Technology
サイボウズフロントエンドの横断活動から考える AI時代にできること
mugi_uno
1
180
専門分化が進む分業下でもユーザーが本当に欲しかったものを追求するプロダクトマネジメント/Focus on real user needs despite deep specialization and division of labor
moriyuya
2
1.4k
アカデミーキャンプ 2025 SuuuuuuMMeR「燃えろ!!ロボコン」 / Academy Camp 2025 SuuuuuuMMeR "Burn the Spirit, Robocon!!" DAY 1
ks91
PRO
0
150
意志の力が9割。アニメから学ぶAI時代のこれから。
endohizumi
1
100
Claude CodeでKiroの仕様駆動開発を実現させるには...
gotalab555
3
1.1k
[OCI Technical Deep Dive] OracleのAI戦略(2025年8月5日開催)
oracle4engineer
PRO
1
220
【新卒研修資料】数理最適化 / Mathematical Optimization
brainpadpr
29
14k
Segment Anything Modelの最新動向:SAM2とその発展系
tenten0727
0
900
ZOZOTOWNの大規模マーケティングメール配信を支えるアーキテクチャ
zozotech
PRO
0
580
Delegate authentication and a lot more to Keycloak with OpenID Connect
ahus1
0
240
[OCI Technical Deep Dive] OCIで生成AIを活用するためのソリューション解説(2025年8月5日開催)
oracle4engineer
PRO
0
110
Claude Codeは仕様駆動の夢を見ない
gotalab555
23
7k
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1031
460k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
The Invisible Side of Design
smashingmag
301
51k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Docker and Python
trallard
45
3.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
810
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Transcript
Titan:db TinkerPop3 Grafos com e @mike_dias
@mike_dias
None
Agenda • Grafos • TinkerPop3 • TitanDB
Grafos
mother name: hercules age: 30 type: demigod name: alcmene age:
24 type: human name: jupter age: 5000 type: god father
mother name: hercules age: 30 type: demigod name: alcmene age:
24 type: human name: jupter age: 5000 type: god father Vertex
mother name: hercules age: 30 type: demigod name: alcmene age:
24 type: human name: jupter age: 5000 type: god father Edge
mother name: hercules age: 30 type: demigod name: alcmene age:
24 type: human name: jupter age: 5000 type: god father Property
Property Graph
Por que usar grafos
Modelagem intuitiva
Queries expressivas
Casos de uso Recomendações personalizadas Influência social
Casos de uso Melhor rota Detecção de fraude
Quero usar grafos! #comofas?
Apache TinkerPop • Vendor-agnostic graph compute framework • Gremlin -
graph traversal language • Capacidades OLTP e OLAP
Core API Graph graph = TinkerGraph.open(); Vertex nosql =
graph.addVertex("trilha"); nosql.property("nome", "NoSQL"); Vertex tdc2016 = graph.addVertex("evento"); tdc2016.property("nome", "TDC 2016"); Edge e = nosql.addEdge("compoe", tdc2016); e.property("data", "08/07/2016");
Core API Graph graph = Neo4jGraph.open("..."); Vertex nosql =
graph.addVertex("trilha"); nosql.property("nome", "NoSQL"); Vertex tdc2016 = graph.addVertex("evento"); tdc2016.property("nome", "TDC 2016"); Edge e = nosql.addEdge("compoe", tdc2016); e.property("data", "08/07/2016");
TinkerPop-enabled Vendors TitanGraph.open(…) Neo4jGraph.open(…) OrientGraph.open(…) StardogGraph.open(…) DSEGraph.open(…) BlazeGraph.open(…)
Gremlin lang What are the names of Gremlin's friends' friends?
g.V().has("name","gremlin"). out("knows"). out("knows"). values("name")
Gremlin console
OLTP vs OLAP
Spark computer graph = GraphFactory.open(…); g = graph.traversal(). withComputer(SparkGraphComputer.class);
g.V().hasLabel("person").groupCount().by("age")
Giraph computer graph = GraphFactory.open(…); g = graph.traversal(). withComputer(GiraphGraphComputer.class);
g.V().hasLabel("person").groupCount().by("age")
Gremlin server REST WebSockets
Learn more http://sql2gremlin.com https://academy.datastax.com/courses/ds232-the-gremlin-graph-query-language https://academy.datastax.com/resources/getting-started-graph-databases http://tinkerpop.apache.org
Meu grafo é muito grande. #comofas?
Titan:db • Suporte nativo ao TinkerPop3 • Storages configuráveis •
Licença Apache 2
Backend flexível
Titan:db + • Disponibilidade contínua sem ponto único de falha
• Sem gargalos na leitura ou escrita no grafo • Escalabilidade elástica • Cache de dados frequentemente acessados
• Leituras e escritas estritamente consistentes • Escalabilidade linear •
Integração com o ecossistema Hadoop Titan:db +
g.V().has('name',CONTAINS,'Bob') g.V().has('place',WITHIN,Geoshape.circle(37.97,23.72,50)) Full text & Geo Search
Vertex centric index
Graph partitioning
Disclaimer
Quem está usando?
http://arli.us/edu-planet-scale
http://arli.us/magazinaluiza
http://arli.us/cisco-sec1
http://pt.slideshare.net/Hadoop_Summit/t-235p230-ctang
https://videos.dabcc.com/aws-reinvent-2015-dat203-building- graph-databases-on-aws/
Concluindo… • Vários casos de uso resolvidos com Grafos •
Quando for usar grafos, use TinkerPop3 • Titan transforma Big Data em Big "Graph" Data
Obrigado! @mike_dias
[email protected]
Dúvidas?