Programmering

De beste grafdatabasene

Grafdatabaser, som eksplisitt uttrykker forbindelsene mellom noder, er mer effektive ved analyse av nettverk (datamaskin, menneskelig, geografisk eller på annen måte) enn relasjonsdatabaser. Det gir grafdatabaser et opplegg for applikasjoner som svindeloppdagings- og anbefalingssystemer.

En av de viktigste trekkene ved grafdatabaser er muligheten til å kjøre grafberegningsalgoritmer. Disse brukes til oppgaver som ikke egner seg godt til relasjonsdatabaser, for eksempel gravesøk, stifinn, sentralitet, PageRank og gjenkjenning av fellesskap. Grafalgoritmer støttes for det meste i analytiske (OLAP og HTAP) grafdatabaser, selv om noen transaksjons (OLTP) grafdatabaser som Neo4j støtter dem.

Alle grafdatabasene som er diskutert her, har god horisontal skalerbarhet. Noen støtter også leseeksemplarer, global distribusjon og automatisk horisontal skjæring.

Amazon Neptune

Amazon Neptune er en fullstendig administrert transaksjons (OLTP) grafdatabasetjeneste med ACID-egenskaper og umiddelbar konsistens, som i sin kjerne har en spesialbygd grafikkdatabasemotor med høy ytelse som er optimalisert for lagring av milliarder relasjoner og spørring av grafen med millisekunder ventetid. Neptune støtter to av de mest populære språkene for åpen kildekode-graf, Apache TinkerPop Gremlin og W3C SPARQL.

Neptune-databaseklynger kan ha opptil 64 TB lagring i automatisk skalering i seks kopier av dataene dine over tre tilgjengelighetssoner, og mer hvis du aktiverer høy tilgjengelighet ved å bruke leseeksemplarer i tilleggssoner. Neptune oppdager automatisk databasekrasj, og starter på nytt - vanligvis i løpet av 30 sekunder eller mindre - uten å måtte utføre krasjgjenoppretting eller å gjenoppbygge databasecache, siden cachen er isolert fra databaseprosessene og kan overleve en omstart. Hvis en hel primær forekomst mislykkes, vil Neptune automatisk mislykkes til en av opptil 15 leseeksemplarer. Sikkerhetskopier streames kontinuerlig til Amazon S3.

Du kan skalere Neptune-klynger opp og ned enten ved å endre forekomster eller, for å unngå nedetid, ved å legge til en forekomst av ønsket størrelse og slå av den gamle forekomsten når en kopi av dataene har migrert og du har promotert den nye forekomsten til primær. Neptune VM-forekomststørrelser varierer fra db.r4.large (to vCPUer og 16 GiB RAM) til db.r4.8xlarge (32 vCPUer og 244 GiB RAM), noe som gir Neptune et 16x dynamisk område for skriving og et 256x dynamisk område for leser (teller de lese kopiene).

Les min anmeldelse av Amazon Neptune.

AnzoGraph

AnzoGraph er en massivt parallell OLAP-grafdatabase i minnet som fungerer med datakilder og gjør parallelle datalaster av RDF- og CSV-formater. AnzoGraph kan distribueres i sandkasser med en node, eller i klynger med så mange noder som nødvendig for produksjon. AnzoGraph har ACID-transaksjonsegenskaper.

AnzoGraph bruker W3C-standard RDF trippel- og quad-data og SPARQL 1.1-spørsmål. Den støtter merkede eiendomsdiagrammer som en del av RDF-butikken, i samsvar med de foreslåtte RDF * og SPARQL * -standardene, og den har utvidelser til SPARQL for å støtte grafalgoritmer, inferens, vindusaggregater, BI-funksjoner og navngitte visninger. Støtte for det Neo4j-kompatible OpenCypher-språket og Neo4j-protokollen Bolt er planlagt.

AnzoGraph har høy ytelse på grafutførelse og skalerbarhet til milliarder og til og med trillioner tredobler, samt raske parallelle datalaster som ikke krever at databasen frakobles. AnzoGraph-klynger kan distribueres på CentOS, Kubernetes og AWS. Google Cloud Platform og Azure-distribusjoner av AnzoGraph blir vanligvis behandlet som Kubernetes-distribusjoner. AnzoGraph har vist skalerbarhet til 40 noder i en syntetisk referanse.

Les min anmeldelse av AnzoGraph.

Neo4j

Neo4j er en skalerbar OLTP-grafdatabase med noen OLAP-muligheter. Neo4j var den opprinnelige grafdatabasen, først opprettet i 1999, og er fortsatt markedsleder.

Mens åpen kildekode Neo4j Community Edition er begrenset til en enkelt server, lar Neo4j Enterprise Edition deg legge til så mange noder i en klynge som du trenger for ytelsesformål.

Hver node i en Neo4j høy tilgjengelighet klyngen inneholder databasen og en klyngeadministrasjonskomponent, og klyngen kan nås via en belastningsutjevner. Hele grafen replikeres til hver forekomst av klyngen, og lesekapasiteten til hver HA-klynge øker lineært med antall serverforekomster. Neo4j kan begå titusenvis av skrivinger per sekund mens de opprettholder fullstendige ACID-transaksjoner.

I en Neo4j årsakssammenheng klynge, en kjerneklynge av lese- og skriveservere kombineres med en eller flere asynkront oppdaterte klynger av leseeksemplarer. Enhver applikasjon er garantert årsakssammenheng, noe som betyr at den garantert leser i det minste sine egne skriv, selv når maskinvare og nettverk mislykkes. De leste replikaene i en kausal klynge kan være geografisk distribuert for å forbedre spørringsytelsen for brukere i nærheten av replikaene.

Les min anmeldelse av Neo4j.

TigerGraph

TigerGraph er en sanntids, parallell, HTAP-grafdatabase tilgjengelig for distribusjon i skyen eller lokalt. TigerGraph støtter ACID-egenskaper, har innebygd datakomprimering, deler automatisk en graf i en klynge og hevder å være raskere enn konkurrentene. Den bruker en meldingsoverførende arkitektur som iboende er parallell på en måte som skaleres med størrelsen på dataene.

TigerGraph ble designet for å kunne utføre dypkoblingsanalyser samt sanntids online transaksjonsbehandling og datainnlasting med høyt volum. Med "deep link analytics" betyr TigerGraph å følge forhold fra toppunkt gjennom grafen for tre eller flere humle og analysere resultatene.

Mens flere språk med åpen kildekode er blitt adoptert, for eksempel Cypher, Gremlin og SPARQL, har TigerGraph et nytt spørringsspråk, GSQL. GSQL kombinerer SQL-lignende spørringssyntaks med Cypher-lignende grafnavigasjon, pluss prosessuell programmering og brukerdefinerte funksjoner. TigerGraph kan konvertere Cypher til GSQL for folk som flytter fra en Neo4j-database.

TigerGraph har et administrert skytilbud som for øyeblikket er i begrenset forhåndsvisning. TigerGraph har demonstrert en 6,7x hastighet når du kjører en lese-skrive-klynge med åtte maskiner, men har ikke sagt noe om lese-kopier eller geografisk distribusjon.

Les min anmeldelse av TigerGraph.

$config[zx-auto] not found$config[zx-overlay] not found