Database Reference
In-Depth Information
Der Code erzeugt Band-Knoten (wenn sie erzeugt werden müssen), dann
Künstler-Knoten (wenn sie erzeugt werden müssen) und dann die Rollen.
Jeder Schritt erzeugt neue Beziehungen, d. h., der The-Beatles-Knoten wird
mit den John-, Paul-, George- und Ringo-Knoten verknüpft, die wiederum
mit ihren Rollen verknüpft werden.
redis/graph_sync.js
function feedBandToNeo4j(band, progress) {
var
lookup = neo4jClient.lookupOrCreateNode,
relate = neo4jClient.createRelationship;
lookup( 'bands' , 'name' , band.name, function (bandNode) {
progress.emit( 'progress' , 'band' );
band.artists.forEach( function (artist) {
lookup( 'artists' , 'name' , artist.name, function (artistNode){
progress.emit( 'progress' , 'artist' );
relate(bandNode.self, artistNode.self, 'member' , function (){
progress.emit( 'progress' , 'member' );
});
artist.role.forEach( function (role){
lookup( 'roles' , 'role' , role, function (roleNode){
progress.emit( 'progress' , 'role' );
relate(artistNode.self, roleNode.self, 'plays' , function (){
progress.emit( 'progress' , 'plays' );
Lassen Sie diesen Dienst in einem eigenen Fenster laufen. Jedes Update in
CouchDB, das einen neuen Künstler oder eine neue Rolle für einen beste-
henden Künstler einfügt, führt zu einer neuen Beziehung in Neo4j und mög-
licherweise zu neuen Schlüsseln in Redis. Solange dieser Dienst läuft, sollten
die Daten immer synchron sein.
Öffnen Sie Ihre CouchDB-Web-Console und öffnen Sie eine Band. Nehmen
Sie beliebige Änderungen an den Daten vor: Nehmen Sie ein neues Bandmit-
glied auf (machen Sie sich selbst zu einem Mitglied der Beatles) oder weisen
Sie einem Künstler eine neue Rolle zu. Beachten Sie dabei die graph_sync-
Ausgabe. Öffnen Sie dann die Neo4j-Console und suchen Sie nach neuen
Verbindungen im Graphen. Wenn Sie ein neues Bandmitglied eingefügt ha-
ben, sollten Sie eine Beziehung zum Band-Knoten finden. Die aktuelle Imple-
mentierung löscht Beziehungen nicht. Allerdings müsste man den Code auch
nicht komplett umschreiben, um die Neo4j DELETE -Operation in das Skript
zu integrieren.
Der Service
Das ist der Teil, auf den wir hingearbeitet haben. Wir wollen eine einfache
Webanwendung entwickeln, die es dem Benutzer erlaubt, nach einer Band
zu suchen. Jede Band im System führt ihre Bandmitglieder als Links auf,
 
Search WWH ::




Custom Search