Hilfreiche Informationen rund um den produktiven Einsatz von Neo4j

Produktiv mit Graphen

Michael Hunger


Die Graphdatenbank mit ihrem flexiblen Datenmodell bietet eine Menge Möglichkeiten für die Modellierung der vielfältigsten Domänen. Wie immer in der Modellierung gibt es mehrere Wege vorzugehen.

Wir wollen einen inkrementellen Ansatz nutzen, der von meinem Kollegen Ian Robinson stammt und von ihm in Kundenprojekten genutzt wird. Bei der Graphmodellierung ist es verlockend, einfach alle Informationen, so wie sie in der realen Welt oder in einer anderen Datenbank vorliegen, 1:1 in den Graphen zu übernehmen. Es ist aber sinnvoll, das Modell an die konkreten Anwendungsfälle anzupassen und den Graph gemeinsam mit dem System weiterzuentwickeln.

Für diesen Modellierungsansatz beginnt man mit dem Anwendungsfall, den man abbilden möchte und arbeitet sich dann iterativ in sechs Schritten über Informationsextraktion, Musteridentifikation und Abfragedeklaration bis zur ersten Version des Graphmodells vor. Danach kann es in die nächste Runde gehen. Konkret sind das:

Anwendungsfall und Ziele der Nutzer identifizierenFragen herausfinden, die mithilfe der Domäne beantwortet werden sollenEntitäten in jeder Frage bestimmenBeziehungen zwischen den Entitäten erkennenEntitäten und Beziehungen zu Cypher-Pfaden zusammensetzen, Pfade sind die Basis des DatenmodellsFragen mithilfe der Pfade als Muster im Graphen notieren, Graphabfragen auf der Grundlage dieser Muster entwickeln

Schauen wir uns die Schritte im Einzelnen am konkreten Beispiel an.

1. Anwendungsfall und Ziele der Nutzer identifizieren

Eine typische User Story kann so aussehen: Als ein Nutzer möchte ich Empfehlungen für Filme mit Schauspielern, die ich positiv bewertet habe, erhalten, sodass ich gut unterhalten werde.

2. Fragen herausfinden, die mithilfe der Domäne beantwortet werden sollen

Aus der Story können wir die Frage(n) ableiten, die darin enthalten ist (sind), in diesem Fall ist das nur diese eine: Welche Schauspieler, die ich mag, haben in Filmen mitgespielt, die ich noch nicht gesehen habe?

Weitere Aufgaben im System wären die Anlage und Verwaltung (CRUD) der notwendigen Entitäten und Beziehungen.

3. Entitäten in jeder Frage bestimmen

Das ist etwas, dass wir schon aus der objektorientierten Analyse kennen. Da das Graphmodell dem Objektmodell sehr ähnlich ist, können wir hier dieselbe Herangehensweise wählen: Welche Schauspieler, die ich mag, haben in Filmen mitgespielt, die ich noch nicht gesehen habe?

Schauspieler -> ActorFilme -> Movieich -> User

Genauso markieren wir die Verben, die auf Beziehungen abgebildet werd...

Hilfreiche Informationen rund um den produktiven Einsatz von Neo4j

Produktiv mit Graphen

Michael Hunger


Die Graphdatenbank mit ihrem flexiblen Datenmodell bietet eine Menge Möglichkeiten für die Modellierung der vielfältigsten Domänen. Wie immer in der Modellierung gibt es mehrere Wege vorzugehen.

Wir wollen einen inkrementellen Ansatz nutzen, der von meinem Kollegen Ian Robinson stammt und von ihm in Kundenprojekten genutzt wird. Bei der Graphmodellierung ist es verlockend, einfach alle Informationen, so wie sie in der realen Welt oder in einer anderen Datenbank vorliegen, 1:1 in den Graphen zu übernehmen. Es ist aber sinnvoll, das Modell an die konkreten Anwendungsfälle anzupassen und den Graph gemeinsam mit dem System weiterzuentwickeln.

Für diesen Modellierungsansatz beginnt man mit dem Anwendungsfall, den man abbilden möchte und arbeitet sich dann iterativ in sechs Schritten über Informationsextraktion, Musteridentifikation und Abfragedeklaration bis zur ersten Version des Graphmodells vor. Danach kann es in die nächste Runde gehen. Konkret sind das:

Anwendungsfall und Ziele der Nutzer identifizierenFragen herausfinden, die mithilfe der Domäne beantwortet werden sollenEntitäten in jeder Frage bestimmenBeziehungen zwischen den Entitäten erkennenEntitäten und Beziehungen zu Cypher-Pfaden zusammensetzen, Pfade sind die Basis des DatenmodellsFragen mithilfe der Pfade als Muster im Graphen notieren, Graphabfragen auf der Grundlage dieser Muster entwickeln

Schauen wir uns die Schritte im Einzelnen am konkreten Beispiel an.

1. Anwendungsfall und Ziele der Nutzer identifizieren

Eine typische User Story kann so aussehen: Als ein Nutzer möchte ich Empfehlungen für Filme mit Schauspielern, die ich positiv bewertet habe, erhalten, sodass ich gut unterhalten werde.

2. Fragen herausfinden, die mithilfe der Domäne beantwortet werden sollen

Aus der Story können wir die Frage(n) ableiten, die darin enthalten ist (sind), in diesem Fall ist das nur diese eine: Welche Schauspieler, die ich mag, haben in Filmen mitgespielt, die ich noch nicht gesehen habe?

Weitere Aufgaben im System wären die Anlage und Verwaltung (CRUD) der notwendigen Entitäten und Beziehungen.

3. Entitäten in jeder Frage bestimmen

Das ist etwas, dass wir schon aus der objektorientierten Analyse kennen. Da das Graphmodell dem Objektmodell sehr ähnlich ist, können wir hier dieselbe Herangehensweise wählen: Welche Schauspieler, die ich mag, haben in Filmen mitgespielt, die ich noch nicht gesehen habe?

Schauspieler -> ActorFilme -> Movieich -> User

Genauso markieren wir die Verben, die auf Beziehungen abgebildet werd...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang