Sinds 2017 vestigen we op deze pagina’s de aandacht op het gebruik van Graph Databases (hier, hier en hier). Gartner voorspelt dat in 2025 de graph-technologieën zullen worden gebruikt in 80% van de innovaties in het gebied van data en analytics, tegenover 10% in 2021, waardoor snelle besluitvorming in een organisatie mogelijk wordt.
Graph databases worden in twee grote domeinen gebruikt:
- Analytics, waarbij complexe berekeningen worden uitgevoerd op grote hoeveelheden gegevens (identificatie van structuren, gemeenschappen, karakteristieke nodes, ontbrekende relaties, anomalieën, paths, enz.);
- Verkenning, waarbij agenten kunnen zoeken naar een bepaalde node of relatie en vervolgens de directe omgeving ervan kunnen verkennen in een onderzoekscontext.
Het is natuurlijk gebruikelijk om de twee te combineren: een eerste analysefase identificeert situaties die moeten worden onderzocht (vermoedelijke fraude, incidenten of zwakheden in een infrastructuur, etc.), en elk geval kan dan lokaal worden verkend om tot een beslissing te komen. Verder in dit artikel zullen we ons richten op het verkennende aspect.
In de verkennende fase ligt een van de belangrijkste voordelen van graph databases in het feit dat het datamodel en de echte wereld goed op mekaar kunnen afgestemd worden. Over het algemeen vertegenwoordigen de nodes of entiteiten concepten die duidelijk zijn voor businessmensen (mensen, bedrijven, documenten, servers, etc.) en hebben de relaties een natuurlijke semantiek (werkt voor, behoort tot, is verbonden met, etc.). Als gevolg hiervan kan een generieke grafische interface vaak worden gekoppeld aan een database en in handen worden gegeven van experts zonder IT-kennis, met slechts een beetje configuratie en parametrisatie vooraf, maar geen ontwikkeling. Dit zal niet het geval zijn in relationele databases, waar een tabel zowel een entiteit als een relatie kan vertegenwoordigen, en een attribuut soms echte informatie zal vertegenwoordigen, en soms een primaire of vreemde sleutel (foreign key).
Knowledge graphs zijn een typisch voorbeeld van een algemene grafische interface die veel toegevoegde waarde kan bieden zonder dat er specifieke ontwikkeling voor nodig is.
Om deze mogelijkheid te illustreren bestuderen we hieronder een aantal tools, van de eenvoudigste tot de meest complexe, die kunnen worden gebruikt om gegevens te visualiseren die zijn opgeslagen in een Neo4J graph-georiënteerde database.
JavaScript libraries
Er bestaan veel libraries die een netwerk kunnen weergeven (vis.js, D3, Sigma.js, …). Maar sommige stellen je in staat om rechtstreeks te interageren met Neo4j. Zo kun je in JavaScript een Cypher query (de querytaal van Neo4j) hebben, dat naar de Neo4j-server wordt gestuurd en waarvan het resultaat op het scherm kan worden weergegeven:
- Neovis.js (uitbreiding van vis.js, gratis);
- Popoto.js (uitbreiding van D3.js, gratis);
- Cytoscape.js, waarschijnlijk de meest geavanceerde opensource library, aanvulling op CytoScape Desktop, die hieronder aan bod komt;
- KeyLines, zeer geavanceerde commerciële oplossing voor bedrijven.
Deze oplossingen voldoen niet direct aan de hierboven genoemde mogelijkheid van een tool die enkel geconfigureerd hoeft te worden, omdat ze veel ontwikkelingswerk vereisen voordat ze in productie kunnen worden genomen. Anderzijds maakt het feit dat ze rechtstreeks met Neo4j kunnen communiceren de ontwikkeling ongetwijfeld eenvoudiger, maar impliceert ook dat directe toegang tot Neo4j vanuit de browser beschikbaar moet zijn, en dat de informatie voor de connectie aanwezig is in de JavaScript-code, of wordt opgevraagd bij de gebruiker.
Ingestion
Met een groot aantal producten kun je Neo4j-gegevens opnemen in je eigen datasysteem, ofwel door alle gegevens eruit te halen of door een Cypher query uit te voeren om het resultaat op te halen.
Er zijn bijvoorbeeld twee opensource tools voor netwerkanalyse:
- Gephi, met een toegewezen plugin. Er is keuze tussen het importeren van alle nodes en relaties die behoren tot één of meerdere geselecteerde types, of alleen het resultaat van een Cypher query. Helaas is het proces nogal moeizaam en vereist het een goede kennis van Cypher, wat deze oplossing ongeschikt maakt voor gebruik door een businessexpert. Het is bijvoorbeeld nodig om een query op te geven met de nodes die geïmporteerd moeten worden, gevolgd door een andere query met de relaties. Het zal daarom bijzonder complex zijn om het hele netwerk binnen een maximale afstand van 3 van een “doel”-node te importeren.
Bovendien worden de gegevens na het importeren volledig losgekoppeld van de database. Tenzij ze opnieuw worden geïmporteerd, is het niet mogelijk om de buren van een node in de werkruimte op te vragen.
- Cytoscape, met een toegewijde plugin (Cytoscape Neo4j Plugin). Op papier is dit een geavanceerdere oplossing dan Gephi: gegevensintegratie via een query is veel flexibeler en zodra een deel van het netwerk is geïmporteerd, kun je met slechts twee klikken zoeken naar de buren van een node in de werkruimte. Dit is dus een echte verkenningstool. Er zijn echter drie beperkingen:
- Tijdens onze tests werden de nodes correct geïmporteerd, maar de relaties niet en werden deze zeer willekeurig geïmporteerd;
- Een visualisatie kan niet verrijkt worden met een nieuwe query (die een nieuwe visualisatie creëert), wat de interactiviteit aanzienlijk beperkt;
- Cytoscape is eigenlijk een tool ontworpen voor bio-informatica en chemie. Hoewel het zeer krachtig is, is het ook complex en moeilijk in handen te leggen van niet-technische gebruikers.
Naast deze opensource oplossingen zijn er een groot aantal professionele en commerciële platforms met zeer uitgebreide analysemogelijkheden, die zich richten op een ‘graph’ benadering en waarmee een groot aantal gegevensformaten kan worden geïmporteerd, waaronder Neo4j. Over het algemeen bedoeld voor organisaties (veiligheid, intelligence, enz.) met onderzoeksbehoeften, dupliceren ze daarom Neo4j gegevens (wat synchronisatie bemoeilijkt) en combineren ze deze mogelijk met andere gegevens. Bijvoorbeeld (meer details hier) :
Exploratie
Laten we nu eens kijken naar een aantal toepassingen waarmee je direct kan aansluiten op een Neo4j database om deze te verkennen, zonder de gegevens te kopiëren naar een intern systeem, en zonder dat er enige ontwikkeling voor nodig is, althans in het begin.
Eerst is er het basistool dat (gratis) wordt meegeleverd met Neo4j: Neo4j Browser. Dit is een tool voor ontwikkelaars en datawetenschappers, waarmee ze queries kunnen testen en de resultaten kunnen bekijken, met beperkte uitbreidingsmogelijkheden (weergave van de buren van een node). Je moet altijd beginnen met een Cypher-query en je kunt een node alleen uitbreiden door alle buren weer te geven.
Neo4j Bloom
Neo4j Bloom is een (betalende) optie van de Enterprise versie van Neo4j (ook betalend), en is een tool voor business experts. Ze kunnen zoeken naar informatie in ‘full text’, selectief uitbreiden (alleen buren van een bepaald type toevoegen, of gekoppeld via een relatie van een bepaald type), en zelfs grafisch ‘patterns’ definiëren om naar te zoeken, zonder dat er ook maar één regel Cypher voor nodig is.
Bloom is gratis beschikbaar met Neo4j Desktop (lokaal geïnstalleerde versie), maar alleen voor het verkennen van lokale graphs, en zonder de mogelijkheid om visualisaties op te slaan, waardoor deze gratis versie ongeschikt is voor gebruik in een professionele context.
yWorks Neo4j Explorer
Ontwikkeld door hetzelfde bedrijf als yFiles en yEd, biedt yWorks Neo4j Explorer een eenvoudige interface (gratis), die full text zoeken, selectieve uitbreiding en zelfs de mogelijkheid biedt om ChatGPT te gebruiken voor het genereren van een Cypher query voor een specifieke behoefte. Er is echter geen echte mogelijkheid om een visualisatie op te slaan of te delen.
yWorks Explorer kan gebruikt worden door de cloudversie te kiezen of door het te installeren in Neo4j Desktop. Merk op dat in de cloudversie, de verbinding met de database wordt gemaakt vanuit de browser, en het dus mogelijk is om toegang te krijgen tot een interne of lokale database.
Graphileon
Graphileon, of het nu cloud (betaalversie) of desktop (gratis, maar gedeprecieerd) is, is op dit moment nog niet echt toegankelijk voor iedereen, omdat het een Cypher query als startpunt vereist. Maar het biedt wel de mogelijkheid om een ‘app’ te creëren, waarmee ontwikkelaars knoppen aan de interface kunnen toevoegen met een geprogrammeerde actie, waardoor de functionaliteit wordt uitgebreid. De mogelijkheden van de tool zijn echter relatief beperkt en vereisen vaak technische vaardigheden, zoals de noodzaak om JavaScript te bewerken om stijlen aan te passen (kleuren, vormen, icoontjes, enz.).
Het extra voordeel is de scheiding tussen een ‘admin’-gebruiker, die de verbinding met de DB configureert, en de ‘klassieke’ gebruiker, die geen technische informatie over de database hoeft te kennen.
Tom Sawyer Graph Database Browser
Van zo’n softwareleverancier had je misschien een tool verwacht die vergelijkbaar is met de concurrenten die op deze pagina worden gepresenteerd, maar Neo4j’s verkenning is helemaal anders. Een verouderde interface, stijl parametriseringsopties die JavaScript-achtige codebewerking vereisen, Cypher queries als het enige startpunt, geen full text search (behalve voor objecten die al in de werkruimte staan), geen selectieve uitbreiding… Als het een gratis tool was geweest, had het een geldig alternatief kunnen zijn, maar Tom Sawyer Graph Database Browser biedt alleen betaalde opties. De waarde van deze leverancier zit ongetwijfeld in de andere producten in de catalogus.
Linkurious Enterprise
Naar onze mening de meest geavanceerde van de tot nu toe geteste tools. Voor eindgebruikers biedt Linkurious Enterprise een eenvoudig te hanteren interface voor leken, krachtige zoek-, filter- en stijlaanpassingsmogelijkheden en visualisaties die kunnen worden opgeslagen, georganiseerd, gedeeld, geëxporteerd of becommentarieerd. Admins kunnen het beheer van gebruikers, groepen en toegangsrechten verfijnen en eventueel koppelen aan AD of LDAP.
Het is jammer dat er geen tool is zoals die van Bloom, waarmee (relatief) uitgebreide queries kunnen worden gebouwd zonder kennis van Cypher. Maar dit wordt gecompenseerd door de mogelijkheid voor admins om Cypher queries te definiëren, eventueel met parameters, waardoor gebruikers krachtige zoekopdrachten of uitbreidingen kunnen uitvoeren, zonder enige technische kennis.
Een geavanceerde API maakt ook een hoge mate van automatisering mogelijk. Het is bijvoorbeeld mogelijk om automatisch een weergave te maken en vervolgens een ‘widget’ (interactieve mini-weergave) te maken die vervolgens in een toepassing kan worden geïntegreerd.
In tegenstelling tot de meeste tools die in dit artikel worden genoemd, is er geen gratis versie van Linkurious, zelfs geen beperkte.
Graphlytic
Waarschijnlijk het enige echte alternatief voor Bloom of Linkurious, biedt Graphlytic een gratis versie, via Neo4j Desktop of on-premise, maar met één gebruiker. We zitten echter nog steeds een niveau lager qua mogelijkheden: beperkte samenwerkingsaspecten, geen echte selectieve exploratie, geen parametrische queries.
Er is echter een Query builder, die nog steeds beperkt is maar potentieel heeft, de mogelijkheid om de stijl (nodegrootte, kleuren, randstijlen en -dikte, pijlvormen, enz.) zeer gedetailleerd aan te passen en de aanwezigheid van de API of verbinding met een SSO (niet getest).
Conclusie
Er bestaan dus een aantal alternatieven voor gegevensverkenning in Neo4j (en vaak ook andere modellen zoals MemGraph of AllegroGraph). Deze variëren van eenvoudige, gratis tools binnen het bereik van kleine organisaties, zoals yWorks of Graphlytic, tot veel uitgebreidere oplossingen, maar tegen prijzen die alleen grote organisaties zich kunnen veroorloven, zoals Bloom of Linkurious. Maar bij de keuze van een geschikte tool moet er ook rekening gehouden worden met een aantal criteria waarmee die niet in detail werden besproken: wat is het pricing model, is de tool compatibel met de software en netwerkinfrastructuur van het bedrijf, hoe zit het met GDPR, enz.
Een eerste evaluatie met een gratis tool zal al deze beperkingen aan het licht brengen, om zo met kennis van zaken de ideale tool te kunnen kiezen.
Deze post is een individuele bijdrage van Vandy Berten, gespecialiseerd in data science bij Smals Research. Dit artikel is geschreven onder zijn eigen naam en weerspiegelt op geen enkele wijze de standpunten van Smals..
Leave a Reply