Database Reference
In-Depth Information
an den in Neo4j integrierten Lucene-Suchindex, in dem jedes Objekt anhand seiner ID und
weiterer Attribute wie z. B. Name und Typ indiziert ist.
Eine der großen Stärken von Structr ist hier vor allem die Unterstützung von komplexen
Abfragen nach bestimmten Eigenschaften, Wertebereichen oder auch die Umkreissuche
von Objekten mit Standortinformationen. Letzteres wird durch die Integration des Neo4j-
Plug-ins „Neo4j Spatial“ erreicht.
Aufbau des Ergebnisdokuments
Nachdem die gewünschte Ergebnismenge bekannt ist, wird nun rekursiv das JSON-Do-
kument aufgebaut, indem alle im Schema definierten Beziehungen zu anderen Knoten
verfolgt und die Attribute in das Dokument übernommen werden. Durch die hohe Ge-
schwindigkeit der Graphdatenbank Neo4j, die mehrere Millionen solcher Sprünge ( Traver-
sal Hops ) pro Sekunde schafft, können die JSON-Dokumente in wenigen Millisekunden
zusammengesetzt werden.
Die Struktur des JSON-Dokuments ist dabei nicht fix, sondern kann über eine so genannte
View variiert werden. Eine View ist eine Liste der für einen Typ jeweils sichtbaren Attri-
bute. Sie ist Bestandteil des URL und für alle Objekte innerhalb einer Abfrage identisch.
Enthält der URL keine spezielle View-Angabe, wird standardmäßig eine View mit dem
Namen „public“ verwendet. Das Zusammensetzen geschieht per „Lazy Loading“, d. h. die
Bestandteile eines JSON-Dokuments werden erst im Moment des Zugriffs abhängig von
seiner Sichtbarkeit und den jeweiligen Benutzerrechten auf Objektebene nachgeladen.
Erzeugung von Graphstrukturen aus JSON-Dokumenten
In der umgekehrten Richtung kann Structr aus JSON-Dokumenten, die an einen REST-
URL per HTTP POST gesendet werden, beinahe beliebige Graphstrukturen erzeugen, an-
gefangen bei einzelnen Knoten über Listen von Knoten bis hin zu komplexen Subgraphen.
Wenn der durch das type -Attribut definierte Datentyp im Structr-Schema bekannt ist, wird
das JSON-Dokument entgegengenommen und geparst. Die so erzeugten Objekte werden
anhand der Schemaregeln validiert und bei deren Erfüllung als Graphobjekte persistiert.
Dabei werden im Graph unter Einhaltung der im Schema definierten Kardinalität automa-
tisch Verknüpfungen zu bereits vorhandenen Knoten angelegt, bzw. nicht vorhandene Kno-
Search WWH ::




Custom Search