Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GraphTour London 2020 - What's New, Jim Webber

What's new at Neo4j?

  • Be the first to comment

  • Be the first to like this

GraphTour London 2020 - What's New, Jim Webber

  1. 1. Neo4j: WHAT’S NEW? Dr. Jim Webber Chief Scientist - Neo4j
  2. 2. The Evolution of Databases
  3. 3. The Evolution of Databases TRADITIONAL OLTP/RELATIONAL
  7. 7. What Is Different in Neo4j? Index-Free Adjacency
  8. 8. Requirements of Next Gen Applications
  9. 9. Multi-tenancy with Neo4j 4.0
  10. 10. • B2B SaaS: Greatly simplified management of DB infrastructure for your customers. • Multi-tenancy: A single instance of Neo4j Server/Cluster may serve multiple customers/users within an organization. • Rapid Testing/Development/Deployment: Manage separate databases for development, testing, staging, etc. in a single infrastructure. • Scalability: Disjoint data is organized in physically separate structures, strong isolation. • Cloud-Friendly: Databases can be associated to cloud storage and easily detached from a server and attached to another server. Multi-Database Use Cases
  11. 11. Administration commands: ● CREATE|DROP|START|STOP DATABASE name Use commands: ● HTTP API: http://server:port/.../database ● Browser & Cypher Shell: :USE database ● Drivers: Session(database) ● Browser: Easy administration
  12. 12. Horizontal Scale in Neo4j 4.0
  13. 13. Causal Clustering with Neo4j
  14. 14. Modeling with Multi-Database
  15. 15. Distributed Graph Query
  16. 16. Multi-graph Cypher Queries MATCH (boss)-[:MANAGES*0..3]->(sub), (sub)-[:MANAGES*1..3]->(report) WHERE = “John Doe” RETURN AS Subordinate, count(report) AS Total UNWIND corporate.graphIds() AS gid CALL { USE corporate.graph( gid ) MATCH (boss)-[:MANAGES*0..3]->(sub), (sub)-[:MANAGES*1..3]->(report) RETURN AS Boss, AS Subordinate, count(report) AS Total } RETURN Boss, Subordinate, Total ORDER BY Total
  17. 17. Neo4j 4.0 Scalability in Action Sharding the LDBC Social Network Benchmark
  18. 18. Neo4j 4.0 Scalability in Action Sharding the LDBC Social Network Benchmark
  19. 19. Security and Data Privacy Baseline_Personnel _Security_Standard Security_Check Counter_Terrorism _Check Developed_Vetting
  20. 20. Security and Data Privacy in Practice
  21. 21. • Call Centre Agent needs Doctor’s name but mustn't read diagnosis • Doctor should be able to view patient records and diagnoses Constraints
  22. 22. // Doctors get wide-ranging access GRANT ACCESS ON DATABASE healthcare TO doctor; GRANT TRAVERSE ON GRAPH healthcare TO doctor; GRANT READ {*} ON GRAPH healthcare TO doctor; GRANT WRITE ON GRAPH healthcare TO doctor; Security Config // Agents get narrower access GRANT ACCESS ON DATABASE healthcare TO agent; GRANT TRAVERSE {*} ON GRAPH healthcare TO agent; GRANT READ {Name} ON GRAPH healthcare NODES Doctor TO agent; GRANT READ {Name} ON GRAPH healthcare NODES Patient TO agent;
  23. 23. Call Centre Agent MATCH (:CallcenterAgent {name: 'Alice'}) <-[:CALLED]-(p:Patient)-[:HAS_DIAGNOSIS]-(dia) <-[:ESTABLISHED]-(d:Doctor) RETURN,,;
  24. 24. Reactive Programming with Neo4j 4.0
  25. 25. • Flow control throughout the stack, allowing for the client application to fully control the production and flow of records within a result • Synchronous/Asynchronous execution • Based on reactive streams with non-blocking backpressure library • Client applications can pull or discard the whole result or N elements • Can also be gracefully cancelled • Exposed through a reactive API in Drivers v4.0 • Use Cases: • Long queries with large result sets • Paged results • Thin/small clients Reactive Architecture
  26. 26. Reactive Stack
  27. 27. String query = "MATCH (a:Person) RETURN"; try (Session session = driver.session()) { StatementResult result =; while (result.hasNext()) { Record record =; String name = record.get(0).asString(); if (name.equals("Emil Eifrem")) { break; // Looks ok, but whoops! } System.out.println(name); } } Neo4j 3.x versus 4.0 String query = "MATCH (a:Person) RETURN"; return Flux.using(driver::rxSession, session -> { RxStatementResult result =; return Flux.from(result.records()) .limitRate(10) .map(record -> record.get(0).asString()) .takeUntil(name -> name.equals("Emil Eifrem")) .doOnNext(System.out::println) .then( /* discard example records */ ); }, RxSession::close);
  28. 28. The Largest Investment in Graph Databases Neo4j 4.0
  29. 29. Get Neo4j 4.0 right now
  30. 30. Neo4j Aura ● Zero Administration ● On-Demand Scaling ● Simple, capacity-based pricing ● Always-On and self-healing, clustered configuration ● Data Integrity & Durability ● Secure including end-to-end encryption ● Native graph performance ● World’s most popular graph query language ● Broad language support - drivers for Java, .NET, JavaScript, Python, Go, Spring, etc.
  31. 31. Explore & Collaborate with Neo4j Bloom Explore Graphs Visually Prototype Concepts Faster Collaborate Across Teams
  32. 32. Neo4j Bloom’s Intuitive User Interface Search with type-ahead suggestions Flexible Color, Size and Icon schemes Visualize, Explore and Discover Pan, Zoom and Select Property Browser and editor
  33. 33. What’s New in Bloom 1.2 Flexible colors and sizes Style using properties Expand by relationship or neighbor type Case insensitive search Specify parameter types Export csv data
  34. 34. Optimized for Analytics Algorithms for Insights Intuitive Interface The Graph Algos Library becomes the Graph Data Science Library
  35. 35. Which algorithms? Parallel BFS Parallel DFS Shortest Path Single Source Shortest path All Pairs Shortest Path Minimum Spanning Tree A* Shortest Path Yen’s K-Shortest Path Minimum Spanning Tree Random Walk Degree Centrality Closeness Centrality (inc. harmonic, Dangalchev, Wasserman & Faust) Betweenness Centrality Approx. Betweenness Centrality Page Rank Personalized Page Rank ArticleRank Eigenvector Centrality Triangle Count Clustering Coefficients Connected Components (aka Union Find) Strongly Connected Components Label Propagation Louvain Modularity Balanced Triad Adamic Adar Common Neighbours Preferential Attachment Resource Allocations Same Community Total Neighbours Euclidean Distance Cosine Similarity Jaccard Similarity Overlap Similarity Pearson Similarity Approximate KNN
  36. 36. • Graph data science library • Bloom 1.2 • with rule-based styling • Sandbox now available!
  37. 37. Neo4j 4.0-all-the-things! Ready Today: • Java, .NET, JavaScript, Spring Data Neo4j Drivers ✅ • Neo4j Desktop ✅ • Neo4j Browser ✅ Work in Progress: • Python (Q2) & Go (Q4) - Coming! • Graph Data Science Library (Q2) - Coming! • Bloom Q2 - Coming! • Aura (Q2) - Coming!
  38. 38. THANK YOU! @jimwebber