Programmēšana

Kas ir grafu datu bāze? Labāks veids, kā saglabāt savienotos datus

Atslēgu vērtība, orientēta uz dokumentiem, kolonnu saime, diagramma, relāciju ... Šķiet, ka šodien mums ir tik daudz veidu datu bāzu, cik ir datu veidu. Lai gan tas var apgrūtināt datu bāzes izvēli, tas padara izvēlipa labi datu bāzi vieglāk. Protams, tas prasa mājasdarbu izpildi. Jūs esat iepazinies ar savām datu bāzēm.

Viens no vismazāk saprotamajiem datubāzu veidiem ir grafu datu bāze. Paredzēta darbam ar ļoti savstarpēji saistītiem datiem, diagrammu datu bāzi varētu raksturot kā “relāciju” vairāk nekā relāciju datu bāzi. Grafiku datubāzes spīd, kad mērķis ir sagūstīt sarežģītas attiecības plašajos informācijas tīklos.

Šeit ir tuvāk apskatīts, kas ir diagrammu datu bāzes, kāpēc tās atšķirībā no citām datubāzēm un kāda veida datu problēmas tās ir izveidotas, lai atrisinātu.

Grafiku datu bāze salīdzinājumā ar relāciju datu bāzi

Tradicionālā relāciju vai SQL datu bāzē dati tiek sakārtoti tabulās. Katrā tabulā dati tiek ierakstīti noteiktā formātā ar fiksētu kolonnu skaitu, katrā kolonnā ir savs datu tips (vesels skaitlis, laiks / datums, brīvformas teksts utt.).

Šis modelis vislabāk darbojas, ja jūs galvenokārt nodarbojaties ar datiem no jebkuras tabulas. Tas arī nedarbojas pārāk slikti, ja apkopojat datus, kas saglabāti vairākās tabulās. Bet šai uzvedībai ir dažas ievērojamas robežas.

Apsveriet mūzikas datu bāzi ar albumiem, grupām, etiķetēm un izpildītājiem. Ja vēlaties ziņot par visiem izpildītājiem, kas bija redzami šo albuma autors to grupa izlaista šie etiķetes - četras dažādas tabulas - jums skaidri jāapraksta šīs attiecības. Izmantojot relāciju datu bāzi, jūs to paveicat, izmantojot jaunas datu kolonnas (attiecībām viens pret vienu vai viens pret daudziem) vai jaunas tabulas (attiecībām no daudziem līdz daudziem).

Tas ir praktiski, ja vien jūs pārvaldāt nelielu skaitu attiecību. Ja jums ir darīšana ar miljoniem vai pat miljardiem attiecību, piemēram, ar draugu draugu draugiem, šie vaicājumi nav pietiekami labi.

Īsāk sakot, jaattiecības starp datiem, nevis paši dati ir jūsu galvenās rūpes, tad ir piemērota cita veida datu bāze - diagrammu datu bāze.

Grafiku datu bāzes funkcijas

Termins “grafiks” nāk no vārda izmantošanas matemātikā. Tur to izmanto, lai aprakstītu mezglu kolekciju (vai virsotnes), katrs satur informāciju (īpašības) un ar iezīmētām attiecībām (vai malas) starp mezgliem.

Sociālais tīkls ir labs grafika piemērs. Tīkla cilvēki būtu mezgli, katras personas atribūti (piemēram, vārds, vecums utt.) Būtu īpašības un līnijas, kas savieno cilvēkus (ar etiķetēm, piemēram, “draugs” vai “māte” vai “ vadītājs ”) norādītu viņu attiecības.

Parastā datu bāzē vaicājumu par attiecībām apstrāde var aizņemt ilgu laiku. Tas ir tāpēc, ka attiecības tiek ieviestas ar svešām atslēgām un tiek apšaubītas, savienojot tabulas. Kā var pateikt jebkura SQL DBA, pievienošanās ir dārga, it īpaši, ja jums ir jākārto liels objektu skaits vai, vēl ļaunāk, ja jums ir jāpievienojas vairākām tabulām, lai izpildītu netiešus (piemēram, “drauga draugs”) vaicājumus. ka grafu datubāzes izceļas ar.

Grafiku datu bāzes darbojas, glabājotattiecībām kopā ar datiem. Tā kā saistītie mezgli ir fiziski saistīti datu bāzē, piekļuve šīm attiecībām ir tikpat tūlītēja kā piekļuve pašiem datiem. Citiem vārdiem sakot, tā vietā, lai aprēķinātu attiecības, kā tas jādara relāciju datu bāzēm, grafiku datu bāzes vienkārši nolasa attiecības no krātuves. Jautājumu apmierināšana ir vienkārša pastaigas jeb “šķērsošanas” lieta.

Grafu datu bāze ne tikai glabā attiecības starp objektiem dzimtajā veidā, ātri un viegli veicot vaicājumus par attiecībām, bet ļauj grafikā iekļaut dažāda veida objektus un dažāda veida attiecības. Tāpat kā citas NoSQL datu bāzes, arī diagrammu datu bāzē nav shēmu. Tādējādi veiktspējas un elastības ziņā grafiku datubāzes ir tuvāk dokumentu datubāzēm vai galveno vērtību krātuvēm nekā relāciju vai tabulas orientētas datu bāzes.

Grafiku datu bāzes izmantošanas gadījumi

Diagrammu datu bāzes darbojas vislabāk, ja dati, ar kuriem strādājat, ir ļoti saistīti, un tos vajadzētu attēlot pēc to veida saista vai atsaucas uz citiem datiem, parasti izmantojot attiecības starp daudziem pret daudziem.

Atkal sociālais tīkls ir noderīgs piemērs. Grafiku datu bāzes samazina darba apjomu, kas nepieciešams, lai izveidotu un parādītu sociālajos tīklos atrastos datu skatus, piemēram, darbību plūsmas, vai noteiktu, vai jūs varētu zināt konkrētu personu, jo tā ir tuvu citiem draugiem, kas jums ir tīklā.

Cits grafiku datu bāzu pielietojums ir savienojumu modeļu atrašana diagrammu datos, kurus būtu grūti izgrozīt, izmantojot citus datu attēlojumus. Krāpšanas atklāšanas sistēmas izmanto grafiku datu bāzes, lai atklātu attiecības starp entītijām, kuras citādi varētu būt grūti pamanīt.

Līdzīgi grafu datu bāzes ir dabiski piemērotas lietojumprogrammām, kas pārvalda entītiju attiecības vai savstarpējo atkarību. Bieži vien jūs atradīsit diagrammu datubāzes aiz ieteikumu dzinējiem, satura un aktīvu pārvaldības sistēmām, identitātes un piekļuves pārvaldības sistēmām, kā arī normatīvo aktu atbilstības un riska pārvaldības risinājumiem.

Grafiku datu bāzes vaicājumi

Grafiku datu bāzēs, tāpat kā citās NoSQL datu bāzēs, parasti SQL vietā tiek izmantota viņu pašu pielāgotā vaicājumu metodika.

Viena bieži izmantota grafu vaicājumu valoda ir Cypher, kas sākotnēji tika izstrādāta Neo4j grafu datu bāzei. Kopš 2015. gada beigām Cypher ir izstrādāts kā atsevišķs atvērtā pirmkoda projekts, un daudzi citi pārdevēji to ir pieņēmuši kā vaicājumu sistēmu saviem produktiem (piemēram, SAP HANA).

Šis ir Cypher vaicājuma piemērs, kas atgriež meklēšanas rezultātu visiem, kas ir Skota draugi:

MATCH (a: Persona {name: ’Scott’}) - [: FRIENDOF] -> (b) ATGRIEZTIES b 

Bultiņas simbols (->) tiek izmantots Cypher vaicājumos, lai attēlotu virzītas attiecības diagrammā.

Apache TinkerPop grafiku skaitļošanas ietvaram tika izstrādāta vēl viena izplatīta grafu vaicājumu valoda Gremlin. Gremlin sintakse ir līdzīga tai, ko izmanto dažu valodu ORM datu bāzes piekļuves bibliotēkas.

Šeit ir piemērs vaicājumam “Skota draugi” Gremliņā:

g.V (). has (“vārds”, “Scott”). out (“friendof”) 

Daudzām grafu datu bāzēm ir atbalsts Gremlin, izmantojot iebūvētu vai trešo personu bibliotēku.

Vēl viena vaicājuma valoda ir SPARQL. Sākotnēji to izstrādāja W3C, lai pieprasītu datus, kas metadatiem saglabāti resursu apraksta ietvara (RDF) formātā. Citiem vārdiem sakot, SPARQL nebija izdomāts grafiku datu bāzes meklējumiem, bet tos var izmantot. Kopumā Cypher un Gremlin ir pieņemti plašāk.

SPARQL vaicājumos ir daži elementi, kas atgādina SQL, protiSELECT un KUR klauzulas, bet pārējā sintakse ir radikāli atšķirīga. Nedomājiet, ka SPARQL vispār ir saistīts ar SQL vai šajā gadījumā ar citām diagrammu vaicājumu valodām.

Populāras grafu datu bāzes

Tā kā grafu datubāzes kalpo samērā nišas izmantošanas gadījumam, to nav ne tik daudz, cik ir relāciju datu bāzes. Pozitīvi ir tas, ka izcilus produktus ir vieglāk identificēt un apspriest.

Neo4j

Neo4j ir viegli nobriedušākais (11 gadi un to skaits) un pazīstamākais no grafu datu bāzēm, kas paredzētas vispārējai lietošanai. Atšķirībā no iepriekšējiem diagrammu datu bāzes produktiem tajā netiek izmantota SQL aizmugure. Neo4j ir vietējā grafu datu bāze, kas tika izveidota no iekšpuses uz āru, lai atbalstītu lielas grafu struktūras, piemēram, vaicājumos, kas atgriež simtiem tūkstošu attiecību un vēl vairāk.

Neo4j ir pieejams gan bezmaksas atvērtā pirmkoda, gan par samaksu uzņēmuma izdevumos, turklāt pēdējiem nav ierobežojumu attiecībā uz datu kopas lielumu (starp citām funkcijām). Varat arī eksperimentēt ar Neo4j tiešsaistē, izmantojot tā Sandbox, kurā ietilpst daži datu kopu paraugi, ar kuriem praktizēt.

Plašāku informāciju skatiet Neo4j pārskatā.

Microsoft Azure Cosmos DB

Azure Cosmos DB mākoņu datu bāze ir vērienīgs projekts. Tas ir paredzēts, lai atdarinātu vairāku veidu datubāzes - parastās tabulas, orientētas uz dokumentiem, kolonnu saimi un diagrammas - izmantojot vienu, vienotu pakalpojumu ar konsekventu API kopu.

Šajā nolūkā diagrammu datu bāze ir tikai viens no dažādiem veidiem, kādos Cosmos DB var darboties. Tā izmanto Gremlin vaicājumu valodu un API grafika veida vaicājumiem un atbalsta Gremlin konsoli, kas izveidota Apache TinkerPop kā citu saskarni.

Vēl viens liels Cosmos DB pārdošanas punkts ir tas, ka indeksēšana, mērogošana un ģeoreplikācija tiek automātiski apstrādāti Azure mākonī, bez jūsu pogas grozīšanas. Pagaidām nav skaidrs, kā Microsoft all-in-one arhitektūra veiktspējas ziņā mēra līdz vietējām grafu datu bāzēm, taču Cosmos DB noteikti piedāvā noderīgu elastības un mēroga kombināciju.

Plašāku informāciju skatiet Azure Cosmos DB pārskatā.

JanusGraph

JanusGraph tika izveidots no TitanDB projekta, un tagad to pārvalda Linux Foundation. Tas izmanto jebkuru no atbalstītajiem aizmugurējiem galiem - Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle BerkeleyDB - diagrammu datu glabāšanai, atbalsta Gremlin vaicājumu valodu (kā arī citus Apache TinkerPop kaudzes elementus) un var arī iekļaut pilna teksta meklēšanu, izmantojot Apache Solr, Apache Lucene vai Elasticsearch projektus.

IBM, viens no JanusGraph projekta atbalstītājiem, piedāvā IBM mākonī mitinātu JanusGraph versiju ar nosaukumu Compose for JanusGraph. Tāpat kā Azure Cosmos DB, arī Compose for JanusGraph nodrošina automātisko mērogošanu un augstu pieejamību, cenu noteikšana balstās uz resursu izmantošanu.

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