The document appears to be discussing graph databases and Neo4j. It provides examples of modeling data as nodes and relationships in Neo4j and writing Cypher queries to retrieve and update data in the graph.
Every other week there seems to be a new dump of cracked passwords, hurting innocent and unbeknownst users. It seems as if keeping users passwords safe is a herculean task, even beyond the most resourceful organizations. However, it doesn't have to be.
Password hashing is an important discipline in cryptography. Securing passwords has become so integral to our society that in 2013 a Password Hashing Competition was announced, for the academic community to band together and develop a common recommendation for future use. In this talk, I'll showcase how to handle passwords correctly and safely and clear out misinformation that still abounds in tutorials and blog posts. All with heaps of demos to motivate, make the material concrete and so everyone can follow along!
Graph databases are a type of NoSQL database that uses nodes and relationships to represent and store data. Nodes can have properties and be connected to other nodes via relationships. This allows for complex queries of connected data. Neo4j is an example of a graph database that uses these concepts to store and query data. Code examples are shown for how to programmatically create nodes and relationships in Neo4j and traverse the graph to find connected nodes.
2012 09 GDG San Francisco Hackday at ParisomaPeter Neubauer
The document discusses why graph databases and the graph model are becoming more popular. It provides three key reasons: 1) Big Data is increasingly large in volume and variety, requiring new database approaches; 2) NoSQL databases like graph databases provide an alternative to relational databases for big, complex datasets; 3) Many real-world datasets have an inherent graph structure that is difficult to represent and query in relational databases.
This is a presentation given at http://nosql-matters.org 2012 and at the JUG in Toulouse and Bordeaux.
The links are referring to the great introduction to Cypher by Max De Marci, http://www.slideshare.net/maxdemarzi/cypher-12154713 and the Neo4j online Cypher Cookbook section, http://docs.neo4j.org/chunked/snapshot/cypher-cookbook.html
This is the presentation given by Michael Hunger and Peter Neubauer at the SF Data Mining group, see http://www.meetup.com/Data-Mining/events/80275492/
Given by Peter Neubuaer at OSON 2012:
You know the drill – prototype, code, test, docs. The last part of the chain is either omitted or will rot in Wikis and manuals. At Neo4j, we made the painful switch from wiki-hell to a totally code – backed manual that is driven by unit tests, a documentation toolchain and part of our build artifacts. Graph images, code snippets, live REST calls and everything. And still not getting in the way of the developers. We are now writing test code that is fit for publishing as blog links to parts of the manual. And developers are looking at the manual to see if the tests make sense. Want that? Hell yeah
Lesser Known Security Problems in PHP ApplicationsZendCon
When the security of PHP applications is in focus usually standard XSS vulnerabilities, SQL Injections, Remote File Inclusions, Header Injections and CSRF are discussed. However there are a number of different vulnerability classes and non obvious exploitation paths that are as dangerous but lesser known. This talk will give an insight in such vulnerabilities and how to defend against them.
This document provides an introduction to NoSQL and Neo4j. It discusses how Neo4j is a graph database that is well-suited for storing connected data. It then demonstrates how to query the graph database using the Cypher query language, which uses a declarative pattern matching approach. Examples of real-world uses of Neo4j by companies are also presented to illustrate how it has been adopted for applications such as social networking, fraud detection, and knowledge graphs.
Every other week there seems to be a new dump of cracked passwords, hurting innocent and unbeknownst users. It seems as if keeping users passwords safe is a herculean task, even beyond the most resourceful organizations. However, it doesn't have to be.
Password hashing is an important discipline in cryptography. Securing passwords has become so integral to our society that in 2013 a Password Hashing Competition was announced, for the academic community to band together and develop a common recommendation for future use. In this talk, I'll showcase how to handle passwords correctly and safely and clear out misinformation that still abounds in tutorials and blog posts. All with heaps of demos to motivate, make the material concrete and so everyone can follow along!
Graph databases are a type of NoSQL database that uses nodes and relationships to represent and store data. Nodes can have properties and be connected to other nodes via relationships. This allows for complex queries of connected data. Neo4j is an example of a graph database that uses these concepts to store and query data. Code examples are shown for how to programmatically create nodes and relationships in Neo4j and traverse the graph to find connected nodes.
2012 09 GDG San Francisco Hackday at ParisomaPeter Neubauer
The document discusses why graph databases and the graph model are becoming more popular. It provides three key reasons: 1) Big Data is increasingly large in volume and variety, requiring new database approaches; 2) NoSQL databases like graph databases provide an alternative to relational databases for big, complex datasets; 3) Many real-world datasets have an inherent graph structure that is difficult to represent and query in relational databases.
This is a presentation given at http://nosql-matters.org 2012 and at the JUG in Toulouse and Bordeaux.
The links are referring to the great introduction to Cypher by Max De Marci, http://www.slideshare.net/maxdemarzi/cypher-12154713 and the Neo4j online Cypher Cookbook section, http://docs.neo4j.org/chunked/snapshot/cypher-cookbook.html
This is the presentation given by Michael Hunger and Peter Neubauer at the SF Data Mining group, see http://www.meetup.com/Data-Mining/events/80275492/
Given by Peter Neubuaer at OSON 2012:
You know the drill – prototype, code, test, docs. The last part of the chain is either omitted or will rot in Wikis and manuals. At Neo4j, we made the painful switch from wiki-hell to a totally code – backed manual that is driven by unit tests, a documentation toolchain and part of our build artifacts. Graph images, code snippets, live REST calls and everything. And still not getting in the way of the developers. We are now writing test code that is fit for publishing as blog links to parts of the manual. And developers are looking at the manual to see if the tests make sense. Want that? Hell yeah
Lesser Known Security Problems in PHP ApplicationsZendCon
When the security of PHP applications is in focus usually standard XSS vulnerabilities, SQL Injections, Remote File Inclusions, Header Injections and CSRF are discussed. However there are a number of different vulnerability classes and non obvious exploitation paths that are as dangerous but lesser known. This talk will give an insight in such vulnerabilities and how to defend against them.
This document provides an introduction to NoSQL and Neo4j. It discusses how Neo4j is a graph database that is well-suited for storing connected data. It then demonstrates how to query the graph database using the Cypher query language, which uses a declarative pattern matching approach. Examples of real-world uses of Neo4j by companies are also presented to illustrate how it has been adopted for applications such as social networking, fraud detection, and knowledge graphs.
This presentation was introducing neo4j at http://www.meetup.com/PolyglotVancouver/events/68860272/, covering both Neo4j and some of the Manual toolchain powering docs.neo4j.org for the project (the manual source can be found at http://github.com/neo4j/manual ).
Tips for building communitites with limited resourcesPeter Neubauer
The document discusses building a developer community with limited resources. It describes Neo4j's experience creating a community through programs that support contributors, respond to issues, onboard new members, engage the core team, raise mindshare, and provide infrastructure. It also outlines Neo4j's documentation toolchain and lessons learned over time like empowering others to produce content and listening to all feedback channels.
Intro to Neo4j or why insurances should love graphsPeter Neubauer
This talk covers a basic intro of graphs, NOSQL and graph databases, followed b a number of domain examples and case studies, and a section on how graph databases can be interesting in the domain of insurance companies.
The document discusses Peter Neubauer's journey from founding Neo Technology in Sweden to growing it into a successful startup. It provides tips for startup life such as embracing change, persistence over the long term, focusing on users and community, and being prepared to pivot plans. The document also discusses using lean startup principles like building minimum viable products and getting early customer feedback to test ideas. Overall it presents lessons learned from growing Neo Technology from a small startup to a larger established company.
Compelling location-based services require more than simple “what’s near me?” operations. The Open Street Map dataset is a perfect example of a rich geographically-based wiki that can be used for much more than map rendering.
With the newly released Neo4j Spatial, any data can be adapted to complex queries with geographic components like “Select all streets in the Municipality of NYC where at least 2 of my friends are walking right now”.
The talk will demonstrate the important benefits of modeling geodata in a graph, the main components needed to expose data to geo stacks like map servers, and explain how the Open Street Map dataset is modeled in Neo4j. I’ll show how using Neo4j unlocks the full potential of the OSM data far beyond just rendering maps.
There will also be some cool examples of Neo4j Spatial, from Telecomms network planning, Web-based AJAX GIS systems, topology editing and routing to REST and Web Feature Service endpoints, all in a single stack.
This is Location-based Services on steroids!
Neo4j is a Java-based graph database that is embeddable, ACID compliant, and has been in operation since 2003. It uses an indexing framework and supports high availability clustering. The document provides code examples for creating nodes and relationships in Neo4j and traversing the graph to find connections between nodes. It also discusses several potential applications of Neo4j, including network management, master data management, social networks, and fraud detection.
In the Telecommunications sector, there are a lot of complex data sets and problems that are well suited for graph models and the use of graph databases like Neo4j.
This talk gives just some ideas on where Neo4j currently is used within the TelCo sector. If you recognize problem areas that you have, don't hesitate to contact me at peter at neotechnology dot com, we are eager to learn more and help!
Neo4j Spatial provides spatial/GIS capabilities for Neo4j, allowing it to store and query geospatial data. It aims to make GIS more accessible and allow for complex spatial mapping and analytics by connecting location data to other domain data stored in the graph. Features include support for OpenStreetMap data, dynamic layers, and topological queries and persistence of spatial relationships directly in the graph.
This document discusses graph databases and provides examples of how the Neo4j graph database can be used. It shows how Neo4j supports social, spatial, financial and other types of connected data. It also summarizes Neo4j's REST API, support for object-oriented programming, routing algorithms, multiple indexes, recommendation systems, and other use cases. The document advocates for graph databases for any problem involving multiple relationships and connections between entities.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
20 Comprehensive Checklist of Designing and Developing a WebsitePixlogix Infotech
Dive into the world of Website Designing and Developing with Pixlogix! Looking to create a stunning online presence? Look no further! Our comprehensive checklist covers everything you need to know to craft a website that stands out. From user-friendly design to seamless functionality, we've got you covered. Don't miss out on this invaluable resource! Check out our checklist now at Pixlogix and start your journey towards a captivating online presence today.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
This presentation was introducing neo4j at http://www.meetup.com/PolyglotVancouver/events/68860272/, covering both Neo4j and some of the Manual toolchain powering docs.neo4j.org for the project (the manual source can be found at http://github.com/neo4j/manual ).
Tips for building communitites with limited resourcesPeter Neubauer
The document discusses building a developer community with limited resources. It describes Neo4j's experience creating a community through programs that support contributors, respond to issues, onboard new members, engage the core team, raise mindshare, and provide infrastructure. It also outlines Neo4j's documentation toolchain and lessons learned over time like empowering others to produce content and listening to all feedback channels.
Intro to Neo4j or why insurances should love graphsPeter Neubauer
This talk covers a basic intro of graphs, NOSQL and graph databases, followed b a number of domain examples and case studies, and a section on how graph databases can be interesting in the domain of insurance companies.
The document discusses Peter Neubauer's journey from founding Neo Technology in Sweden to growing it into a successful startup. It provides tips for startup life such as embracing change, persistence over the long term, focusing on users and community, and being prepared to pivot plans. The document also discusses using lean startup principles like building minimum viable products and getting early customer feedback to test ideas. Overall it presents lessons learned from growing Neo Technology from a small startup to a larger established company.
Compelling location-based services require more than simple “what’s near me?” operations. The Open Street Map dataset is a perfect example of a rich geographically-based wiki that can be used for much more than map rendering.
With the newly released Neo4j Spatial, any data can be adapted to complex queries with geographic components like “Select all streets in the Municipality of NYC where at least 2 of my friends are walking right now”.
The talk will demonstrate the important benefits of modeling geodata in a graph, the main components needed to expose data to geo stacks like map servers, and explain how the Open Street Map dataset is modeled in Neo4j. I’ll show how using Neo4j unlocks the full potential of the OSM data far beyond just rendering maps.
There will also be some cool examples of Neo4j Spatial, from Telecomms network planning, Web-based AJAX GIS systems, topology editing and routing to REST and Web Feature Service endpoints, all in a single stack.
This is Location-based Services on steroids!
Neo4j is a Java-based graph database that is embeddable, ACID compliant, and has been in operation since 2003. It uses an indexing framework and supports high availability clustering. The document provides code examples for creating nodes and relationships in Neo4j and traversing the graph to find connections between nodes. It also discusses several potential applications of Neo4j, including network management, master data management, social networks, and fraud detection.
In the Telecommunications sector, there are a lot of complex data sets and problems that are well suited for graph models and the use of graph databases like Neo4j.
This talk gives just some ideas on where Neo4j currently is used within the TelCo sector. If you recognize problem areas that you have, don't hesitate to contact me at peter at neotechnology dot com, we are eager to learn more and help!
Neo4j Spatial provides spatial/GIS capabilities for Neo4j, allowing it to store and query geospatial data. It aims to make GIS more accessible and allow for complex spatial mapping and analytics by connecting location data to other domain data stored in the graph. Features include support for OpenStreetMap data, dynamic layers, and topological queries and persistence of spatial relationships directly in the graph.
This document discusses graph databases and provides examples of how the Neo4j graph database can be used. It shows how Neo4j supports social, spatial, financial and other types of connected data. It also summarizes Neo4j's REST API, support for object-oriented programming, routing algorithms, multiple indexes, recommendation systems, and other use cases. The document advocates for graph databases for any problem involving multiple relationships and connections between entities.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
20 Comprehensive Checklist of Designing and Developing a WebsitePixlogix Infotech
Dive into the world of Website Designing and Developing with Pixlogix! Looking to create a stunning online presence? Look no further! Our comprehensive checklist covers everything you need to know to craft a website that stands out. From user-friendly design to seamless functionality, we've got you covered. Don't miss out on this invaluable resource! Check out our checklist now at Pixlogix and start your journey towards a captivating online presence today.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Building RAG with self-deployed Milvus vector database and Snowpark Container...Zilliz
This talk will give hands-on advice on building RAG applications with an open-source Milvus database deployed as a docker container. We will also introduce the integration of Milvus with Snowpark Container Services.
26. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
27. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
28. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
29. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
30. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
31. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
32. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
// Traverse the node space and print out the result
33. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
// Traverse the node space and print out the result
System.out.println( "Mr Anderson's friends:" );
34. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
// Traverse the node space and print out the result
System.out.println( "Mr Anderson's friends:" );
for ( Node friend : friendsTraverser )
35. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
// Traverse the node space and print out the result
System.out.println( "Mr Anderson's friends:" );
for ( Node friend : friendsTraverser )
{
36. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
// Traverse the node space and print out the result
System.out.println( "Mr Anderson's friends:" );
for ( Node friend : friendsTraverser )
{
System.out.printf( "At depth %d => %s%n",
37. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
// Traverse the node space and print out the result
System.out.println( "Mr Anderson's friends:" );
for ( Node friend : friendsTraverser )
{
System.out.printf( "At depth %d => %s%n",
friendsTraverser.currentPosition().getDepth(),
38. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
// Traverse the node space and print out the result
System.out.println( "Mr Anderson's friends:" );
for ( Node friend : friendsTraverser )
{
System.out.printf( "At depth %d => %s%n",
friendsTraverser.currentPosition().getDepth(),
friend.getProperty( "name" ) );
39. // Instantiate a traverser that returns Mr Anderson's friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
RelTypes.KNOWS,
Direction.OUTGOING );
// Traverse the node space and print out the result
System.out.println( "Mr Anderson's friends:" );
for ( Node friend : friendsTraverser )
{
System.out.printf( "At depth %d => %s%n",
friendsTraverser.currentPosition().getDepth(),
friend.getProperty( "name" ) );
}
46. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
47. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
48. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
has_n :friends
49. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
has_n :friends
end
50. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
has_n :friends
end
Neo4j::Transactoin.run do
51. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
has_n :friends
end
Neo4j::Transactoin.run do
neo = Person.new :name=>'Neo', :age=>29
52. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
has_n :friends
end
Neo4j::Transactoin.run do
neo = Person.new :name=>'Neo', :age=>29
morpheus = Person.new :name=>'Morpheus', :occupation=>'badass'
53. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
has_n :friends
end
Neo4j::Transactoin.run do
neo = Person.new :name=>'Neo', :age=>29
morpheus = Person.new :name=>'Morpheus', :occupation=>'badass'
neo.friends << morpheus
54. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
has_n :friends
end
Neo4j::Transactoin.run do
neo = Person.new :name=>'Neo', :age=>29
morpheus = Person.new :name=>'Morpheus', :occupation=>'badass'
neo.friends << morpheus
end
55. gem install neo4j
require ”rubygems”
require 'neo4j'
class Person
include Neo4j::NodeMixin
property :name, :age, :occupation
index :name
has_n :friends
end
Neo4j::Transactoin.run do
neo = Person.new :name=>'Neo', :age=>29
morpheus = Person.new :name=>'Morpheus', :occupation=>'badass'
neo.friends << morpheus
end
neo.friends.each {|p|...}
58. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
59. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
60. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
61. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
62. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
63. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
64. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
65. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
match (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:BLOCKS]-(d)-
[:KNOWS]-(c)
66. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
match (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:BLOCKS]-(d)-
[:KNOWS]-(c)
return a,b,c,d
67. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
match (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:BLOCKS]-(d)-
[:KNOWS]-(c)
return a,b,c,d
//Where RegExp
68. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
match (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:BLOCKS]-(d)-
[:KNOWS]-(c)
return a,b,c,d
//Where RegExp
start n=(2, 1) where n.name =~ /Tob.*/ return n
69. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
match (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:BLOCKS]-(d)-
[:KNOWS]-(c)
return a,b,c,d
//Where RegExp
start n=(2, 1) where n.name =~ /Tob.*/ return n
//FOAF
70. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
match (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:BLOCKS]-(d)-
[:KNOWS]-(c)
return a,b,c,d
//Where RegExp
start n=(2, 1) where n.name =~ /Tob.*/ return n
//FOAF
start user = (people-index,name,”John”)
71. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
match (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:BLOCKS]-(d)-
[:KNOWS]-(c)
return a,b,c,d
//Where RegExp
start n=(2, 1) where n.name =~ /Tob.*/ return n
//FOAF
start user = (people-index,name,”John”)
match (user)-[:friend]->()-[:friend]->(foaf)
72. Cypher - Pattern Matcing für alle
//All nodes related to n
start n=(3) match (n)--(x) return x
//All nodes that are BLOCKed by A
start n=(3) match (n)-[:BLOCKS]->(x) return x
//All BLOCKS relationships outgoing from n
start n=(3) match (n)-[r, :BLOCKS]->() return r
//Diamond shape pattern
start a=(3)
match (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:BLOCKS]-(d)-
[:KNOWS]-(c)
return a,b,c,d
//Where RegExp
start n=(2, 1) where n.name =~ /Tob.*/ return n
//FOAF
start user = (people-index,name,”John”)
match (user)-[:friend]->()-[:friend]->(foaf)
return user, foaf
75. g = new Neo4jGraph('/tmp/neo4j')
// calculate basic collaborative filtering for vertex
1
76. g = new Neo4jGraph('/tmp/neo4j')
// calculate basic collaborative filtering for vertex
1
m = [:]
77. g = new Neo4jGraph('/tmp/neo4j')
// calculate basic collaborative filtering for vertex
1
m = [:]
g.v(1).out('likes').in('likes').out('likes').groupCou
nt(m)
78. g = new Neo4jGraph('/tmp/neo4j')
// calculate basic collaborative filtering for vertex
1
m = [:]
g.v(1).out('likes').in('likes').out('likes').groupCou
nt(m)
m.sort{a,b -> a.value <=> b.value}
80. Financial data – fraud detection
name = ...
name = “The Tavern”
lat = 1295238237
name = “Mr Godfather”
long = 234823492
W
42
karma = veeeery-low
D RA
cash = more-than-you amount = $1000 H
IT
W
OWNS TRANSFER WIT
1 7 3 HDR
AW
13
FER
DE name = “Emil”
PO cash = always-too-li'l
TRANS
SI
T
title = “ATM @ Wall St”
id = 230918484233
amount = $1000 cash_left = 384204
2
name = ...
We have key-value stores, typically very highly available and scalable for simple key-value data\n
Column stores naturally-indexed value stores\n\nContrary to common belief &#x2013; Google&#x2019;s big table isn&#x2019;t the world&#x2019;s most famous column store\n\nBritish museum London is: it&#x2019;s got columns and it&#x2019;s where we stored all the stuff we nicked from the British Empire!\n
Document DB&#x2019;s support for large-scale document storage, indexing documents, and processing them with batch-oriented frameworks.\n
We have graph databases that are well suited to complex, interconnected data\n\nSide note: Graph DB&#x2019;s are unique in the NOSQL world, that they&#x2019;re the only class of store that has a more expressive data model than RDBMS &#x2013; all the others have gone for simpler data models to achieve scale/availability/throughput\n
Each database pulls various levers to achieve its aims:\n\nDurable -> ordered writes -> take your chances\nSharded -> replicated -> take your chances\nConsistent -> eventually consistent -> take your chances\n\nNeo4j takes the ACID always approach\n
We should be in data-Nirvana\n\nWe have a range of data models to choose from\nWe have a range of products to select that support those models\nWe have a range of tuning that we can apply to those products \n\nWe should be able to craft exactly the right platform for our data needs\n
And then we fall back on old habits: trying to find the one true Database to rule them all. \n*sigh*\n\nKV stores pushing up against Document stores\nColumn stores pushing up against KV stores\nDocument stores wading into graphs\n\nAnd all the time all four NOSQL models are being poorly grafted onto our deal old RDMBS&#x2019;es!\n
Let&#x2019;s take a closer look at the damage we&#x2019;re doing\n
We can encode shallow graph-like data in document stores if we like (or even RDBMS like twitter)\n\nIt starts off looking nice and easy!\n
At runtime the application code sucks in the data and reifies a graph.\n\nOK, so that&#x2019;s code you have to test and write, but the datamodel is just documents, so that&#x2019;s OK right?\n
Compared to a graph database, it&#x2019;s actually hard work\n\nA graph DB stores data naturally in graphs so you don&#x2019;t have to deal with that concern in your code &#x2013; you deal with true application concerns \n\n-> index free traversal of big data FAST\n
I&#x2019;ve got a bad feeling about this&#x2026;\n
Imagine we want to sell things to our little social network\n\nIn a graph it&#x2019;s easy to record purchase history as relationships between buyers and products (and it doesn&#x2019;t slow down as buyers and products grow in number unlike joins in a relational DB)\n\nIn a document DB, the structure is implicit, and it&#x2019;s up to our application code to make sense of it.\nWhat do we do here? Put buyers in the product documents? Products in the people documents? Create purchase documents that join the two?\n\nWhat about a product recall, or social selling (example later on)?\nIn a graph DB it&#x2019;s O(1) search operation to find out who bought a product.\nIn a document DB it&#x2019;s an O(N) compute job to figure this out\n
EE\n
EE\n
EE\n
Lightweight and embedded: single jar of ~500k [demo]\n
Fully transactional: ie complete ACID, supports JTA/JTS, 2PC, deadlock detection, transaction recovery and all the rest [demo]\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Graphs over 1M nodes\nNetwork Management\nMaster Data Management\nSocial\nFinance\nSpatial\nOther\nBioinformatics\nRDF\nRouting, Logistics\n\n
Storage:\nplugable &#x2013; dataset, layer, encoder\nSearch:\nIndexing is currently an R-Tree, but it is possible to plug in any custom mechanism conforming to the interface.\nMulti-dimensional index\nSpatial indices (quad-tree, R-tree, kn-tree, SFCs)\nComposite indices and dynamic indices\nLucene\n
EE\n
&#x2022; includes high performance graph algorithms\n&#x2022; routes with live changing data \n&#x2022; integrates easily with any domain graph\n
We have graph databases that are well suited to complex, interconnected data\n\nSide note: Graph DB&#x2019;s are unique in the NOSQL world, that they&#x2019;re the only class of store that has a more expressive data model than RDBMS &#x2013; all the others have gone for simpler data models to achieve scale/availability/throughput\n
&#x2022; traverses millions of friends per second\n&#x2022; maps directly to friend-of-a-friend\n&#x2022; quickly performs deep recommendations\n
&#x2022; can handle billions of ad-hoc relationships \n&#x2022; traverses millions of nodes per second\n&#x2022; maps directly to your MDM domain\n
&#x2022; can handle billions of ad-hoc relationships \n&#x2022; traverses millions of nodes per second\n&#x2022; maps directly to your MDM domain\n
&#x2022; can handle billions of ad-hoc relationships \n&#x2022; traverses millions of nodes per second\n&#x2022; maps directly to your MDM domain\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Storage:\nplugable &#x2013; dataset, layer, encoder\nSearch:\nIndexing is currently an R-Tree, but it is possible to plug in any custom mechanism conforming to the interface.\nMulti-dimensional index\nSpatial indices (quad-tree, R-tree, kn-tree, SFCs)\nComposite indices and dynamic indices\nLucene\n