More Related Content

Slideshows for you(20)


Graph Databases for SQL Server Professionals

  1. Graph Databases for SQL Server Professionals Stéphane Fréchette Thursday September 18, 2014
  2. 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: @sfrechette Blog: Email:
  3. Session Outline • What is a Graph? • What is Neo4j? • Data Modeling – The Property Graph • Cypher Query Language • Importing Data… • Use Cases • Demos • Resources
  4. What is a Graph?
  5. Are these Graphs?
  6. This is a Graph Node Relationship A Property Graph
  7. Organization Project Graph
  8. Twitter Social Graph
  9. 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
  10. Data Modeling From SQL Server to Graph Property Graph
  11. Example: Meetup Data In SQL Server Member MeetupOrganizer MeetupMember Meetup 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
  12. 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: ‘Ottawa Visio User Group’ name: ‘Dirty Dancing Ottawa’ name: ‘Randy’ name: ‘Daniel’
  13. 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
  14. 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)
  15. Cypher - Meetup
  16. Neo4j Browser
  17. Demo (let’s query some data…)
  18. Importing Data…
  19. 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)
  20. Many different mappings Import Scenarios Import Tools Not always clear what you should be using Depends on your skillsets, dataset size… (lots of other stuff) Choose wisely!
  21. Demo (walkthrough on importing data…)
  22. The Sample Dataset
  23. 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
  24. Importing using Spreadsheets
  25. Importing using neo4j-shell-tools Small to medium size datasets Format data in CSV files Create import-cypher commands for neo4j-shell-tools Execute commands from neo4j-shell
  26. Importing using neo4j-shell-tools
  27. 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
  28. Importing using LOAD CSV
  29. 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
  30. 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
  31. Summary (graphs)-[:ARE]->(everywhere)
  32. Resources • Neo Technology • (Learn, Develop, Downloads,…) • Neo4j on Vimeo • Neo4j on SlideShare • Neo4j on Github • Neo4j Cypher Cheat Sheet • Neo4j Graph Database as a Service • Linkurious – The easiest way to explore graph databases • KeyLines- Visualize dynamic networks • Experiments with NEO4J: Using a graph database as a SQL Server metadata hub • Kenny Bastani • Rik Van Bruggen • Max de Marzi • Better Software Development • Graph Databases (Free Book) • Neo4j GraphGist • GraphConnect Conference • Titan – Distributed Graph Database • InfiniteGraph • OrientDB • Cayley by Google
  33. What Questions Do You Have?
  34. Thank You For attending this session

Editor's Notes

  1. Nope, these are Charts, Bar and Line Charts…
  2. This a Graph, a Property Graph
  3. Sample Organization Project Graph
  4. Sample Twitter Social Graph
  5. NoSQL Category