5 Stimmen

Wie partitioniert man eine einzelne Neo4j-Datenbank?

Kann eine Neo4j-Datenbank so aufgeteilt werden, dass es mehrere Ausgangspunkte in einer Datenbank gibt, sodass alle Abfragen isoliert werden können, anstatt mehrere Datenbanken zu haben?

Ich habe darüber nachgedacht und ich denke, es kann bis zu einem gewissen Punkt funktionieren, aber sobald Dinge wie Labels verwendet werden, wird die Idee nicht funktionieren, da eine Labelabfrage immer die gesamte Datenbank umfasst.

Wie auch immer, ich würde gerne wissen, ob jemand dies erfolgreich gemacht hat und wie sie es gemacht haben.

5voto

Kenny Bastani Punkte 3228

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X