Som en del av trenden runt NoSQL-databaser har det blivit en hel del prat om grafdatabaser. Det har kommit ut ett antal väldigt bra produkter och öppen källkods-projekt, och det är nu minst lika enkelt att använda en grafdatabas som en vanlig relationsdatabas. Vad är skillnaden? Varför ska du bry dig? Är det inte bara ännu en variation på existerande teman?
Jo, egentligen finns det inget nytt med grafdatabaser, förutom att de tar ett gammalt koncept och har gjort det till något som är praktiskt och tillgängligt. I grund och botten är en grafdatabas precis vad det låter som – en databas där det viktigaste objektet är en graf. En graf är enkel att beskriva. Den består av noder och namngivna relationer mellan noderna (ofta kallas dessa kanter). Så en typisk graf kan till exempel beskriva vänskapsrelationerna i Facebook: Karin, Anna, Johan och Märta är noder, och kanterna kan beskriva att Karin är vän med Johan, Anna är vän med Märta och Johan är också vän med Märta. Vad detta ger oss är ett sätt att ha en databas där relationerna mellan noderna är den viktigaste delen av systemet.
Om du någonsin designat en databas med mängder av join-tables kanske det är tydligt att relationsdatabaser faktiskt inte är särskilt intresserade av relationer.
I många fall kan en grafdatabas också spara information på noderna. Så noden för Anna kan innehålla information om hennes namn, när hon är född och liknande. Men du kan också lägga information på kanterna, vilket gör att du kan spara information om när Karin och Johan blev vänner på kanten mellan noderna. De flesta grafdatabaser låter dig spara vilken typ av information som helst, var som helst, utan att kräva ett schema eller liknande.
Det finns många tekniker som använder grafdatabaser: Facebook Graph Search har just kommit ut och Google Knowledge Graph har funnits ett tag. Men om du vill sätta upp din egen grafdatabas och prova, är nog Neo4J det bästa stället att börja. Blueprints är ett ramverk som gör att du kan använda olika databaser på samma sätt. Det finns också ett antal olika frågespråk som gör det enkelt att jobba med informationen i en grafdatabas. Cypher och Gremlin är de två stora alternativen. I många fall fungerar det också bra att använda biblioteken för att gå igenom data direkt, utan ett frågespråk.
Vad som gör grafdatabaser viktiga är att de fokuserar på relationerna mellan objekt. Det sättet att tänka gör att nya mönster blir tydliga i din data, och många typer av frågor blir väldigt naturliga. Alla utvecklare bör vara medvetna om hur grafdatabaser fungerar och hur man kan använda dem.