Programovanie

Čo je to databáza grafov? Lepší spôsob ukladania pripojených údajov

Kľúč – hodnota, orientované na dokumenty, rodina stĺpcov, graf, relačné ... Dnes sa zdá, že máme toľko druhov databáz, koľko druhov údajov je. Aj keď to môže výber databázy sťažiť, bude to jednoduchšiesprávny databázy jednoduchšie. To si samozrejme vyžaduje robiť domáce úlohy. Poznali ste svoje databázy.

Jedným z najmenej pochopených typov databáz je databáza grafov. Databáza grafov, ktorá je navrhnutá na prácu s vysoko prepojenými údajmi, môže byť označená ako viac „relačná“ ako relačná databáza. Databázy grafov svietia, keď je cieľom zachytiť zložité vzťahy v rozsiahlych sieťach informácií.

Tu je bližší pohľad na to, čo sú databázy grafov, prečo sú na rozdiel od iných databáz a aké problémy s údajmi sú postavené na riešenie.

Databáza grafov vs. relačná databáza

V tradičnej relačnej databáze alebo databáze SQL sú údaje usporiadané do tabuliek. Každá tabuľka zaznamenáva údaje v konkrétnom formáte s pevným počtom stĺpcov, každý stĺpec má vlastný dátový typ (celé číslo, čas / dátum, voľný text atď.).

Tento model funguje najlepšie, keď pracujete hlavne s údajmi z ktorejkoľvek tabuľky. Rovnako to nefunguje príliš zle, keď agregujete údaje uložené vo viacerých tabuľkách. Ale toto správanie má niektoré pozoruhodné limity.

Zvážte hudobnú databázu s albumami, kapelami, vydavateľstvami a interpretmi. Ak chcete nahlásiť všetkých účinkujúcich, ktorí boli uvedení na toto album od že skupina vydala dňa títo štítky - štyri rôzne tabuľky - musíte tieto vzťahy výslovne opísať. V prípade relačnej databázy to dosiahnete pomocou nových údajových stĺpcov (pre vzťahy jeden na jedného alebo jeden na viac) alebo nových tabuliek (pre vzťahy medzi mnohými).

Je to praktické, pokiaľ riadite skromný počet vzťahov. Ak máte do činenia s miliónmi alebo dokonca miliardami vzťahov - napríklad s priateľmi priateľov -, tieto dotazy nemajú mierku.

Stručne povedané, akvzťahy medzi údajmi, nie samotné údaje, sú vašou hlavnou starosťou, potom je v poriadku iný typ databázy - databáza grafov.

Funkcie databázy grafov

Termín „graf“ pochádza z použitia slova v matematike. Tam sa používa na popísanie súboru uzlov (alebo vrcholy), z ktorých každá obsahuje informácie (vlastnosti) a s označenými vzťahmi (alebo hrany) medzi uzlami.

Sociálna sieť je dobrým príkladom grafu. Ľudia v sieti by boli uzly, atribúty každej osoby (napríklad meno, vek atď.) By boli vlastnosti a riadky spájajúce ľudí (s menami ako „priateľ“ alebo „matka“ alebo „ nadriadený “) by naznačoval ich vzťah.

V konvenčnej databáze môže spracovanie dotazov na vzťahy trvať dlho. Je to tak preto, lebo vzťahy sú implementované s cudzími kľúčmi a dopytované spojením tabuliek. Ako vám môže povedať akýkoľvek SQL DBA, vykonávanie spojení je drahé, najmä keď musíte triediť veľké množstvo objektov - alebo, čo je ešte horšie, keď musíte spojiť viac tabuliek, aby ste mohli vykonávať druhy nepriamych dotazov (napr. „Priateľ priateľa“) že databázy grafov vynikajú.

Databázy grafov fungujú uložením súboruvzťahy spolu s údajmi. Pretože súvisiace uzly sú fyzicky spojené v databáze, prístup k týmto vzťahom je rovnako okamžitý ako prístup k samotným údajom. Inými slovami, namiesto výpočtu vzťahu ako to musia robiť relačné databázy, databázy grafov jednoducho čítajú vzťah z úložiska. Uspokojenie otázok je jednoduchá záležitosť chôdze alebo „prechodu“ po grafe.

Databáza grafov nielenže ukladá vzťahy medzi objektmi natívnym spôsobom, takže dotazy na vzťahy sú rýchle a ľahké, ale umožňuje vám zahrnúť do grafu rôzne druhy objektov a rôzne druhy vzťahov. Rovnako ako iné databázy NoSQL, aj databáza grafov je bez schémy. Pokiaľ ide o výkon a flexibilitu, databázy grafov sa tak približujú databázam dokumentov alebo obchodom kľúč - hodnota ako relačné alebo tabuľkovo orientované databázy.

Príklady použitia databázy grafov

Databázy grafov fungujú najlepšie, keď sú dáta, s ktorými pracujete, vysoko prepojené a mali by byť reprezentované tým, ako to fungujú odkazuje alebo odkazuje na iné údaje, zvyčajne prostredníctvom vzťahov medzi mnohými.

Užitočným príkladom je opäť sociálna sieť. Databázy grafov znižujú množstvo práce potrebnej na zostavenie a zobrazenie dátových pohľadov nájdených v sociálnych sieťach, ako sú informačné kanály aktivít, alebo určovanie, či by ste danú osobu mohli poznať alebo nie kvôli jej blízkosti k iným priateľom, ktorých máte v sieti.

Ďalšou aplikáciou pre databázy grafov je hľadanie vzorov spojenia v dátach grafov, ktoré by bolo ťažké odhaliť pomocou iných dátových reprezentácií. Systémy na zisťovanie podvodov používajú databázy grafov na objasnenie vzťahov medzi entitami, ktoré by si inak mohli len ťažko všimnúť.

Podobne sú databázy grafov prirodzeným riešením pre aplikácie, ktoré riadia vzťahy alebo vzájomné závislosti medzi entitami. Za databázami odporúčaní, systémami na správu obsahu a majetku, systémami na správu identít a prístupu a riešeniami na zaistenie súladu s predpismi a na riadenie rizík často nájdete databázy grafov.

Grafové databázové dotazy

Databázy grafov - rovnako ako iné databázy NoSQL - zvyčajne namiesto SQL používajú svoju vlastnú metodiku dotazov.

Jedným z bežne používaných jazykov na dopytovanie grafov je Cypher, ktorý bol pôvodne vyvinutý pre databázu grafov Neo4j. Od konca roku 2015 bol program Cypher vyvinutý ako samostatný projekt s otvoreným zdrojovým kódom a mnoho ďalších dodávateľov ho prijalo ako dotazovací systém pre svoje produkty (napr. SAP HANA).

Tu je príklad dotazu Cypher, ktorý vráti výsledok vyhľadávania pre všetkých, ktorí sú Scottovými priateľmi:

ZÁPAS (a: Osoba {meno: ‘Scott’}) - [: FRIENDOF] -> (b) NÁVRAT b 

Symbol šípky (->) sa používa v dotazoch Cypher na vyjadrenie smerovaného vzťahu v grafe.

Pre grafický výpočtový rámec Apache TinkerPop bol navrhnutý ďalší bežný dopytovací jazyk pre grafy, Gremlin. Gremlinova syntax je podobná syntaxe, ktorú používajú knižnice pre prístup k databáze ORM v niektorých jazykoch.

Tu je príklad dotazu „priatelia Scotta“ v Gremline:

g.V (). has („name“, „Scott“). out („friendof“) 

Mnoho databáz grafov podporuje Gremlin prostredníctvom zabudovanej knižnice alebo knižnice tretích strán.

Ďalším dotazovacím jazykom je SPARQL. Pôvodne ho vyvinula organizácia W3C na zisťovanie údajov uložených vo formáte RDF (Resource Description Framework) pre metadáta. Inými slovami, SPARQL nebol vymyslený na vyhľadávanie v databázach grafov, ale dá sa na ne použiť. Celkovo boli Cypher a Gremlin prijatí širšie.

Dotazy SPARQL majú niektoré prvky pripomínajúce SQL, konkrétneVYBERTE a KDE klauzuly, ale zvyšok syntaxe je radikálne odlišný. Nemyslite si, že by SPARQL vôbec súvisel s SQL alebo s inými jazykmi pre dopytovanie grafov.

Populárne databázy grafov

Pretože databázy grafov slúžia na relatívne obmedzené prípady použitia, nie je ich zďaleka toľko, koľko je relačných databáz. Pozitívne je, že to uľahčuje identifikáciu a diskusiu o vynikajúcich produktoch.

Neo4j

Neo4j je ľahko najvyvinutejší (počíta sa 11 rokov) a najznámejšia z databáz grafov na všeobecné použitie. Na rozdiel od predchádzajúcich produktov grafickej databázy nepoužíva back-end SQL. Neo4j je natívna databáza grafov, ktorá bola vyvinutá zvnútra von na podporu veľkých štruktúr grafov, ako napríklad v dotazoch, ktoré vracajú státisíce vzťahov a ďalšie.

Neo4j sa dodáva v bezplatných podnikových vydaniach s otvoreným zdrojovým kódom aj v platených verziách, pričom druhé vydanie nemá žiadne obmedzenia týkajúce sa veľkosti množiny údajov (okrem iných funkcií). Môžete tiež experimentovať s Neo4j online prostredníctvom jeho karantény, ktorá obsahuje niekoľko vzorových súborov údajov, s ktorými môžete cvičiť.

Ďalšie informácie nájdete v recenzii Neo4j.

Microsoft Azure Cosmos DB

Cloudová databáza Azure Cosmos DB je ambiciózny projekt. Je určený na emuláciu viacerých druhov databáz - konvenčných tabuliek, dokumentov, skupín stĺpcov a grafov - a to všetko prostredníctvom jedinej jednotnej služby s konzistentnou sadou rozhraní API.

Za týmto účelom je databáza grafov iba jedným z rôznych režimov, v ktorých môže Cosmos DB pracovať. Používa dotazovací jazyk Gremlin a API pre dotazy typu grafu a podporuje konzolu Gremlin vytvorenú pre Apache TinkerPop ako ďalšie rozhranie.

Ďalším veľkým predajným miestom produktu Cosmos DB je to, že indexovanie, zmena mierky a geografická replikácia sa v cloudu Azure riešia automaticky, bez toho, aby ste na konci niečo robili. Zatiaľ nie je jasné, ako architektúra typu „všetko v jednom“ od spoločnosti Microsoft dosahuje výkon až do natívnych databáz grafov, ale Cosmos DB určite ponúka užitočnú kombináciu flexibility a rozsahu.

Ďalšie informácie nájdete v recenzii Azure Cosmos DB.

JanusGraph

JanusGraph bol rozdvojený z projektu TitanDB a teraz je pod správou Linux Foundation. Používa ktorýkoľvek z množstva podporovaných koncových zariadení - Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle BerkeleyDB - na ukladanie údajov grafov, podporuje dopytovací jazyk Gremlin (rovnako ako ďalšie prvky zo zásobníka Apache TinkerPop) a tiež začleniť fulltextové vyhľadávanie prostredníctvom projektov Apache Solr, Apache Lucene alebo Elasticsearch.

IBM, jeden z podporovateľov projektu JanusGraph, ponúka hosťovanú verziu JanusGraph na IBM Cloud s názvom Compose for JanusGraph. Rovnako ako Azure Cosmos DB, aj program Compose for JanusGraph poskytuje automatické škálovanie a vysokú dostupnosť s cenami založenými na využití prostriedkov.

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