Top Banner
NoSQL Polyglot Persistence Neo4j Tools and Integrations William Lyon @lyonwj
67

GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Jan 08, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

NoSQL Polyglot PersistenceNeo4j Tools and Integrations

William Lyon @lyonwj

Page 2: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

William LyonDeveloper Relations @neo4j

[email protected] @lyonwj lyonwj.com

Page 3: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Does Neo4j work with ______ ?

Languages, frameworks, databases…

Page 4: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Does Neo4j work with ______ ?

Languages

Page 5: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Does Neo4j work with ______ ?

Frameworks

Page 6: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Does Neo4j work with ______ ?

Databases

Page 7: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Does Neo4j work with ______ ?

Deployment

Page 8: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Does Neo4j work with ______ ?

Frameworks

Page 9: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Does Neo4j work with ______ ?

Languages, frameworks, databases…

Page 10: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Polyglot Persistence

Page 11: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

DataStorageandBusinessRulesExecu5on

DataMiningandAggrega5on

Applica'on

GraphDatabaseCluster

Neo4j Neo4j Neo4j

AdHocAnalysis

BulkAnaly'cInfrastructureHadoop,EDW…

DataScien'st

EndUser

DatabasesRela5onalNoSQLHadoop

Page 12: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Polyglot Persistence

• Different types of data in different ways• Take advantage of strengths of different databases

http://martinfowler.com/bliki/PolyglotPersistence.html

Page 13: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Polyglot Persistence

Functionality Database type

Shopping Cart Rapid session reads / writes

Key-value store

Orders / Product Catalog

Frequent reads Document

Customer social graph

Recommendation Graph

http://www.jamesserra.com/archive/2015/07/what-is-polyglot-persistence/

Page 14: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Added Complexity

Page 15: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Challenge #1: Data Sync

Page 16: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

MIGRATEALLDATA

MIGRATESUBSET

DUPLICATESUBSET

Non-GraphQueries GraphQueries

GraphQueriesNon-GraphQueries

AllQueries

Rela3onalDatabase

GraphDatabase

Application

Application

Application

NonGraphData

AllData

?

Page 17: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 18: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 19: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Course CatalogBrowse & Search

• Good use-case for a document database

Page 20: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 21: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 22: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 23: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

?

Page 24: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Tool #1: Neo4j Doc Manager

• Automatically sync documents from MongoDB to Neo4j• Convert BSON documents into graph model• Initial version available• Feedback welcome!

http://neo4j.com/developer/mongodb/

Page 25: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j Doc ManagerAutomatically sync documents from MongoDB to Neo4j

Page 26: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Document to property graph{ "session": { "title": "12 Years of Spring: An Open Source Journey", "abstract": "Spring emerged as a core open source project in early 2003 and evolved to a broad portfolio of open source projects up until 2015." }, "topics": [ "keynote", "spring" ], "room": "Auditorium", "timeslot": "Wed 29th, 09:30-10:30", "speaker": { "name": "Juergen Hoeller", "bio": "Juergen Hoeller is co-founder of the Spring Framework open source project.", "twitter": "https://twitter.com/springjuergen", "picture": "http://www.springio.net/wp-content/uploads/2014/11/juergen_hoeller-220x220.jpeg" }}

Page 27: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

{ "session": { "title": "12 Years of Spring: An Open Source Journey", "abstract": "Spring emerged as a core open source project in early 2003 and evolved to a broad portfolio of open source projects up until 2015." }, "topics": [ "keynote", "spring" ], "room": "Auditorium", "timeslot": "Wed 29th, 09:30-10:30", "speaker": { "name": "Juergen Hoeller", "bio": "Juergen Hoeller is co-founder of the Spring Framework open source project.", "twitter": "https://twitter.com/springjuergen", "picture": "http://www.springio.net/wp-content/uploads/2014/11/juergen_hoeller-220x220.jpeg" }}

Document to property graph

Page 28: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

https://github.com/neo4j-contrib/neo4j_doc_manager

Page 29: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j + MongoDB Webinar

http://neo4j.com/webinars/

Building a polyglot application with Neo4j and MongoDB

Page 30: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

http://neo4j.com/blog/couchbase-jdbc-integrations-neo4j-3-0/

Couchbase + Neo4j integration

Page 31: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Challenge #2: Operations

Page 32: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

http://neo4j.com/developer/docker/

Page 33: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

https://hub.docker.com/_/neo4j/

docker pull neo4j

Tool #2: Official Neo4j Docker Image

Page 34: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

https://www.docker.com/products/docker-compose

Page 35: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

docker-compose.yml

Page 36: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 37: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Challenge #3: Data Models

Page 38: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 39: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Tool #3: Neo4j Cassandra Data Import Tool

http://neo4j.com/developer/cassandra/

• Python command line app• Uses Python Neo4j and Cassandra drivers

Page 40: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j Cassandra Data Import ToolCassandra schema metadata

python connector.py parse -k playlist

Page 41: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Tables become nodes

Artist

Track

Column family to property graph

Page 42: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

What’s that?

Neo4j Cassandra Data Import ToolUser defined data model mappings

Page 43: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j Cassandra Data Import Tool

{p}, node property{r}, relationship{u}, unique constraint field{i}, create index

User defined data model mappings

Page 44: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j Cassandra Data Import ToolUser defined data model mappings

Page 45: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j Cassandra Data Import ToolGenerates LOAD CSV Cypher

python connector.py export -k playlist -t track_by_id,artists_by_first_letter

Page 46: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j 3.0

Page 47: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j 3.0

Bolt Stored ProceduresDrivers

Page 48: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Neo4j 3.0 Stored procedures

User-defined procedures are written in Java, deployed into the database, and called from Cypher.

http://neo4j.com/docs/java-reference/current/#procedures

Page 49: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 50: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

https://github.com/neo4j-contrib/neo4j-apoc-procedures

Page 51: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 52: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

https://github.com/neo4j-contrib/neo4j-apoc-procedures/blob/master/readme.adoc

Page 53: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Northwind

Page 54: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Northwind

Page 55: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 56: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 57: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 58: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 59: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 60: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 61: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 62: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon
Page 63: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Bolt and Neo4j 3.0 Drivers

Binary protocol for Neo4j

http://neo4j.com/docs/developer-manual/current/#driver

Page 64: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

https://github.com/jexp/neo4j-spark-connector

Neo4j Spark ConnectorUsing Neo4j 3.0 Java Driver with Bolt

Page 65: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

https://github.com/johnymontana/neovis.js

neovis.jsEmbeddable graph visualization powered by Neo4j 3.0 Bolt Javascript driver

Page 66: GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations - William Lyon

Resources

http://neo4j.com/developer/

Neo4j Developer Resources