Programmering

Åpen kildekode Microsoft Graph Engine tar på seg Neo4j

Noen ganger er forholdet mellom dataene du har samlet viktigere enn selve dataene. (Se: Facebook tjener penger på vennelisten din.) Det er da et grafbehandlingssystem er nyttig. Det er en viktig, men ofte dårlig forstått metode for å utforske hvordan elementer i et datasett henger sammen.

Microsoft har utforsket dette området siden minst 2013, da det publiserte en artikkel som beskriver Trinity-prosjektet, en skybasert grafikkmotor i minnet. Fruktene av innsatsen, kjent som Microsoft Graph Engine, er nå tilgjengelig som et MIT-lisensiert open source-prosjekt som et alternativ til slike som Neo4j eller Linux Foundation's nylig annonserte JanusGraph.

Alt henger sammen

Microsoft kaller Graph Engine (GE) som "både en RAM-butikk og en beregningsmotor." Data kan settes inn i GE og hentes i høy hastighet siden de lagres i minnet og bare skrives tilbake til disken etter behov. Det kan fungere som en enkel nøkkelverdi-butikk som Memcached, men Redis kan være den bedre sammenligningen, siden GE lagrer data i sterkt typede skjemaer (streng, heltall og så videre).

Den "beregningsmotoren" -delen av ligningen betyr at GE implementerer distribuerte algoritmer på tvers av noder, skrevet i C #. Det er ikke optimalisert ut av boksen for en bestemt type grafalgoritme, så det vil sannsynligvis appellere til de som ønsker å skrive sine egne grafutforskningsalgoritmer fra grunnen av - eller bare skrive sine egne distribuerte algoritmer.

"I stedet for å prøve å tilby et uttømmende sett med innebygde beregningsmoduler," sier Microsofts dokumentasjon, "prøver GE å tilby generiske byggesteiner for å tillate oss å enkelt bygge slike moduler." Disse blokkene inkluderer et system for synkron og asynkron sending av meldinger, samt LIKQ-grafens spørringsspråk som allerede er brukt av Academic Graph Search API i Microsoft Cognitive Services.

Ulike måter gjennom labyrinten

Hvordan former alt dette seg mot den ledende open source-grafdatabasen, Neo4j? For det første har Neo4j vært i markedet lenger og har en eksisterende brukerbase. Den er også tilgjengelig i både en open source community-utgave og et kommersielt produkt, mens GE bare er et open source-prosjekt akkurat nå.

Når det er sagt, er det bare den kommersielle, forretningsorienterte utgaven av Neo4j som støtter skjæring og replikering. GE derimot er gruppert i standard åpen kildekodeinkarnasjon, selv om klynging på både Neo4j og GE krever manuell oppsett. I GEs tilfelle må rollene for hver node i klyngen (servere og, eventuelt spørringsaggregerende proxyer) konfigureres manuelt avhengig av brukssaken.

En annen distribuert grafdatabase som er verdt å sammenligne med GE er JanusGraph, et nytt prosjekt under sponsing av Linux Foundation med bidrag fra Google, Hortonworks og IBM. Den er bygget for å jobbe tett med og utnytte Hadoop-økosystemet. Elasticsearch og Lucene kan brukes som indekseringsmotorer, og Cassandra og HBase kan brukes som datalagre. Med GE må data importeres til den først.

Det Microsoft ser ut til å sikte mot med GE, er ikke en konkurranse med disse prosjektene. I stedet er GE et stykke distribuert datalagringsinfrastruktur som mottar nye data og gir grafberegning som en av de mange fordelene. Dens liberale lisensiering gjør det også enkelt å omgjøre til andre produkter eller omformes lett for å være vert i stor skala. Det er ikke klart om Microsoft har brukt GE som en del av et eget system (selv om det har brukt LIKQ, som nevnt ovenfor).

Hvis de som bygger på ikke-Microsoft-plattformer, er interessert i å prøve Graph Engine, kommer støtte på tvers av plattformer for Linux / BSD snart, ifølge en av utviklerne.