how graph databases can save your bacon
TRANSCRIPT
![Page 1: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/1.jpg)
GRAPH DATABASES
SAVE YOUR BACON
NEO4J FOR DEV TEAMSCreated by / Jeffrey A. Miller @xagronaut
![Page 2: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/2.jpg)
THE BEGINNING
![Page 3: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/3.jpg)
WHERE YOU WORK
BONZAI BACON
(.COM)
![Page 4: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/4.jpg)
PROJECT:
BACONBIZ 2.0
![Page 5: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/5.jpg)
FEATURES
LONG PROJECT
SCOPE CREEP
![Page 6: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/6.jpg)
FEATURES
UNSTABLE
REQUIREMENTS
![Page 7: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/7.jpg)
FEATURES
LOTS OF CODE
LOTS OF BUGS
![Page 8: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/8.jpg)
FEATURES
LOW MORALE
HIGH TURNOVER
![Page 9: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/9.jpg)
BACONBIZ
2.0
NEEDS HELP
![Page 10: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/10.jpg)
THESE ARE NOT NEW
PROBLEMS
![Page 11: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/11.jpg)
EVERY DAY PROBLEMS:
Team members work in isolationInformation is not sharedBugs go undetectedFixes are costly
![Page 12: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/12.jpg)
![Page 13: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/13.jpg)
KEVINKEVIN'S PROBLEM(S)
KEVIN DOESN'T KNOW
THE CODE BASE
OR THE TOOLS
![Page 14: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/14.jpg)
KEVIN'S PROBLEM(S)
CHANGES ARE TRICKY
CODE IS FRAGILE
![Page 15: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/15.jpg)
KEVIN'S PROBLEM(S)
WHERE TO START?
WHEN IS IT DONE?
WHEN IS IT RIGHT?
![Page 16: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/16.jpg)
KEVIN'S RESPONSE…?
![Page 17: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/17.jpg)
STRESSED KEVIN
![Page 18: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/18.jpg)
![Page 19: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/19.jpg)
WHAT IF?
GRAPH DATABASES CAN
HELP
![Page 20: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/20.jpg)
INTRO TO GRAPH
DATABASES
![Page 21: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/21.jpg)
WHAT'S A GRAPH?
A (directed) graph is a set of nodesconnected by edges, where the edges have
a direction associated with them.
![Page 22: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/22.jpg)
WHAT'S A GRAPH
DATABASE?
a database designed to efficiently storeand model items (nodes) and the
relationships (edges) between them
![Page 23: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/23.jpg)
WHAT'S
DIFFERENT
ABOUT A
GRAPH DATABASE?
![Page 24: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/24.jpg)
GRAPH VS. RELATIONAL
Data is stored together naturallyMost are schema-less by default
![Page 25: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/25.jpg)
EXPRESSIVE QUERIES!
YOUR QUERY LANGUAGE SHOULD
ANSWER YOUR
QUESTIONS!
![Page 26: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/26.jpg)
HOW ARE THEY USED?
Finding connectionsRoute calculationsRecommendation systems
![Page 27: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/27.jpg)
MEET
OPEN SOURCE GRAPH DATABASE
![Page 28: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/28.jpg)
BACKGROUND
Mature (since 2007)Significant adoptionSupported by Neo Technologies, Inc.Cloud hosting available
![Page 29: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/29.jpg)
FIRST-CLASS
RELATIONSHIPS
No more many-to-many tables!Properties are allowedDescriptive labels
![Page 30: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/30.jpg)
WHY NOT USE A
SPREADSHEET?
tab for every type of datatab for every kind of relationshipenjoy creating pivot tables with VLOOKUPs?spreadsheets live in SharePoint?
![Page 31: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/31.jpg)
AND NOW...
![Page 32: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/32.jpg)
NEO4J BROWSER TOUR
Browser layoutQuery and ResultsOverview, Favorites, InformationQueriesResults
![Page 33: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/33.jpg)
RESULTS
VisualizationsCustomize color & sizeAuto-completeDouble-click (dynamic load)Real-time stylingGRASS files
![Page 34: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/34.jpg)
EXPORT
Image (SVG, PNG)Data (CSV, JSON)
![Page 35: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/35.jpg)
TUTORIALS & SAMPLES
:play start:play concepts:play query template
![Page 36: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/36.jpg)
TUTORIALS:
:PLAY START// :play start :play start
Try it!
![Page 37: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/37.jpg)
TUTORIALS
:PLAY CONCEPTS// :play concepts :play concepts
Try it!
![Page 38: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/38.jpg)
TUTORIALS
:PLAY QUERY TEMPLATE// :play query template :play query template
Try it!
![Page 39: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/39.jpg)
MEET
CYPHER
YOUR NEW QUERY LANGUAGE
![Page 40: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/40.jpg)
CREATING DATA
CREATE KEVIN// Create Kevin MERGE (kevin:Person { name: "Kevin" }) RETURN kevin;
Try it!
![Page 41: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/41.jpg)
PATTERN MATCHING
MATCH (n)
where (n) is a pattern
![Page 42: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/42.jpg)
MATCH EXAMPLE
FIND KEVIN!// Find Kevin! MATCH (kevin:Person { name: "Kevin" }) RETURN kevin;
Try it!
![Page 43: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/43.jpg)
SHOW ME EVERYTHING!
GET EVERYTHING// Get everything MATCH n OPTIONAL MATCH (n)‐[r]‐() RETURN n, r;
Try it!
![Page 44: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/44.jpg)
DON'T FORGET A LIMIT
USE LIMITS// Use limits MATCH (n) OPTIONAL MATCH (n)‐[r]‐() RETURN n, r LIMIT 25;
Try it!
![Page 45: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/45.jpg)
"ARROW" SYNTAX
Direction (a)‐‐>(b)
Hops (a)‐[*1..2]‐>(b)
Label (a)‐[:KNOWS]‐>(b)
![Page 46: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/46.jpg)
WHICH DIRECTION?
(a)-->(b)
…OR…
(a)<--(b)
![Page 47: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/47.jpg)
HOW MANY HOPS?
(a)-[*1..2]->(b)
![Page 48: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/48.jpg)
WHAT KIND?
(a)-[:KNOWS]->(b)
:KNOWS IS A LABEL
![Page 49: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/49.jpg)
EXAMPLE
PART_O
F
TestCase
TestSuite
![Page 50: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/50.jpg)
MERGE AND SET
DESCRIBE KEVIN// Describe Kevin MERGE (kevin:Person { name: "Kevin" }) ON CREATE SET specialty = "CSS baby!" RETURN kevin;
Try it!
![Page 51: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/51.jpg)
HOW DOES THAT HELP MY
TEAM?
![Page 52: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/52.jpg)
REMEMBER KEVIN?
![Page 53: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/53.jpg)
WHY'S IT SO HARD?
Manual preparationToo much workEmail reviewQueries in work tracking tools
![Page 54: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/54.jpg)
TOOL LIMITS
Query languages: SQLExcel filtering and sorting
![Page 55: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/55.jpg)
WE CAN GIVE HIM A
MAP
REFERENCES
REFERENCESREFERENCES
CssFile
JsFile
MvcView
MvcContr…
![Page 56: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/56.jpg)
GRAPH STRATEGIES
FOR
SOFTWARE SUCCESS
![Page 57: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/57.jpg)
STRATEGY #1:
MODEL
WHAT YOU WANT TO
MASTER
![Page 58: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/58.jpg)
HUMAN DOMAIN
INCLUDED_IN
INCLUDED_IN
INCLUDED_IN
INCLUDED_IN
INCLUDE
D_IN
PART_…
MEMBER_OF
EMPLO
YED_BY
Human
Audience
Role
Person
Organizat…
Group
![Page 59: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/59.jpg)
TESTING DOMAIN
REPORTED_IN
RELATES_TO
APPLIES_TO
APPLIES_TO
RELATES_TOPART_OF
COVERS
Defect
Environment
Feature
UserProfile
Requirement
TestCase
TestSuite
UserStory
![Page 60: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/60.jpg)
DOMAINS CAN OVERLAP
PROCESS DOMAIN (W/ TESTING)
INCLUDED_INPART_OF
RELATES_TO
INCLUDED_
IN INCLUDED_IN
APPLIES_TO
APPLIES_TO
RELATES_TO
PART_OF
COVERS
CheckIn
Defect
Feature
Iteration
UserProfile
Release
Requirement
TaskTestCase
TestSuite
UserStory
![Page 61: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/61.jpg)
STRATEGY #2:
CONNECT
WHAT YOU WANT TO
CONTROL
![Page 62: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/62.jpg)
MAKE CONNECTIONS
USE HIGH-LEVEL CONCEPTSReleasesFeaturesAreas
![Page 63: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/63.jpg)
GET FEATURES// Get features MATCH (feature:Feature) RETURN feature;
Try it!
![Page 64: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/64.jpg)
STRATEGY #3:
CONTRIBUTE
WHAT YOU WANT TO
CREATE
![Page 65: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/65.jpg)
MINE YOUR DATA
STEPS TO BUILD YOUR MODEL
![Page 66: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/66.jpg)
WHO HAS IT?
DBAs Tables, procs & queries
QAs Test cases
Devs Code
BAs Requirements docs
![Page 67: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/67.jpg)
DEVS:
COMB YOUR CODE BASE!
Style sheetsJavaScript filesMVC viewsBusiness objects
![Page 68: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/68.jpg)
USE YOUR TOOLS
THINGS YOU ALREADY KNOWSQL (information_schema.* views)Find in Files (Regex included)Command-line (dir *.css /s /a /b)And...
![Page 70: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/70.jpg)
WHICH IS EASIER?
COMBING THROUGH LOTS OF HTML…?<html>… <link rel="stylesheet" href="some‐styles.css" /> <!‐‐ … or in ASP.NET MVC… ‐‐> <link rel="stylesheet" href='@Url.Content("~/Styles/some‐styles.css")' />…<html>
![Page 71: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/71.jpg)
OR THIS?
MATCH CSS FILES WITH MVC VIEWS// MATCH CSS files with MVC views MATCH (c:CssFile)‐[r]‐(v:MvcView) RETURN DISTINCT c, v
Try it!
![Page 72: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/72.jpg)
CSV LOAD WEB CODE ITEMS// CSV Load Web code items LOAD CSV WITH HEADERS FROM "http://localhost/SaveYourBacon/import/NewCssFiles.txt" AS csvLine FIELDTERMINATOR '\t' MERGE (css:CssFile { name: csvLine.CssFile }) MERGE (view:MvcView { name: csvLine.MvcView }) MERGE (view)‐[:USES]‐>(css) RETURN DISTINCT view, css;
Try it!
![Page 73: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/73.jpg)
GET CSS FILES// Get CSS files MATCH (n:CssFile) RETURN n;
Try it!
![Page 74: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/74.jpg)
CSS TO MVC VIEW?// CSS to MVC View? MATCH (css:CssFile)‐[]‐(vw:MvcView) RETURN css, vw;
Try it!
![Page 75: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/75.jpg)
CSS TO MVC VIEW, MAYBE MVC CONTROLLERS?// CSS to MVC View, maybe MVC Controllers? MATCH (css:CssFile)‐[]‐(vw:MvcView) OPTIONAL MATCH (vw)‐[]‐(ctl:MvcController) RETURN css, vw, ctl;
Try it!
![Page 76: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/76.jpg)
DEVS WIN!
PREDICT IMPACTS
LESS REWORK
MORE FEATURES
![Page 77: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/77.jpg)
RELAXED KEVIN
![Page 78: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/78.jpg)
![Page 79: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/79.jpg)
KEVIN CHECKS IN HIS CHANGES// Kevin checks in his changes MATCH (kevin:Person { name: "Kevin" }) MATCH (global_css:CssFile { name: "Global.css" }) MATCH (details_css:CssFile { name: "ProductDetails.css" }) MERGE (checkin:CheckIn { name: "Change set 2231", description : "CSS fixes for product details" }) MERGE (global_css)‐[:INCLUDED_IN]‐>(checkin) MERGE (details_css)‐[:INCLUDED_IN]‐>(checkin) MERGE (kevin)‐[:SUBMITTED { submitDate : "2015‐0
![Page 80: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/80.jpg)
MERGE (kevin)‐[:SUBMITTED { submitDate : "2015‐0
6‐13" }]‐>(checkin)RETURN kevin, global_css, details_css, checkin;
Try it!
![Page 81: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/81.jpg)
BUSINESS ANALYSTS:
DON'T JUST STOP THERE!
User storiesBack logRequirements documentsTest cases
![Page 82: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/82.jpg)
THINK VISUALLY
REPORTED_IN
RELATES_TO
APPLIES_TO
APPLIES_TO
RELATES_TOPART_OF
COVERS
Defect
Environment
Feature
UserProfile
Requirement
TestCase
TestSuite
UserStory
![Page 83: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/83.jpg)
SEE WHAT'S MISSING
![Page 84: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/84.jpg)
INCLUDED_IN
INCLUDED_IN
INCLU
DED
_IN
INCLUDED…
INCLUDED_IN
INCLU
D…
INCLUDED…
INCLUDED_IN INCLUDED_IN
INCLUDED_IN
IN…
INCLUDED_IN
INCLUD
ED_IN
INCLUDED_IN
INCLUDED_IN
PART_OF
APPLIES…
R…
MEMBER_OF
EMPLOYE
D_BY
ASSIG
NED_TO
PART_OF
COVERS
CheckIn
Release
Iteration
Task
UserStory
File
VsProjectVsSolution
Human
Organization
Role
Person
Group
Skill
Process
Requirement
TestCase
![Page 85: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/85.jpg)
BUSINESS ANALYSTS WIN!
REQUIREMENTS
COVERAGE
BETTER ACCEPTANCE
TESTS
![Page 86: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/86.jpg)
QA:
TACKLE YOUR TESTS!
Automated testsIntegration testsUnit testsFeatures
![Page 87: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/87.jpg)
WHAT FEATURES DID KEVIN AFFECT?// What features did Kevin affect? MATCH (checkin:CheckIn { name: "Change set 2231" }) MATCH (css_file)‐[:INCLUDED_IN]‐>(checkin) MATCH (css_file)‐[]‐(vw:MvcView) MATCH (vw)‐[fr*1..3]‐(feature:Feature)RETURN checkin, css_file, vw, feature, fr;
Try it!
![Page 88: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/88.jpg)
DATA: WHAT TESTS DOES QA NEED TO RUN?// Data: What tests does QA need to run? MATCH (checkin:CheckIn { name: "Change set 2231" }) MATCH (css_file)‐[:INCLUDED_IN]‐>(checkin) MATCH (css_file)‐[]‐(vw:MvcView) MATCH (vw)‐[fr*1..3]‐(feature:Feature)MATCH (t_case:TestCase)‐[]‐(t_suite:TestSuite)‐[*1..2]‐(feature) RETURN DISTINCT t_suite.name AS `Test Suite`, t_case.name AS `Test Case`;
Try it!
![Page 89: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/89.jpg)
DATA: WHAT NEEDS TESTED FOR THIS RELEASE?// Data: What needs tested for this release? MATCH (rel:Release { name: "Release v2.3" })‐[]‐(checkin:CheckIn)‐[*1..4]‐(feature:Feature)‐[]‐(suite:TestSuite)‐[]‐(testCase:TestCase) RETURN DISTINCT rel.name AS `Release`, checkin.name AS `Check‐in`, suite.name AS `Test Suite`, testCase.name AS `Test Case`;
Try it!
![Page 90: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/90.jpg)
QA WINS!
BROADER COVERAGE
FEWER REGRESSIONS
MORE AUTOMATION
![Page 91: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/91.jpg)
PROJECT LEADERSHIP
NEEDS TO KNOW:What's scheduledRelease notes
![Page 92: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/92.jpg)
WHAT'S SCHEDULED FOR RELEASE V2.3?// What's scheduled for Release v2.3? MATCH (release_v2_3:Release { name : "Release v2.3" }) OPTIONAL MATCH (release_v2_3)<‐[r]‐() RETURN release_v2_3, r;
Try it!
![Page 93: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/93.jpg)
WHAT'S IN RELEASE V2.3?// What's in release v2.3? MATCH (rel_v2_3:Release { name: "Release v2.3" }) OPTIONAL MATCH (rel_v2_3)‐[]‐(checkin:CheckIn) RETURN rel_v2_3, checkin;
Try it!
![Page 94: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/94.jpg)
PROJECT LEADERSHIP
REPORTING WITH
CONFIDENCE
INCREASED
CREDIBILITY
![Page 95: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/95.jpg)
OPERATIONS
NEEDS TO KNOW:What's deployedWhat's at risk
![Page 96: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/96.jpg)
ADD V2.3 TO UAT// Add v2.3 to UAT MATCH (rel_v2_3:Release { name: "Release v2.3" }) MATCH (uat:Environment { name: "UAT Environment"}) MERGE (rel_v2_3)‐[r_1_3:DEPLOYED_IN]‐>(uat) RETURN uat, rel_v2_3, r_1_3;
Try it!
![Page 97: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/97.jpg)
RELEASES IN ENVIRONMENTS// Releases in environments MATCH (rel:Release)‐[i]‐(env:Environment) RETURN rel, i, env;
Try it!
![Page 98: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/98.jpg)
OPERATIONS WINS!
CLARITY OF WHAT'S
DEPLOYED
WHO TO CALL FOR
SOLUTIONS
![Page 99: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/99.jpg)
BOTTOM LINE
![Page 100: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/100.jpg)
BUSINESS POTENTIAL
MORE PREDICTABILITY
MORE CONFIDENCE
BOLDER INNOVATION
![Page 101: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/101.jpg)
RECAP
WHAT'S NEXT?
![Page 102: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/102.jpg)
ASK YOURSELF.. .
CAN YOU ANSWER?How much test coverage do I have? by feature, by release, by check-in?Which parts of the app should users re-test?Features with high code thrash?Features with most defects?
![Page 106: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/106.jpg)
GRAPHGISTS
80 different problem domainsInteractive open source samples
GRAPHGIST.NEO4J.COM
![Page 108: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/108.jpg)
QUESTIONS?
![Page 109: How Graph Databases Can Save Your Bacon](https://reader031.vdocument.in/reader031/viewer/2022021815/586e057b1a28ab14178b6018/html5/thumbnails/109.jpg)
THANK YOU
Code & Slides
jmill.net/neo4j
Connectjmill.net/connect
Twitter@xagronaut