Innovate. Share. Connect.
Boston June 10-11
What's new in Neo4j 2.0What's new in Neo4j 2.0
Andreas Kollegger, Neo TechnologyAndreas Kollegger, Neo Technology
@akollegger@akollegger
Neo4j 2.0
★ 3 questions: Why? What?
How?
★ with just One answer
Why 2.0?
Why 2.0?
• Neo4j 1.10 could be an AM radio station
• Wanted to seem web-savvy before it goes to 3.0
• We were in the mood to break some things
• Really, it's because of a shift in focus
(0.x) --> (1.x) --> (2.x)
• 0.x was about embedded java
• 1.x introduced the server and REST
• 2.x ease of use, big data, cloud
which means a focus on...
This guy
Focus on Cypher
• Cypher, a carefully crafted language for working with
graphs
• Declarative, friendly, easy to read and write
• One language, used everywhere
• REST for management, Java for plugins,
What is new in 2.0?
There will be
some sad Danes
some sad Danes
"Once you label me,
you negate me.”
- Søren Kierkegaard
• Simply: a label identifies a set of nodes
• Nodes can have multiple labels
• Find nodes by label
• Constrain properties and values
• (lightweight schema)
• A simple idea, with powerful applications
Introducing Node Labels
Find friends who like cheese
MATCH (max:People)-[:FRIENDS]->(cheesy: People),
(cheesy)-[:LIKE]->(cheese:Things)
WHERE max.name = "Max De Marzi"
AND cheese.name = "Cheese"
RETURN cheesy;
Schema Indexing
• Indexes for labels, based on a property
• Simple lookups for now
• Unique indexing coming soon
• Full-text, other special indexes in planning
CREATE INDEX ON :People(name)
MERGE operation
• a combination of MATCH + CREATE
• replaces CREATE UNIQUE
• attempts to MATCH, with specified properties and labels
• if match fails, new graph data is created
• optional sub-clauses for handling ON CREATE, and ON
MATCH
MERGE (charlie { name:'Charlie Sheen', age:10 })
RETURN charlie
• begin, commit, or rollback a transaction
• transaction as RESTful resource
• issue multiple statements per request
• multiple requests per transaction
• compact response format
Transactional Cypher
Anything else?
• Performance improvements
• Breaking changes to some APIs (read CHANGES.txt)
• Migration of "legacy" indexes (stop STARTing)
• Mandatory transactions for all DB interactions
• Improving installers (in progress)
• Changing everything to be "all Cypher, all the time"
How to use labels?
Label - to identify
name: Ford Prefect
NINO: 122-762-9255
HIKE: 415-484-6364
UKUK
H2G2H2G2
Label - to identify
UKUK
H2G2H2G2
MATCH (ford:H2G2) WHERE ford.HIKE = '415-484-6364' RETURN ford
Label - to avoid confusion
name: Ford Prefect name: Ford Prefect
AlienAlien CarCar
MATCH (ford:Alien) WHERE ford.name = 'Ford Prefect' RETURN ford
Label - special nodes
• replace built-in reference node,
with domain specific reference nodes
4242
AnswerAnswer
Labels - rules of thumb
• Use a label to make queries easier to read & write
• And to improve performance through indexing
• Start with anything you might've put in a legacy index
• Use lightly, as few labels as needed
Is that it for 2.0?
Well, there is this...
What is new in 2.0?
• It's all about Cypher, starting with
• Labels, the first significant change in over 12 years
• Mix in schema indexing
• Then transactional REST, new clauses, functions
• A fresh Web UI that is Cypher-focused
Thanks :)
Any questions?
Any questions?
Any questions?
@akollegger to keep in touch

What's New in Neo4j 2.0 - Andreas Kollegger @ GraphConnect Boston + Chicago 2013

  • 1.
    Innovate. Share. Connect. BostonJune 10-11 What's new in Neo4j 2.0What's new in Neo4j 2.0 Andreas Kollegger, Neo TechnologyAndreas Kollegger, Neo Technology @akollegger@akollegger
  • 2.
    Neo4j 2.0 ★ 3questions: Why? What? How? ★ with just One answer
  • 3.
  • 4.
    Why 2.0? • Neo4j1.10 could be an AM radio station • Wanted to seem web-savvy before it goes to 3.0 • We were in the mood to break some things • Really, it's because of a shift in focus
  • 5.
    (0.x) --> (1.x)--> (2.x) • 0.x was about embedded java • 1.x introduced the server and REST • 2.x ease of use, big data, cloud which means a focus on...
  • 6.
  • 7.
    Focus on Cypher •Cypher, a carefully crafted language for working with graphs • Declarative, friendly, easy to read and write • One language, used everywhere • REST for management, Java for plugins,
  • 8.
    What is newin 2.0?
  • 9.
    There will be somesad Danes some sad Danes "Once you label me, you negate me.” - Søren Kierkegaard
  • 10.
    • Simply: alabel identifies a set of nodes • Nodes can have multiple labels • Find nodes by label • Constrain properties and values • (lightweight schema) • A simple idea, with powerful applications Introducing Node Labels
  • 11.
    Find friends wholike cheese MATCH (max:People)-[:FRIENDS]->(cheesy: People), (cheesy)-[:LIKE]->(cheese:Things) WHERE max.name = "Max De Marzi" AND cheese.name = "Cheese" RETURN cheesy;
  • 12.
    Schema Indexing • Indexesfor labels, based on a property • Simple lookups for now • Unique indexing coming soon • Full-text, other special indexes in planning CREATE INDEX ON :People(name)
  • 13.
    MERGE operation • acombination of MATCH + CREATE • replaces CREATE UNIQUE • attempts to MATCH, with specified properties and labels • if match fails, new graph data is created • optional sub-clauses for handling ON CREATE, and ON MATCH MERGE (charlie { name:'Charlie Sheen', age:10 }) RETURN charlie
  • 14.
    • begin, commit,or rollback a transaction • transaction as RESTful resource • issue multiple statements per request • multiple requests per transaction • compact response format Transactional Cypher
  • 15.
    Anything else? • Performanceimprovements • Breaking changes to some APIs (read CHANGES.txt) • Migration of "legacy" indexes (stop STARTing) • Mandatory transactions for all DB interactions • Improving installers (in progress) • Changing everything to be "all Cypher, all the time"
  • 16.
    How to uselabels?
  • 17.
    Label - toidentify name: Ford Prefect NINO: 122-762-9255 HIKE: 415-484-6364 UKUK H2G2H2G2
  • 18.
    Label - toidentify UKUK H2G2H2G2 MATCH (ford:H2G2) WHERE ford.HIKE = '415-484-6364' RETURN ford
  • 19.
    Label - toavoid confusion name: Ford Prefect name: Ford Prefect AlienAlien CarCar MATCH (ford:Alien) WHERE ford.name = 'Ford Prefect' RETURN ford
  • 20.
    Label - specialnodes • replace built-in reference node, with domain specific reference nodes 4242 AnswerAnswer
  • 21.
    Labels - rulesof thumb • Use a label to make queries easier to read & write • And to improve performance through indexing • Start with anything you might've put in a legacy index • Use lightly, as few labels as needed
  • 22.
    Is that itfor 2.0?
  • 23.
  • 27.
    What is newin 2.0? • It's all about Cypher, starting with • Labels, the first significant change in over 12 years • Mix in schema indexing • Then transactional REST, new clauses, functions • A fresh Web UI that is Cypher-focused
  • 28.
    Thanks :) Any questions? Anyquestions? Any questions? @akollegger to keep in touch