Graph Databases for SQL Server Professionals
-
Upload
stephane-frechette -
Category
Technology
-
view
1.291 -
download
6
description
Transcript of Graph Databases for SQL Server Professionals
![Page 1: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/1.jpg)
Graph Databases for SQL Server Professionals
Stéphane FréchetteThursday September 18, 2014
![Page 2: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/2.jpg)
Who am I?
My name is Stéphane Fréchette
SQL Server MVP | Consultant | Speaker | Database & BI Architect | NoSQL. Drums, good food and fine wine. Founder @ukubu, @GatineauOuverte, @TEDxGatineau
I have a passion for architecting, designing and building solutions that matter.
Twitter: @sfrechetteBlog: stephanefrechette.comEmail: [email protected]
![Page 3: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/3.jpg)
Session Outline
• What is a Graph?• What is Neo4j?• Data Modeling – The Property Graph• Cypher Query Language• Importing Data…• Use Cases• Demos• Resources
![Page 4: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/4.jpg)
What is a Graph?
![Page 5: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/5.jpg)
Are these Graphs?
![Page 6: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/6.jpg)
This is a Graph
Node
Relationship
A Property Graph
![Page 7: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/7.jpg)
Organization Project Graph
![Page 8: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/8.jpg)
Twitter Social Graph
![Page 9: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/9.jpg)
What is Neo4j?
An open-source graph database by Neo Technology. Neo4j stores data in nodes connected by directed, typed relationships with properties on both, also know as a Property Graph
• Fully ACID compliant• Massively scalable, up to several billion
nodes/relationships/properties• Highly-available, when distributed across multiple
machines• Accessible by a convenient REST interface or an
object-oriented Java API
![Page 10: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/10.jpg)
Data Modeling
From SQL Server to Graph
Property Graph
![Page 11: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/11.jpg)
Example: Meetup Data In SQL Server
ID Member
1 Daniel
2 Stephane
3 John
4 Randy
ID Name
1 Ottawa SQL Server User Group
2 Ottawa JavaScript
3 Ottawa Visio User Group
4 Ottawa Tableau User Group
5 Dirty Dancing Ottawa
MemberID MeetupID
2 1
1 2
3 3
2 4
3 5
MemberID MeetupID
3 1
3 2
4 2
4 4
1 5
Member MeetupMeetupOrganizer MeetupMember
![Page 12: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/12.jpg)
Example: Meetup Data In a Graph Member Meetup
name: ‘Stephane’
name: ‘Ottawa Tableau User Group’
name: ‘Ottawa SQL Server User Group’
name: ‘John’
name: ‘Ottawa JavaScript’
name: ‘Dirty Dancing Ottawa’
name: ‘Ottawa Visio User Group’
name: ‘Randy’
name: ‘Daniel’
IS_ORGANIZER
IS_ORG
ANIZER
IS_ORGANIZER
IS_ORGANIZER
IS_ORGANIZER
IS_MEMBER
IS_MEMBER
IS_M
EMBE
R
IS_MEM
BER
IS_MEMBER
![Page 13: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/13.jpg)
Cypher Query Language
Cypher is a declarative graph query language that allows for expressive and efficient querying and updating of the graph store
• Pattern-matching• Declarative: what to retrieve, not how to retrieve it• Inspired from other known Language (SQL, SPARQL, Haskell, Python)• Aggregation, Ordering, Limit• Update the Graph
![Page 14: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/14.jpg)
Cypher and T-SQL
Cypher also has a number of keywords that have a direct equivalence with SQL which makes it a curiously familiar language
• WHERE• ORDER BY• LIMIT• SUM, COUNT, STDEVP, MIN, MAX etc…• LTRIM, UPPER, LOWER, REPLACE, LEFT, RIGHT, SUBSTRING• DISTINCT• CASE
(SQL Server Pros) – [:WILL_LOVE] -> (Cypher)
![Page 15: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/15.jpg)
Cypher - Meetup
![Page 16: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/16.jpg)
Neo4j Browser
![Page 17: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/17.jpg)
Demo(let’s query some data…)
![Page 18: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/18.jpg)
Importing Data…
![Page 19: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/19.jpg)
Importing Data…
Some important considerations…Different import scenarios
• Dataset size: 1000s, 100000s, 10000000s• Dataset format (source): Database, File (CSV, Spreadsheet, GraphML, Geoff), Service, Other• Import type: Initial Bulk Load, Incremental Load, Initial Bulk Load + Incremental Load
Different import tools
• Spreadsheet based• Neo4j-shell based: (Cypher, neo4j-shell-tools, Cypher LOAD CSV)• Command-line based: Batch Importer• Neo4j Brower based• ETL Tools: (Talend, Mulesoft, Pentaho Kettle)• Custom software: (Java API, REST API, Spring Data Neo4j)
![Page 20: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/20.jpg)
Many different mappings
Not always clear what you should be using Depends on your skillsets, dataset size… (lots of other stuff)
Choose wisely!
Import Scenarios Import Tools
![Page 21: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/21.jpg)
Demo(walkthrough on importing data…)
![Page 22: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/22.jpg)
The Sample Dataset
![Page 23: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/23.jpg)
Importing using Spreadsheets
Very small size datasets < 1000, easy to use
Format data in spreadsheet
Generate Cypher statements with
formulas
Copy and Execute Cypher in Neo4j
browser
![Page 24: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/24.jpg)
Importing using Spreadsheets
![Page 25: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/25.jpg)
Importing using neo4j-shell-tools
Small to medium size datasetshttps://github.com/jexp/neo4j-shell-tools
Format data in CSV files
Create import-cypher commands for
neo4j-shell-tools
Execute commands from neo4j-shell
![Page 26: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/26.jpg)
Importing using neo4j-shell-tools
![Page 27: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/27.jpg)
Importing using LOAD CSV
Native Cypher
Format data in CSV files
Create “LOAD CSV” commands
Execute command from neo4j-shell or
browser
Additional “cleanup” for
Labels and RelTypes
![Page 28: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/28.jpg)
Importing using LOAD CSV
![Page 29: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/29.jpg)
Importing using Batch Importer
Non-transactional import, suited for very very large datasets
Format data in TSV files
Execute Batch Import command
Copy store files to Neo4j Server
directory
Start Neo4j Server with generated
store files
![Page 30: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/30.jpg)
Use Cases
Principal uses of Graph Database include
• Network and Data Center Management(Queries: Impact Analysis, Root Cause Analysis, Quality-of-Service Mapping, Asset Management)
• Authorization and Access(Queries : Access Management, Interconnected Group Organization, Provenance)
• Social(Queries : Friend Recommendations, Sharing & Collaboration, Influencer Analysis)
• Geo(Queries : Routing, Logistics, Capacity Planning)
• Recommendations(Queries : Product, Social, Service, and Professional Recommendations)
• Fraud Detection
http://www.neotechnology.com/neo4j-use-cases/
![Page 31: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/31.jpg)
Summary
(graphs)-[:ARE]->(everywhere)
![Page 32: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/32.jpg)
Resources• Neo Technology http://www.neotechnology.com/
• Neoj.org (Learn, Develop, Downloads,…) http://www.neo4j.org/
• Neo4j on Vimeo http://vimeo.com/neo4j
• Neo4j on SlideShare http://www.slideshare.net/neo4j
• Neo4j on Github https://github.com/neo4j
• Neo4j Cypher Cheat Sheet http://docs.neo4j.org/refcard/2.1/
• Neo4j Graph Database as a Service http://www.graphenedb.com/
• Linkurious – The easiest way to explore graph databases http://linkurio.us/
• KeyLines- Visualize dynamic networks http://keylines.com/
• Experiments with NEO4J: Using a graph database as a SQL Server metadata hub http://bit.ly/V2PrxN
• Kenny Bastani http://www.kennybastani.com/
• Rik Van Bruggen http://blog.bruggen.com/
• Max de Marzi http://maxdemarzi.com/
• Better Software Development http://jexp.de/blog/
• Graph Databases (Free Book) http://graphdatabases.com/
• Neo4j GraphGist http://gist.neo4j.org/
• GraphConnect Conference http://graphconnect.com/
• Titan – Distributed Graph Database https://thinkaurelius.github.io/titan/
• InfiniteGraph http://www.infinitegraph.com/
• OrientDB http://www.orientechnologies.com/
• Cayley by Google https://github.com/google/cayley
![Page 33: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/33.jpg)
What Questions Do You Have?
![Page 34: Graph Databases for SQL Server Professionals](https://reader035.fdocuments.us/reader035/viewer/2022081413/548058a75906b5e5288b46dc/html5/thumbnails/34.jpg)
Thank YouFor attending this session