#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