Programiranje

Pregled Amazon Neptune: razširljiva podatkovna baza grafov za OLTP

Grafične zbirke podatkov, kot so Neo4j, Apache Spark GraphX, DataStax Enterprise Graph, IBM Graph, JanusGraph, TigerGraph, AnzoGraph, grafični del Azure Cosmos DB, in predmet tega pregleda, Amazon Neptune, so primerne za več vrst aplikacij, ki vključujejo močno povezani nabori podatkov, na primer zagotavljanje priporočil na podlagi družbenih grafov, izvajanje odkrivanja goljufij, zagotavljanje priporočil izdelkov v realnem času in odkrivanje vdorov v omrežja in IT-operacije. To so področja, kjer tradicionalne relacijske zbirke podatkov postanejo neučinkovite in počasne zaradi potrebe po zapletenih povezavah SQL, ki delujejo na velikih naborih podatkov.

Neptun je popolnoma vodena storitev baze podatkov grafov z lastnostmi ACID in takojšnjo skladnostjo, katere jedro je namensko zgrajen, visoko zmogljiv mehanizem zbirke podatkov grafov, ki je optimiziran za shranjevanje milijard odnosov in poizvedovanje grafa z milisekundno zakasnitvijo. Neptun podpira dva najbolj priljubljena odprtokodna jezika za poizvedbe grafov, Apache TinkerPop Gremlin in W3C SPARQL. Priljubljeni jezik za poizvedbe Cypher (CQL), ki se uporablja v Neo4j, je bil lastniški, kasneje pa odprt.

Gremlin in SPARQL naslavljata različne vrste podatkovnih baz grafov. Gremlin je, tako kot CQL, namenjen bazam podatkov grafov lastnosti; SPARQL je namenjen trojkam Framework Description Framework (RDF), zasnovanim za splet. Gremlin je jezik za prehod grafov; SPARQL je poizvedbeni jezik s stavkoma SELECT in WHERE.

Izvedba Amazon Neptune omogoča jezike Gremlin in SPARQL v enem primeru baze podatkov, vendar si podatkov med seboj ne moreta ogledati. Razlog za dovolitev obeh je omogočiti novim uporabnikom, da ugotovijo, kaj najbolje ustreza njihovim potrebam.

Neptunova dokumentacija vsebuje vzorce z različicami Gremlin-Groovy, Gremlin-Java in Gremlin-Python. Neptun omogoča Gremlin v konzoli, klice HTTP REST, programe Java, Python, .Net in Node.js. Na strani SPARQL Neptune podpira konzolo in delovno mizo Eclipse RDF4J, klice HTTP REST in programe Java.

Značilnosti in prednosti Amazon Neptune

Amazon Neptune kot popolnoma vodena zbirka transakcijskih grafov kot storitev ponuja ne samo osvoboditev od potrebe po vzdrževanju strojne in programske opreme baze podatkov, temveč tudi enostavno skaliranje, več kot 99,99% razpoložljivosti in več ravni varnosti. Gruče baz podatkov Neptune imajo lahko do 64 TB pomnilnika s samodejnim spreminjanjem v šestih kopijah vaših podatkov v treh območjih razpoložljivosti in več, če omogočite visoko razpoložljivost z uporabo bralnih replik v dodatnih conah.

Plast za shranjevanje podatkov Neptune je podprta s SSD-ji, odpornimi na napake in samozdravljenimi. Napake diska se popravijo v ozadju brez izgube razpoložljivosti baze podatkov. Neptun samodejno zazna zrušitve baze podatkov in se znova zažene, običajno v 30 sekundah ali manj, ne da bi moral izvesti obnovo po zrušitvi ali obnoviti predpomnilnik baze podatkov, saj je predpomnilnik izoliran iz procesov baze podatkov in lahko preživi znova. Če celotni primarni primerek ne uspe, Neptun samodejno ne bo prešel v eno od do 15 bralnih kopij. Varnostne kopije se neprekinjeno pretakajo na S3.

Grozde Amazon Neptune lahko prilagodite gor ali dol tako, da spremenite primerke ali (da se izognete izpadom) tako, da dodate primerek želene velikosti in zaustavite stari primerek, ko se kopija podatkov preseli in ste nov primerek promovirali v primarni. Velikosti primerka Neptune VM se gibljejo od db.r4.large (dva vCPU in 16 GiB RAM-a) do db.r4.16xlarge (64 vCPU in 488 GiB RAM-a).

Amazon Neptune izvaja varnost tako, da poganja motor v omrežju VPC (virtualni zasebni oblak) in po želji šifrira podatke v mirovanju s pomočjo storitve za upravljanje ključev AWS. Poleg šifriranja osnovnega pomnilnika Neptune šifrira tudi varnostne kopije, posnetke in replike. Neptun je primeren za uporabo v aplikacijah HIPAA. Neptun to počne ne od vas zahtevajo, da ustvarite posebne indekse za doseganje dobre učinkovitosti poizvedbe, kar je dobrodošla sprememba od uravnoteženja poizvedbe in pisanja s skrbno uglasitvijo indeksov.

Amazon Neptun to počne ne podpirajo analitične algoritme poizvedb, kot je PageRank, ki so predstavljeni v nekaterih drugih podatkovnih bazah grafov, kot so Neo4j, TigerGraph in AnzoGraph. Neptun naj bi bil baza transakcijskih grafov z nizkimi zakasnitvami (OLTP) za velike nabore podatkov, ne analitična (OLAP) baza podatkov in preprosto ni optimiziran za analitične primere uporabe ali poizvedbe, ki vključujejo več kot tri preskoke - in PageRank se dotakne vsakega elementa v zbirki podatkov.

Amazon Neptun podpira agregate, zato lahko to stori malo analize, vendar ne veliko. Tako kot Neptun je bil tudi Neo4j prvotno namenjen uporabi za OLTP, vendar je leta 2017 dodal analitično knjižnico poizvedb. Dejstvo, da so možnosti analize v Neptunu omejene, ni nujno razlog za njegovo izključitev kot baza grafov OLTP z nizko zakasnitvijo z globalno distribuiranimi bralnimi replikami in zmožnostjo obdelave 64 TB podatkov ni česa.

Začnite z Amazon Neptunom

Grozd Amazon Neptune lahko zaženete na dva načina: neposredno iz konzole Amazon Neptune ali z uporabo predloge AWS CloudFormation za ustvarjanje sklada Neptun. Upoštevajte, da predložena predloga CloudFormation ni primerna za izdelavo, saj ni zelo varna - je namenjena kot osnova za vadnico.

Zaženete lahko majhne in dodate zmogljivosti - večje VM-je ali več bralnih replik - kadar koli to potrebuje vaša aplikacija. Shramba se samodejno poveča in plačate samo za shrambo, ki jo uporabljate.

Na naslednjih posnetkih zaslona prikazujem nekaj življenjskega cikla slike Neptuna, ustvarjene iz konzole Neptune. Začnem z ustvarjanjem grozda.

Ali želite visoko razpoložljivost za svoj grozd? Sploh ni težko.

V naprednih nastavitvah je več plošč. Na srečo bi večina privzetih vrednosti ustrezala vašim potrebam.

Končno boste videli opozorilo, preden pritisnete gumb za zagon baze podatkov. Če res želite videti razlago, z desno miškino tipko kliknite povezavo in jo prikažite v drugem zavihku. (Upam, da bo ta napaka odpravljena.)

Ko imate delujočo gručo, lahko na primerkih izvedete več dejanj.

Na ravni grozda lahko prikažete povzetek.

Na ravni primerka si lahko ogledate grafe uspešnosti.

Nalaganje podatkov v Amazon Neptun

Če želite podatke naložiti v Amazon Neptune, datoteke najprej naložite v Amazon S3 v enem od pravilnih formatov: CSV za Gremlin in trojke, štirikolesnike, RDF / XML ali Turtle za RDF. Nalagalnik podpira gzip stiskanje posameznih datotek.

Ustvariti morate vlogo IAM in končno točko S3 VPC, da Neptunu omogočite dostop do segmenta S3, razen če sta že bila ustvarjena, na primer s predlogo CloudFormation. Obstaja API za nalaganje Neptuna, ki ga je mogoče poklicati prek končne točke REST (npr. Iz ukaza curl), ki lahko prevzame vlogo IAM in množično naloži podatke v vašo gručo. Na GitHubu je tudi pretvornik za GraphML v CSV. Priročnik za nalaganje podatkov je za katero koli podprto obliko zapisa podatkov.

Poizvedite Amazon Neptun z Gremlinom

Konzolo Gremlin in končno točko REST lahko uporabite za povezavo in poizvedovanje o primerkih Amazon Neptune v Gremlinu iz V2 EC2 v istem VPC kot baza podatkov. Bolj koristno za aplikacije lahko poizvedujete po Neptunu z Gremlinom v Java, Python, .Net in Node.js.

Obstaja cela knjiga o Gremlinu, Praktični Gremlin: Vadnica za Apache TinkerPop, Kelvin Lawrence. Knjiga za svojo bazo uporablja TinkerGraph, vendar ista sintaksa Gremlin deluje tudi za Neptun z majhnimi izjemami, ki jih dokumentira Amazon.

Poizvedbe Gremlin opisujejo, kako se premikati po točkah in robovih grafov. Primer zbirke podatkov o letalskih poteh, ki je obravnavana v knjigi, vsebuje vse načine letenja iz Austina v Teksasu (letališka koda AUS) do Agre v Indiji (letališka koda AGR) z dvema postankoma:

g.V (). has ('code', 'AUS'). repeat (out ()). times (3) .has ('code', 'AGR'). path (). by ('code')

Če želite preizkusiti primere iz knjige o Amazon Neptunu, morate najprej z ukazom AWS CLI cp kopirati robove in vozlišča datotek CSV v vedro S3 in podatke od tam naložiti v Neptun.

Poizvedite Amazon Neptune s SPARQL

Konzolo RDF4J, delovno mizo RDF4J in končno točko REST lahko uporabite za povezavo in poizvedovanje o primerkih Amazon Neptune v SPARQL iz EC2 VM v istem VPC kot baza podatkov. Za aplikacije je bolj koristno, da lahko Neptune poizvedujete z uporabo SPARQL v Javi. Specifikacija jezika poizvedbe SPARQL 1.1 določa, kako sestaviti poizvedbe. Če v spletu iščete "vadnico sparql", boste na to temo našli veliko brezplačnih pisnih in video vadnic. Ko naložite podatke, bi morali vsi delovati z Neptunom.

SPARQL izgleda manj kot funkcionalna koda kot Gremlin in bolj kot SQL. Na primer:

IZBERI? Knjiga? Kdo

KJE {? Book dc: creator? Who}

Zmogljivost in skaliranje Amazona Neptuna

Amazon Neptune je bil zasnovan za poizvedbe grafov z nizko zakasnitvijo do treh skokov v ogromnih (do 64 TB) zbirkah podatkov. Podpira do 15 kopij branja z nizko zakasnitvijo v treh območjih razpoložljivosti za prilagoditev zmogljivosti branja in po Amazonovih besedah ​​lahko na sekundo izvede več kot 100.000 grafičnih poizvedb.

Njegove velikosti primerkov se gibljejo od dveh do 64 vCPU s 15 GiB do 488 GiB RAM-a, kar se približno podvoji na vsakem koraku. Neptun lahko uporabi največ 64 vCPU krat 16 primerov za skupno 1024 vCPU in 488 GiB RAM krat 16 primerov za skupno 7808 GiB RAM pomnilnika. To je na splošno mogoča 5-krat večja skala glede na velikost primerka in število prebranih kopij. Stroški precej natančno sledijo skaliranju virov.

Če iščete podatkovno bazo transakcijskih grafov kot storitev, je Amazon Neptune izvedljiva izbira. Glede na to, da Neptun podpira poizvedbena jezika Gremlin in SPARQL, bi lahko našli razvijalce za izdelavo aplikacij. Po drugi strani pa lahko Neptunovo pomanjkanje podpore Cypher odvrne obstoječe uporabnike Neo4j, pomanjkanje podpore OLAP in algoritma grafa pa bo odvrnilo ljudi, ki želijo enotno podatkovno bazo grafov za transakcije in analize.

Širok nabor zmogljivosti Amazon Neptune (do 16-kratne velikosti in 16 primerkov), visoka najvišja hitrost transakcij (100.000 poizvedb na sekundo) in cene po zaslugi morajo ustrezati večini poslovnih zahtev. Vendar pomanjkanje lokalnih možnosti morda ne bo omogočilo uporabe v podjetjih s politikami, ki preprečujejo dajanje njihovih občutljivih podatkov v oblak, in podjetjih, ki raje nastanejo in odpišejo kapitalske stroške kot tekoče operativne stroške.

Stroški: 0,348 do 5,568 USD na uro primera, odvisno od velikosti primerka, 0,10 USD na GB na mesec za shranjevanje, 0,20 USD na milijon vhodno / izhodnih zahtev, 0,023 USD na GB na mesec za varnostno shranjevanje, 0,12 USD na GB za odhodni prenos podatkov; veljajo različni cenovni prelomi.

Platforma: Amazonove spletne storitve; podpira poizvedbe Apache TinkerPop Gremlin ali SPARQL; dostop prek konzole AWS, HTTP REST in Java, pa tudi RDF4J Workbench (SPARQL) in Python, .Net in Node.js (Gremlin).

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