Što je baza podataka grafova? Bolji način za pohranu povezanih podataka

Ključ-vrijednost, orijentiran na dokumente, obitelj stupaca, graf, relacijski ... Čini se da danas imamo onoliko vrsta baza podataka koliko vrsta podataka. Iako ovo može otežati odabir baze podataka, olakšava odabir  prave baze podataka. Naravno, za to je potrebno raditi domaću zadaću. Morate upoznati svoje baze podataka. 

Jedna od najmanje razumljivih vrsta baza podataka je baza podataka grafova. Dizajnirana za rad s visoko povezanim podacima, baza podataka grafova može se opisati kao više „relacijska“ od relacijske baze podataka. Grafičke baze podataka sjaje kada je cilj zabilježiti složene odnose u golemim mrežama informacija. 

Evo detaljnijeg pogleda na to što su baze podataka grafova, zašto se razlikuju od drugih baza podataka i kakve probleme s podacima grade za rješavanje.

Grafikon baze podataka u odnosu na relacijsku bazu podataka

U tradicionalnoj relacijskoj ili SQL bazi podataka podaci su organizirani u tablice. Svaka tablica bilježi podatke u određenom formatu s fiksnim brojem stupaca, svaki stupac sa svojim tipom podataka (cijeli broj, vrijeme / datum, tekst slobodnog oblika itd.).

Ovaj model najbolje funkcionira kada se uglavnom bavite podacima iz bilo koje tablice. Također ne radi previše loše kada agregirate podatke pohranjene u više tablica. Ali to ponašanje ima neke značajne granice.

Razmislite o glazbenoj bazi podataka s albumima, bendovima, izdavačkim kućama i izvođačima. Ako želite prijaviti sve izvođače koji su sadržanu na ovom albumu tog benda objavljen na ovim naljepnice-četiri stola-morate eksplicitno opisuju te odnose. Pomoću relacijske baze podataka to postižete putem novih stupaca podataka (za relacije jedan-na-jedan ili jedan-prema-mnogo) ili novih tablica (za odnose mnogo prema mnogo).

To je praktično sve dok vodite skroman broj veza. Ako imate posla s milijunima ili čak milijardama veza - na primjer, prijateljima prijatelja prijatelja - ti se upiti ne mijenjaju dobro.

Ukratko, ako  su vam glavna briga odnosi između podataka , a ne sami podaci, tada je u redu drugačija vrsta baze podataka - baza podataka grafikona.

Grafički prikaz baze podataka

Pojam "graf" potječe od upotrebe riječi u matematici. Tamo se koristi za opisivanje kolekcije čvorova (ili vrhova ), od kojih svaki sadrži informacije ( svojstva ) i s označenim odnosima (ili rubovima ) između čvorova.

Društvena mreža dobar je primjer grafa. Ljudi u mreži bili bi čvorovi, atributi svake osobe (kao što su ime, dob i tako dalje) bila bi svojstva, a linije koje povezuju ljude (s oznakama kao što su "prijatelj" ili "majka" ili " nadzornik ”) ukazivali bi na njihov odnos. 

U uobičajenoj bazi podataka obrada upita o vezama može potrajati. To je zato što se odnosi provode s inozemnim ključevima i postavljaju upite spajanjem tablica. Kao što vam svaki SQL DBA može reći, izvođenje pridruživanja je skupo, posebno kada morate sortirati velik broj objekata - ili, još gore, kada morate pridružiti više tablica da biste izvršili vrste neizravnih (npr. "Prijatelja prijatelja") upita da se grafičke baze podataka ističu u. 

Grafičke baze podataka rade spremanjem  odnosa zajedno s podacima. Budući da su povezani čvorovi fizički povezani u bazi podataka, pristup tim odnosima jednako je brz kao i pristup samim podacima. Drugim riječima, umjesto izračunavanja odnosa kao što to moraju činiti relacijske baze podataka, grafičke baze podataka jednostavno očitavaju odnos iz pohrane. Zadovoljavanje upita jednostavno je pitanje hodanja ili "kretanja" grafom.  

Baza podataka grafova ne samo da pohranjuje odnose između objekata na izvorni način, čineći upite o odnosima brzim i lakim, već vam omogućuje da u grafikon uključite različite vrste objekata i različite vrste odnosa. Kao i ostale NoSQL baze podataka, i baza podataka grafova ne sadrži sheme. Prema tome, u smislu izvedbe i fleksibilnosti, grafičke baze podataka bliže su bazama podataka dokumenata ili pohranama ključ / vrijednost nego one relacijske ili tablično orijentirane baze podataka.

Grafikovati slučajeve upotrebe baze podataka

Grafičke baze podataka najbolje rade kada su podaci s kojima radite jako povezani i trebali bi biti predstavljeni načinom na koji povezuju ili upućuju na druge podatke , obično putem odnosa mnogo-prema-mnogim.

Ponovno je korisna socijalna mreža. Grafičke baze podataka smanjuju količinu posla potrebnog za konstrukciju i prikaz prikaza podataka koji se nalaze na društvenim mrežama, poput feedova aktivnosti ili utvrđivanja poznajete li određenu osobu ili ne zbog blizine drugih prijatelja koje imate u mreži.

Druga aplikacija za baze podataka grafova je pronalaženje obrazaca povezivanja u podacima grafa koje bi bilo teško izbaciti putem drugih prikaza podataka. Sustavi za otkrivanje prijevara koriste baze podataka grafikona kako bi razotkrili odnose između entiteta koje bi inače bilo teško primijetiti. 

Slično tome, baze podataka grafikona prirodno su pogodne za aplikacije koje upravljaju odnosima ili međuovisnostima između entiteta. Baze podataka grafikona često ćete pronaći iza mehanizama za preporuke, sustava upravljanja sadržajem i imovinom, sustava za upravljanje identitetom i pristupom te regulatornih propisa i rješenja za upravljanje rizicima. 

Grafikujte upite baze podataka

Grafičke baze podataka - poput ostalih NoSQL baza podataka - obično koriste vlastitu prilagođenu metodologiju upita umjesto SQL-a.

Jedan od često korištenih jezika upita za grafikone je Cypher, izvorno razvijen za bazu podataka grafova Neo4j. Od kraja 2015. Cypher je razvijen kao zaseban projekt otvorenog koda, a brojni su ga dobavljači prihvatili kao sustav upita za svoje proizvode (npr. SAP HANA).

Evo primjera Cypher upita koji vraća rezultat pretraživanja svima koji su Scottovi prijatelji:

UTAKMICA (a: Osoba {ime: 'Scott'}) - [: PRIJATELJ] -> (b) POVRATAK b 

Simbol strelice ( ->) koristi se u upitima Cypher za predstavljanje usmjerenog odnosa na grafikonu.

Još jedan uobičajeni jezik upita za grafove, Gremlin, osmišljen je za Apache TinkerPop okvir za računanje grafova. Sintaksa Gremlin slična je onoj koju koriste biblioteke za pristup ORM bazama podataka nekih jezika.

Evo primjera upita za "prijatelje Scotta" u Gremlinu:

gV (). has (“name”, “Scott”). out (“friendof”) 

Mnoge baze podataka grafikona imaju podršku za Gremlin putem biblioteke, bilo ugrađene ili treće strane.

Još jedan jezik upita je SPARQL. Izvorno ga je razvio W3C za traženje podataka pohranjenih u formatu Okvira opisa resursa (RDF) za metapodatke. Drugim riječima, SPARQL nije osmišljen za pretraživanja baze podataka grafikona, ali se može koristiti za njih. U cjelini, Cypher i Gremlin su šire prihvaćeni.

SPARQL upiti imaju neke elemente koji podsjećaju na SQL, naime  SELECTi WHEREklauzule, ali ostatak sintakse je radikalno različit. Nemojte uopće smatrati SPARQL-om povezanim sa SQL-om ili, pak, s drugim jezicima za upite grafikona.

Popularne baze podataka grafova

Budući da baze podataka s grafikonima poslužuju relativno nišu, nema ih približno toliko koliko ima relacijskih baza podataka. Dobra mu je strana što to istaknute proizvode čini lakšim za prepoznavanje i raspravu.

Neo4j

Neo4j je lako najzrelija (11 godina i računajući) i najpoznatija od baza podataka grafova za opću upotrebu. Za razliku od prethodnih proizvoda baze podataka grafova, on ne koristi SQL pozadinu. Neo4j je izvorna baza podataka grafova koja je dizajnirana iznutra prema van kako bi podržavala velike strukture grafova, kao u upitima koji vraćaju stotine tisuća odnosa i više.

Neo4j dolazi u besplatnim izdanjima za otvoreni izvor i za one koji se plaćaju, a potonji nemaju ograničenja u veličini skupa podataka (između ostalih značajki). Također možete eksperimentirati s Neo4j online putem njegovog Sandbox-a, koji uključuje nekoliko uzoraka skupova podataka za vježbanje.

Za više detalja pogledajte pregled Neo4j.

Microsoft Azure Cosmos DB

Baza podataka u oblaku Azure Cosmos DB ambiciozan je projekt. Namijenjen je oponašanju više vrsta baza podataka - konvencionalnih tablica, orijentiranih na dokumente, obitelji stupaca i grafikona - sve kroz jednu, objedinjenu uslugu s dosljednim skupom API-ja.

U tu svrhu baza podataka grafova samo je jedan od različitih načina na koje Cosmos DB može raditi. Koristi jezik upita Gremlin i API za upite tipa grafa, a podržava Gremlin konzolu stvorenu za Apache TinkerPop kao drugo sučelje.

Još jedna velika prodajna točka Cosmosa DB-a je ta što se indeksiranje, skaliranje i geo-replikacija automatski obrađuju u Azureovom oblaku, bez ikakvog prevrtanja gumba na vašem kraju. Još nije jasno kako se Microsoftova sve-u-jedna arhitektura mjeri s matičnim bazama podataka grafova u smislu izvedbe, ali Cosmos DB zasigurno nudi korisnu kombinaciju fleksibilnosti i razmjera.

Pogledajte pregled Azure Cosmos DB za više detalja.

JanusGraph

JanusGraph je rastavljen iz projekta TitanDB, a sada je pod upravom Linux Foundation. Koristi bilo koji od niza podržanih pozadina - Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle BerkeleyDB - za pohranu podataka grafikona, podržava jezik upita Gremlin (kao i ostale elemente iz Apache TinkerPop stoga), a može i uključiti pretraživanje cijelog teksta putem projekata Apache Solr, Apache Lucene ili Elasticsearch.

IBM, jedan od podržavatelja projekta JanusGraph, nudi hostiranu verziju JanusGraph-a na IBM Cloudu, nazvanu Compose for JanusGraph. Kao i Azure Cosmos DB, Compose za JanusGraph nudi automatsko skaliranje i visoku dostupnost, uz cijene temeljene na korištenju resursa.