#BuildStuffLT @hannelita
https://github.com/neo4j-contrib/neo4j_doc_manager
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
Graphs are everywhere
TEAM, Neo4j
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
https://github.com/10gen-labs/mongo-connector
#BuildStuffLT @hannelita
You
MC
Mongo Connector
#BuildStuffLT @hannelita
You
Call Mongo Connector
MC
#BuildStuffLT @hannelita
You
Call Mongo Connector
MC
Hi!
#BuildStuffLT @hannelita
You
Points where's your Mongo
MC
#BuildStuffLT @hannelita
You
Points where's your Mongo
Points where is the other database
MC
DM
Elasticsearch
Solr
(Doc Manager)
MC
DM
Elasticsearch
Solr
(Doc Manager)
Creates a thread to watch Mongo Actions (replica)
MC
DM
Elasticsearch
Solr
(Doc Manager)
Creates a thread to watch Mongo Actions
Call actions on a Doc Manager
We can translate these actions
into a Graph Structure
#BuildStuffLT @hannelita
mongo-connector (pip)
py2neo (neo4j)
#BuildStuffLT @hannelita
class DocManager(DocManagerBase):
def __init__(self, url, auto_commit_interval=DEFAULT_COMMIT_INTERVAL,
unique_key='_id', chunk_size=DEFAULT_MAX_BULK, **kwargs):
def upsert(self, doc, namespace, timestamp):
def bulk_upsert(self, docs, namespace, timestamp):
def update(self, document_id, update_spec, namespace, timestamp):
def remove(self, document_id, namespace, timestamp):
def search(self, start_ts, end_ts):
We can retrieve Mongo commands with this interface class
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
db.talks.insert( { "session":
#BuildStuffLT @hannelita
db.talks.insert( { "session":
#BuildStuffLT @hannelita
db.talks.insert( { "session": ...
Document:talks
Root node in Neo4j
#BuildStuffLT @hannelita
{ "session": { "title": "12 Years of Spring: An Open Source Journey" }, "topics": ["keynote", "spring"], "room": "Auditorium", "speaker": { "name": "Juergen Hoeller" } }
#BuildStuffLT @hannelita
{ "session": { "title": "12 Years of Spring: An Open Source Journey" }, "topics": ["keynote", "spring"], "room": "Auditorium", "speaker": { "name": "Juergen Hoeller" } }
Document:session
Document:speaker
#BuildStuffLT @hannelita
{ "session": { "title": "12 Years of Spring: An Open Source Journey" }, "topics": ["keynote", "spring"], "room": "Auditorium", "speaker": { "name": "Juergen Hoeller" } }
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
"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.", "conference" : { "city" : "London" } }
#BuildStuffLT @hannelita
"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.", "conference" : { "city" : "Dublin" } }
#BuildStuffLT @hannelita
Document:session
Document:conference
Child node
Parent node
#BuildStuffLT @hannelita
"session" : { "tracks": [{ "main":"Python" }, { "second":"Data" }] ... }
#BuildStuffLT @hannelita
Document:session
Document:track0
talks_track0
talks_track1
Document:track1
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
{ "name": "Hanneli", "account_id": "32434ab2341192", "url": "medium.com/@hannelita" }
session_account
Document:session
Document:account
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
"include": ["test.talks", "docs.info"] (config.json file)
#BuildStuffLT @hannelita
mongo-connector -m localhost:27017 -t http://localhost:7474/db/data -d neo4j_doc_manager -i room,timeslot,title
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
mongo-conenctor:
https://github.com/10gen-labs/mongo-connector
neo4j-doc-manager:
https://github.com/neo4j-contrib/neo4j_doc_manager
#BuildStuffLT @hannelita
Neo4j Cassandra connector :)
https://github.com/neo4j-contrib/neo4j-cassandra-connector
#BuildStuffLT @hannelita
#BuildStuffLT @hannelita
Questions?
hannelita@gmail.com
@hannelita