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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Mike Dias
July 08, 2016
Technology
97
0
Share
Grafos com TinkerPop3 e TitanDB - TDC2016
Mike Dias
July 08, 2016
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
440
Index Activiti data on Elasticsearch
mikedias
0
400
TinkerPop Blueprints
mikedias
0
86
Other Decks in Technology
See All in Technology
基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地
cm_yasuhara
0
340
自作エディターをOSSにして分かった、一人に刺さる開発が世界を動かす理由
shinyasaita
1
440
20260528_生成AIを専属DSに_Howの次にすべきことを考える
doradora09
PRO
0
220
Javaコミュニティをもっと楽しむための9箇条
takasyou
0
250
AI活用の格差をなくす:チーム全体のAI開発生産性を底上げする方法
moongift
PRO
1
110
AIAgentと取り組むKaggle
508shuto
2
610
A Harness for Behaviour: how to get AI to generate code that does what we intend, or "TDD in the age of AI"
xpmatteo
0
450
GitHub Copilot CLI の Rubber Duck 機能を使ってコーディングの品質をあげよう #techbaton_findy
stefafafan
2
1.1k
Agentic Design Patterns
glaforge
0
230
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
4
950
freee-mcpを Local→Remote で出してわかった MCP認可実装のリアル
terara
3
800
Node.js+TypeScriptにおけるCJS/ESM相互運用の最新ポイント
grainrigi
2
130
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
520
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
560
Unsuck your backbone
ammeep
672
58k
sira's awesome portfolio website redesign presentation
elsirapls
0
250
Docker and Python
trallard
47
3.8k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
240
Designing for Performance
lara
611
70k
How to Ace a Technical Interview
jacobian
281
24k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
For a Future-Friendly Web
brad_frost
183
10k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
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?