Öppen källkod Microsoft Graph Engine tar Neo4j

Ibland är förhållandet mellan de uppgifter du har samlat in viktigare än själva data. (Se: Facebook tjänar pengar på din vänlista.) Det är då ett grafbehandlingssystem är till nytta. Det är en viktig men ofta dåligt förstådd metod för att utforska hur objekt i en datamängd är inbördes relaterade.

Microsoft har utforskat detta område sedan åtminstone 2013, då det publicerade ett dokument som beskriver Trinity-projektet, en molnbaserad grafmotor i minnet. Frukten av ansträngningen, känd som Microsoft Graph Engine, är nu tillgänglig som ett MIT-licensierat öppen källkodsprojekt som ett alternativ till Neo4j eller Linux Foundation: s nyligen meddelade JanusGraph.

Allt hänger ihop

Microsoft kallar Graph Engine (GE) som "både en RAM-butik och en beräkningsmotor." Data kan infogas i GE och hämtas med hög hastighet eftersom de förvaras i minnet och bara skrivs tillbaka till disken efter behov. Det kan fungera som en enkel nyckel-värdebutik som Memcached, men Redis kan vara den bättre jämförelsen, eftersom GE lagrar data i starkt skrivna scheman (sträng, heltal och så vidare).

"Beräkningsmotor" -delen av ekvationen betyder att GE implementerar distribuerade algoritmer över noder, skrivna i C #. Det är inte optimerat ur lådan för en viss typ av grafalgoritm, så det kommer sannolikt att tilltala dem som vill skriva sina egna grafutforskningsalgoritmer från grunden - eller helt enkelt skriva sina egna distribuerade algoritmer.

"I stället för att försöka tillhandahålla en uttömmande uppsättning inbyggda beräkningsmoduler", säger Microsofts dokumentation, "GE försöker tillhandahålla generiska byggstenar så att vi enkelt kan bygga sådana moduler." Dessa block inkluderar ett system för synkron och asynkron meddelandeöverföring samt LIKQ-graffrågespråket som redan används av Academic Graph Search API i Microsoft Cognitive Services.

Olika vägar genom labyrinten

Hur formar sig allt detta mot den ledande grafikdatabasen med öppen källkod, Neo4j? För det första har Neo4j varit längre på marknaden och har en befintlig användarbas. Det finns också i både en öppen källkodsutgåva och en kommersiell produkt, medan GE bara är ett open source-projekt just nu.

Som sagt, endast den kommersiella, företagsinriktade utgåvan av Neo4j stöder skärning och replikering. GE är däremot grupperad i sin standardinkarnation med öppen källkod, även om kluster på både Neo4j och GE kräver manuell installation. I GE: s fall måste rollerna för varje nod i klustret (servrar och eventuellt fråga-aggregerande proxyer) konfigureras manuellt beroende på användningsfallet.

En annan distribuerad grafdatabas som är värt att jämföra med GE är JanusGraph, ett nytt projekt under sponsring av Linux Foundation med bidrag från Google, Hortonworks och IBM. Den har byggts för att arbeta nära och utnyttja Hadoop-ekosystemet. Elasticsearch och Lucene kan användas som indexeringsmotorer och Cassandra och HBase kan användas som datalager. Med GE måste data importeras till den först.

Det som Microsoft verkar siktas på med GE är ingen konkurrens med dessa projekt. Istället är GE en distribuerad infrastruktur för datalagring som tar emot ny data och tillhandahåller grafberäkning som en av dess många fördelar. Dess liberala licensiering gör det också enkelt att omarbeta till andra produkter eller lätt återanvändas för värd i stor skala. Det är inte klart om Microsoft har använt GE som en del av ett eget system (även om det har använt LIKQ, som nämnts ovan).

Om de som bygger på icke-Microsoft-plattformar är intresserade av att testa Graph Engine, kommer plattformsstöd för Linux / BSD inom kort, enligt en av utvecklarna.