Was Sie beschreiben, klingt nach Multitenant. Neo4j 2.0.1 unterstützt Multitenancy derzeit nicht als Funktion. Es gibt verschiedene Methoden und Strategien zur Implementierung einer mandantenfähigen Architektur innerhalb Ihrer Neo4j-Datenbankinstanz.
Sie können Teile Ihres Property Graphs nach Label partitionieren. Da Knoten mehrere Labels haben können, können Sie eine Partition mit einem eindeutigen Identifizierungslabel für diese Partition versehen.
Bitte beachten Sie die Dokumentation zu Labels hier: http://docs.neo4j.org/chunked/milestone/graphdb-neo4j-labels.html
Wichtige Punkte bei dieser Strategie sind sicherzustellen, dass alle Ihre Cypher-Aufrufe den Partition-Identifier für das Label enthalten, um sicherzustellen, dass die beiden Partitionen innerhalb des Graphen voneinander isoliert sind. Es ist wichtig sicherzustellen, dass Beziehungen von einer Partition nicht in eine andere Partition übergehen.
Zum Beispiel könnte Partition 1 das Label Partition1
sein. Angenommen, Ihr Anwendungskontext arbeitet mit Partition1
:
MERGE (user:User:Partition1 { name: 'Peter' })
RETURN user
Angenommen, Ihr Anwendungskontext arbeitet mit Partition2
:
MERGE (user:User:Partition2 { name: 'Peter' })
RETURN user
Bei der Ausführung dieser beiden Abfragen werden zwei separate Peters für Partition1
und Partition2
erstellt.
Sie müssen nur sicherstellen, dass das Partitionslabel, auf dem Ihre Anwendung arbeitet, seinem Label jedem Ihrer Abfragen anhängt. Obwohl dies mühsam ist, ist es derzeit der empfohlene Weg, um mit Multitenancy umzugehen.