Programiranje

Kaj je baza podatkov grafov? Boljši način za shranjevanje povezanih podatkov

Ključ-vrednost, dokumentno usmerjen, družina stolpcev, graf, relacijski ... Zdi se, da imamo danes toliko vrst podatkovnih baz, kolikor je vrst podatkov. Čeprav je zaradi tega izbira baze podatkov težja, je izbiraprav zbirka podatkov lažje. Seveda to zahteva domačo nalogo. Spoznali ste svoje zbirke podatkov.

Ena najmanj razumljivih vrst podatkovnih zbirk je baza podatkov grafov. Zasnovan za delo z zelo medsebojno povezanimi podatki, lahko podatkovno bazo grafov opišemo kot bolj »relacijsko« kot relacijsko bazo podatkov. Grafične zbirke podatkov zasvetijo, kadar je njihov cilj zajeti zapletene odnose v obsežnih mrežah informacij.

Tukaj je podrobnejši pogled na to, kaj so podatkovne zbirke grafov, zakaj niso podobne drugim bazam podatkov in kakšne vrste podatkovnih težav so zgrajene za reševanje.

Grafična baza podatkov v primerjavi z relacijsko bazo podatkov

V tradicionalni relacijski bazi podatkov ali zbirki podatkov SQL so podatki razporejeni v tabele. Vsaka tabela beleži podatke v določeni obliki s fiksnim številom stolpcev, vsak stolpec s svojim podatkovnim tipom (celo število, čas / datum, besedilo proste oblike itd.).

Ta model najbolje deluje, kadar se ukvarjate predvsem s podatki iz katere koli tabele. Prav tako ne deluje preveč slabo, če zbirate podatke, shranjene v več tabelah. Toda to vedenje ima nekaj opaznih meja.

Razmislite o glasbeni zbirki z albumi, skupinami, založbami in izvajalci. Če želite prijaviti vse izvajalce, ki so bili predstavljeni to album avtorja to skupina izpuščena dne teh oznake - štiri različne tabele - morate ta razmerja izrecno opisati. Z relacijsko bazo podatkov to dosežete z novimi stolpci s podatki (za razmerja ena na ena ali ena na več) ali z novimi tabelami (na relacijah več na več).

To je praktično, če imate skromno število odnosov. Če imate opravka z milijoni ali celo milijardami odnosov - na primer prijatelji prijateljev prijateljev - se ta vprašanja ne prilegajo dobro.

Skratka, če jerazmerja med podatki, ne sami podatki, so vaša glavna skrb, potem je v redu drugačna vrsta baze podatkov - baza podatkov grafov.

Grafizirajte funkcije zbirke podatkov

Izraz "graf" izhaja iz uporabe besede v matematiki. Tam se uporablja za opis zbirke vozlišč (ali oglišča), od katerih vsaka vsebuje informacije (lastnosti) in z označenimi odnosi (ali robovi) med vozlišči.

Socialno omrežje je dober primer grafa. Osebe v omrežju bi bile vozlišča, atributi vsake osebe (kot so ime, starost itd.) Bi bile lastnosti, črte, ki povezujejo ljudi (z oznakami, kot so "prijatelj" ali "mati" ali " nadzornik «) bi nakazala njuno razmerje.

V običajni zbirki podatkov lahko obdelava poizvedb o odnosih traja dlje časa. To je zato, ker se odnosi izvajajo s tujimi ključi in se poizvedujejo z združevanjem tabel. Kot vam lahko pove vsak SQL DBA, je izvajanje združevanja drago, zlasti kadar morate razvrščati veliko število predmetov - ali, kar je še huje, kadar morate združiti več tabel, da izvedete vrste posrednih (npr. "Prijateljev prijatelj") poizvedb da se grafične baze odlikujejo pri.

Grafične zbirke podatkov delujejo tako, da shranijo datotekoodnosi skupaj s podatki. Ker so povezana vozlišča fizično povezana v zbirki podatkov, je dostop do teh odnosov takojšen kot dostop do samih podatkov. Z drugimi besedami, namesto da bi izračunali razmerje, kot morajo to narediti relacijske zbirke podatkov, grafične baze podatkov preprosto preberejo razmerje iz pomnilnika. Zadovoljujoča vprašanja so preprosta stvar hoje ali "prečkanja" grafa.

Podatkovna baza grafov ne shranjuje le odnosov med predmeti na naravni način, s čimer hitro in enostavno poizveduje o odnosih, temveč vam omogoča, da v graf vključite različne vrste predmetov in različne vrste odnosov. Tako kot druge zbirke podatkov NoSQL, je tudi baza grafov brez shem. Tako se grafične zbirke podatkov glede zmogljivosti in prilagodljivosti bolj približujejo bazam dokumentov ali shrambam ključ-vrednost kot relacijske ali tabelo usmerjene baze podatkov.

Grafični primeri uporabe zbirke podatkov

Grafične zbirke podatkov najbolje delujejo, kadar so podatki, s katerimi delate, zelo povezani in jih je treba predstaviti tako povezuje ali se sklicuje na druge podatke, običajno s pomočjo odnosov mnogo do veliko.

Spet koristno je socialno omrežje. Grafične zbirke podatkov zmanjšujejo količino dela, ki je potrebno za izdelavo in prikaz podatkovnih pogledov, ki jih najdemo v družabnih omrežjih, kot so viri dejavnosti, ali ugotavljanje, ali neko osebo morda poznate zaradi bližine drugih prijateljev, ki jih imate v omrežju.

Druga aplikacija za podatkovne zbirke grafov je iskanje vzorcev povezave v grafičnih podatkih, ki bi jih bilo težko izzvati prek drugih predstavitev podatkov. Sistemi za odkrivanje goljufij uporabljajo podatkovne zbirke grafov, da razkrijejo odnose med entitetami, ki bi jih sicer težko opazili.

Podobno so grafične zbirke podatkov primerne za aplikacije, ki upravljajo razmerja ali soodvisnosti med entitetami. Pogosto boste našli grafične zbirke podatkov za priporočevalnimi mehanizmi, sistemi za upravljanje vsebine in sredstev, sistemi za upravljanje identitete in dostopa ter rešitve za skladnost s predpisi in upravljanje tveganj.

Grafizirajte poizvedbe v zbirki podatkov

Grafične baze podatkov - tako kot druge zbirke podatkov NoSQL - običajno uporabljajo lastno metodologijo poizvedb po meri namesto SQL.

Eden najpogosteje uporabljenih jezikov za poizvedbe grafov je Cypher, prvotno razvit za bazo podatkov Neo4j. Od konca leta 2015 je Cypher razvit kot ločen odprtokodni projekt, številni drugi ponudniki pa so ga sprejeli kot sistem poizvedb za svoje izdelke (npr. SAP HANA).

Tu je primer poizvedbe za Cypher, ki vrne rezultat iskanja vsem, ki so Scottovi prijatelji:

TEKMA (a: Oseba {ime: 'Scott'}) - [: PRIJATELJ] -> (b) VRNITEV b 

Simbol puščice (->) se uporablja v poizvedbah Cypher za predstavitev usmerjenega razmerja v grafu.

Še en pogost jezik za poizvedbe grafov, Gremlin, je bil zasnovan za ogrodje računalništva grafov Apache TinkerPop. Sintaksa Gremlin je podobna tisti, ki jo uporabljajo knjižnice dostopa do zbirke podatkov ORM nekaterih jezikov.

Tu je primer poizvedbe »prijatelji Scotta« v Gremlinu:

g.V (). ima (“ime”, “Scott”). ven (“friendof”) 

Številne podatkovne baze grafov podpirajo Gremlin s pomočjo knjižnice, bodisi vgrajene bodisi neodvisne.

Še en poizvedbeni jezik je SPARQL. Prvotno ga je razvil W3C za poizvedbo podatkov, shranjenih v obliki okvira za opis virov (RDF) za metapodatke. Z drugimi besedami, SPARQL ni bil zasnovan za iskanje v bazi podatkov grafov, vendar se lahko zanje uporablja Na splošno so bili Cypher in Gremlin sprejeti širše.

Poizvedbe SPARQL imajo nekatere elemente, ki spominjajo na SQL, in sicerIZBERI in KJE klavzule, preostala sintaksa pa se močno razlikuje. Ne mislite, da je SPARQL sploh povezan z SQL ali kar zadeva druge jezike poizvedb grafov.

Priljubljene podatkovne zbirke grafov

Ker podatkovne zbirke grafov služijo razmeroma nišni uporabi, jih ni skoraj toliko, kot je relacijskih baz podatkov. Dobra stran je, da je izjemne izdelke lažje prepoznati in razpravljati o njih.

Neo4j

Neo4j je zlahka najbolj zrela (11 let in štetje) in najbolj znana baza podatkov grafov za splošno uporabo. V nasprotju s prejšnjimi izdelki baz podatkov grafov ne uporablja vmesnika SQL. Neo4j je izvorna podatkovna baza grafov, ki je bila zasnovana od znotraj navzven, da podpira velike strukture grafov, kot pri poizvedbah, ki vrnejo na stotisoče relacij in več.

Neo4j je na voljo v brezplačni odprtokodni in plačljivi izdaji za podjetja, pri čemer slednja med drugimi funkcijami nima omejitev glede velikosti nabora podatkov. Neo4j lahko tudi preizkusite v spletu s pomočjo peskovnika, ki vključuje nekaj vzorčnih naborov podatkov za vadbo.

Za več podrobnosti glejte pregled Neo4j.

Microsoft Azure Cosmos DB

Baza podatkov v oblaku Azure Cosmos DB je ambiciozen projekt. Namenjen je posnemanju več vrst baz podatkov - običajnih tabel, usmerjenih v dokumente, družino stolpcev in grafov - vse skozi enotno, enotno storitev z doslednim naborom API-jev.

V ta namen je podatkovna baza grafov le eden od različnih načinov, v katerih lahko deluje Cosmos DB. Uporablja jezik poizvedb Gremlin in API za poizvedbe grafov ter kot drug vmesnik podpira konzolo Gremlin, ustvarjeno za Apache TinkerPop.

Druga pomembna prodajna točka Cosmosa DB je ta, da se indeksiranje, spreminjanje velikosti in geopodvajanje samodejno obdela v oblaku Azure, ne da bi se na vašem koncu zavrtelo. Zaenkrat še ni jasno, kako Microsoftova arhitektura vse v enem meri glede na zmogljivost merjenje izvornih podatkovnih baz grafov, vendar Cosmos DB zagotovo ponuja koristno kombinacijo prilagodljivosti in obsega.

Za več podrobnosti glejte pregled Azure Cosmos DB.

JanusGraph

JanusGraph je bil razdeljen iz projekta TitanDB in je zdaj pod nadzorom fundacije Linux. Uporablja katerega koli od številnih podprtih končnic - Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle BerkeleyDB - za shranjevanje podatkov grafov, podpira jezik poizvedb Gremlin (kot tudi druge elemente iz sklada Apache TinkerPop) in lahko tudi vključite iskanje po celotnem besedilu s projekti Apache Solr, Apache Lucene ali Elasticsearch.

IBM, eden od podpornikov projekta JanusGraph, na IBM Cloud ponuja gostujočo različico JanusGraph, imenovano Compose for JanusGraph. Tako kot Azure Cosmos DB, tudi Compose za JanusGraph ponuja samodejno skaliranje in visoko razpoložljivost, pri čemer cene temeljijo na porabi virov.

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