Programmering

Open source Microsoft Graph Engine påtager sig Neo4j

Undertiden er forholdet mellem de data, du har samlet, vigtigere end selve dataene. (Se: Facebook tjener penge på din venneliste.) Det er, når et grafbehandlingssystem er nyttigt. Det er en vigtig, men ofte dårligt forstået metode til at udforske, hvordan elementer i et datasæt hænger sammen.

Microsoft har udforsket dette område siden mindst 2013, da det offentliggjorde et papir, der beskriver Trinity-projektet, en skybaseret grafmotor i hukommelsen. Frugten af ​​indsatsen, kendt som Microsoft Graph Engine, er nu tilgængelig som et MIT-licenseret open source-projekt som et alternativ til Neo4j eller Linux Foundation's nyligt annoncerede JanusGraph.

Alt er forbundet

Microsoft kalder Graph Engine (GE) som "både en RAM-butik og en beregningsmotor." Data kan indsættes i GE og hentes i høj hastighed, da de opbevares i hukommelsen og kun skrives tilbage til disken efter behov. Det kan fungere som en simpel nøgleværdibutik som Memcached, men Redis er muligvis den bedre sammenligning, da GE gemmer data i stærkt typede skemaer (streng, heltal osv.).

Den "beregningsmotor" del af ligningen betyder GE implementerer distribuerede algoritmer på tværs af noder, skrevet i C #. Det er ikke optimeret uden for boksen til en bestemt form for grafalgoritme, så det vil sandsynligvis appellere til dem, der ønsker at skrive deres egne grafefterforskningsalgoritmer helt fra bunden - eller blot skrive deres egne distribuerede algoritmer.

"I stedet for at forsøge at levere et udtømmende sæt indbyggede beregningsmoduler," siger Microsofts dokumentation, "forsøger GE at levere generiske byggesten, så vi let kan bygge sådanne moduler." Disse blokke inkluderer et system til synkron og asynkron meddelelsesoverføring samt LIKQ-grafforespørgselssproget, der allerede er brugt af Academic Graph Search API i Microsoft Cognitive Services.

Forskellige måder gennem labyrinten

Hvordan formes alt dette i forhold til den førende open source-grafdatabase, Neo4j? For det første har Neo4j været på markedet længere og har en eksisterende brugerbase. Det er også tilgængeligt i både en open source community-udgave og et kommercielt produkt, mens GE kun er et open source-projekt lige nu.

Når det er sagt, understøtter kun den kommercielle, virksomhedsorienterede udgave af Neo4j sharding og replikering. GE er derimod klynget i sin standard open source-inkarnation, selvom klyngedannelse på både Neo4j og GE kræver manuel opsætning. I GE's tilfælde skal roller for hver node i klyngen (servere og eventuelt forespørgselsaggregerende proxyer konfigureres manuelt afhængigt af brugssagen.

En anden distribueret grafdatabase, der er værd at sammenligne med GE, er JanusGraph, et nyt projekt under sponsorering af Linux Foundation med bidrag fra Google, Hortonworks og IBM. Det er bygget til at arbejde tæt sammen med og udnytte Hadoop-økosystemet. Elasticsearch og Lucene kan bruges som indekseringsmotorer, og Cassandra og HBase kan bruges som datalagre. Med GE skal data først importeres til det.

Hvad Microsoft ser ud til at sigte mod med GE, er ikke en konkurrence med disse projekter. I stedet er GE et stykke distribueret datalagringsinfrastruktur, der modtager nye data og leverer grafberegning som en af ​​dens flere fordele. Dens liberale licens gør det også let omskifteligt til andre produkter eller let genanvendt til hosting i stor skala. Det er ikke klart, om Microsoft har brugt GE som en del af et af sine egne systemer (selvom det har brugt LIKQ, som nævnt ovenfor).

Hvis de, der bygger på ikke-Microsoft-platforme, er interesserede i at afprøve Graph Engine, kommer support på tværs af platforme til Linux / BSD snart, ifølge en af ​​udviklerne.