Pregled Amazon Neptuna: skalabilna baza podataka grafova za OLTP

Grafičke baze podataka, poput Neo4j, Apache Spark GraphX, DataStax Enterprise Graph, IBM Graph, JanusGraph, TigerGraph, AnzoGraph, grafički dio Azure Cosmos DB-a i predmet ovog pregleda, Amazon Neptune, dobre su za nekoliko vrsta aplikacija koje uključuju visoko povezani skupovi podataka, poput pružanja preporuka na temelju društvenih grafikona, obavljanja otkrivanja prijevara, pružanja preporuka za proizvode u stvarnom vremenu i otkrivanja upada u mrežne i informatičke operacije. To su područja u kojima tradicionalne relacijske baze podataka postaju neučinkovite i spore zbog potrebe za složenim SQL pridruživanjima koja rade na velikim skupovima podataka.

Neptun je potpuno upravljana usluga baze podataka grafova s ​​ACID svojstvima i trenutnom dosljednošću, koja u svojoj jezgri ima namjenski izgrađen mehanizam baze podataka grafova visokih performansi koji je optimiziran za pohranu milijardi odnosa i postavljanje upita grafu s milisekundnim kašnjenjem. Neptun podržava dva najpopularnija jezika upita za grafove otvorenog koda, Apache TinkerPop Gremlin i W3C SPARQL. Popularni Cypher Query Language (CQL) koji se koristi u Neo4ju započeo je s vlasništvom, ali je kasnije postao otvoren izvor.

Gremlin i SPARQL obraćaju se različitim vrstama baza podataka grafikona. Gremlin je, poput CQL, za baze podataka grafova svojstava; SPARQL je za trojke okvira za opis resursa (RDF), dizajniran za web. Gremlin je jezik za preslikavanje grafova; SPARQL je jezik upita s klauzulama SELECT i WHERE.

Implementacija Amazona Neptun omogućuje jezike Gremlin i SPARQL u jednoj instanci baze podataka, ali ne mogu vidjeti međusobne podatke. Razlog dopuštanja oboje je dopuštanje novim korisnicima da shvate što bolje odgovara njihovim potrebama.

Neptunova dokumentacija sadrži uzorke koji koriste verzije Gremlin-Groovy, Gremlin-Java i Gremlin-Python. Neptun omogućuje Gremlin u konzoli, HTTP REST pozive, Java, Python, .Net i Node.js programe. Na strani SPARQL-a, Neptune podržava Eclipse RDF4J konzolu i radni stol, HTTP REST pozive i Java programe.

Značajke i prednosti Amazon Neptuna

Kao potpuno upravljana baza podataka transakcijskih grafova kao usluga, Amazon Neptune ne nudi samo slobodu od potrebe za održavanjem hardvera i softvera baze podataka, već nudi i lako skaliranje, veću dostupnost od 99,99% i više razina sigurnosti. Klasteri baze podataka Neptun mogu imati do 64 TB memorije za automatsko skaliranje u šest replika vaših podataka u tri zone dostupnosti, a više ako omogućite visoku dostupnost korištenjem replika za čitanje u dodatnim zonama.

Sloj za pohranu podataka Neptune podržan je SSD-ovima, otpornim na kvarove i samoizlječivim. Kvarovi na disku popravljaju se u pozadini bez gubitka dostupnosti baze podataka. Neptun automatski otkriva padove baze podataka i ponovno se pokreće - obično za 30 sekundi ili manje - bez potrebe za obnavljanjem rušenja ili ponovnom izgradnjom predmemorije baze podataka, jer je predmemorija izolirana od procesa baze podataka i može preživjeti ponovno pokretanje. Ako cijela primarna instanca zakaže, Neptun će automatski prebaciti na jednu od do 15 replika za čitanje. Sigurnosne kopije kontinuirano se preusmjeravaju na S3.

Klastere Amazona Neptun možete skalirati prema gore ili dolje mijenjajući instance ili (da biste izbjegli zastoje) dodavanjem instance željene veličine i isključivanjem stare instance nakon što se kopija podataka migrira i promovirate novu instancu u primarni. Veličine instance Neptune VM kreću se od db.r4.large (dva vCPU-a i 16 GiB RAM-a) do db.r4.16xlarge (64 vCPU-a i 488 GiB RAM-a).

Amazon Neptune implementira sigurnost pokretanjem motora u mreži VPC (virtualni privatni oblak) i po želji šifriranjem podataka u stanju mirovanja pomoću AWS usluge upravljanja ključevima. Osim šifriranja temeljne pohrane, Neptun također šifrira sigurnosne kopije, snimke i replike. Neptun ispunjava uvjete za upotrebu u HIPAA aplikacijama. Neptun se ne zahtijevaju od vas stvoriti specifične indekse kako bi se postigla dobre performanse upita, što je promjena dobrodošla s balansiranje upit i performanse zapisivanja pažljivo tuning indeksa.

Amazon Neptun se ne podržava analitičke upita algoritama, kao što je PageRank, koji su sadržanu u nekim drugim grafikonu bazama podataka, kao što su Neo4j, TigerGraph i AnzoGraph. Neptun je zamišljen kao transakcijska (OLTP) baza podataka grafova s ​​malim kašnjenjem za ogromne skupove podataka, a ne analitička (OLAP) baza podataka i jednostavno nije optimizirana za analitičke slučajeve upotrebe ili upite koji uključuju više od tri skoka - a PageRank dodiruje svaku stavku u bazi podataka.

Amazon Neptun podržava agregate, tako da može napraviti malo analize, ali ne puno. Poput Neptuna, Neo4j je također izvorno trebao biti korišten za OLTP, ali je dodao analitičku knjižnicu upita 2017. Činjenica da su mogućnosti analize u Neptunu ograničene nije nužno razlog da se to isključi, kao baza podataka OLTP s niskim kašnjenjem s globalno distribuiranim replikama za čitanje i sposobnošću rukovanja 64 TB podataka nije za kihati.

Započnite s Amazon Neptunom

Klaster Amazon Neptune možete pokrenuti na dva načina: izravno s konzole Amazon Neptune ili pomoću predloška AWS CloudFormation za stvaranje Neptunovog stoga. Imajte na umu da predloženi CloudFormation predložak nije prikladan za izradu jer nije baš siguran - zamišljen je kao osnova za vodič.

Možete pokrenuti mali i dodati kapacitet - veće VM-ove ili više replika za čitanje - kad god to treba vašoj aplikaciji. Pohrana se automatski povećava, a vi plaćate samo za pohranu koju koristite.

Na sljedećim snimkama zaslona prikazujem dio životnog ciklusa Neptunove slike stvorene iz Neptunove konzole. Počinjem sa stvaranjem klastera.

Želite li visoku dostupnost svog klastera? Uopće nije teško.

U naprednim postavkama postoji više ploča. Srećom, većina zadanih vrijednosti trebala bi služiti vašim potrebama.

Napokon, vidjet ćete upozorenje prije nego što pritisnete gumb za pokretanje baze podataka. Ako stvarno želite vidjeti objašnjenje, kliknite desnu tipku miša na vezu i prikažite je na drugoj kartici. (Nadam se da će ova greška biti ispravljena.)

Jednom kada imate radni klaster, možete izvršiti nekoliko radnji na instancama.

Na razini klastera možete prikazati sažetak.

Na razini instance možete vidjeti grafikone izvedbe.

Učitavanje podataka u Amazon Neptun

Da biste učitali podatke u Amazon Neptune, prvo učitavate datoteke u Amazon S3 u jednom od ispravnih formata: CSV za Gremlin i trojke, četvorke, RDF / XML ili Turtle za RDF. Učitavač podržava gzip kompresiju pojedinačnih datoteka.

Morat ćete stvoriti IAM ulogu i S3 VPC krajnju točku kako biste Neptunu dali dopuštenje za pristup vašem segmentu S3, osim ako nisu već stvoreni, na primjer predloškom CloudFormation. Postoji API za učitavanje Neptuna koji se može pozvati preko REST krajnje točke (npr. Iz naredbe curl) koja može preuzeti IAM ulogu i skupno učitati podatke u vaš klaster. Na GitHub-u postoji i pretvarač za GraphML u CSV. Prolazak kroz učitavanje podataka odnosi se na bilo koji podržani format podataka.

Upitajte Amazon Neptun s Gremlinom

Možete koristiti Gremlin konzolu i REST krajnju točku da biste se povezali i pitali vaše instance Amazon Neptuna u Gremlinu s EC2 VM-a u istom VPC-u kao baza podataka. Korisnije za aplikacije možete postaviti upit Neptunu pomoću Gremlina u Java, Python, .Net i Node.js.

Postoji cijela knjiga o Gremlinu, Practical Gremlin: Apache TinkerPop Tutorial , Kelvina Lawrencea. Knjiga koristi TinkerGraph za svoju bazu podataka, ali ista Gremlinova sintaksa djeluje i za Neptun, uz male iznimke koje Amazon dokumentira.

Upiti Gremlin opisuju kako se kretati vrhovima i rubovima grafova. Primjer baze podataka o zračnim linijama o kojoj se govori u knjizi pronalazi sve načine za let iz Austina u Teksasu (aerodromski kod AUS) do Agre u Indiji (aerodromski kod AGR) s dva stajališta:

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

Ako želite isprobati primjere iz knjige o Amazonu Neptunu, najprije ćete trebati kopirati rubove i čvorove CSV datoteka u S3 kantu pomoću naredbe AWS CLI cp i podatke odatle učitati u Neptun.

Upitajte Amazon Neptun pomoću SPARQL-a

Možete koristiti RDF4J konzolu, RDF4J radni stol i REST krajnju točku za povezivanje i ispitivanje vaših instanci Amazona Neptuna u SPARQL-u s EC2 VM-a u istom VPC-u kao baza podataka. Što je korisnije za aplikacije, možete pitati Neptun koristeći SPARQL u Javi. Specifikacija SPARQL 1.1 jezika upita definira kako konstruirati upite. Ako na webu pretražite "sparql tutorial", pronaći ćete brojne besplatne pisane i video vodiče o toj temi. Svi bi trebali raditi s Neptunom nakon što učitate podatke.

SPARQL manje sliči funkcionalnom kodu nego što to čini Gremlin, a više SQL. Na primjer:

ODABERI? Knjiga? Tko

GDJE {? Book dc: creator? Who}

Izvedba i skaliranje Amazona Neptuna

Amazon Neptune dizajniran je za upite grafova s ​​malim kašnjenjem do tri skoka na ogromnim bazama podataka (do 64 TB). Podržava do 15 replika čitanja s malim kašnjenjem u tri zone dostupnosti za skaliranje kapaciteta čitanja i, prema Amazonu, može izvršiti više od 100 000 upita u grafikon u sekundi.

Njegove veličine primjeraka kreću se od dva do 64 vCPU-a s 15 GiB do 488 GiB RAM-a, što je približno dvostruko više u svakom koraku. Neptun može koristiti najviše 64 vCPU puta 16 puta za ukupno 1024 vCPU, a 488 GiB RAM puta 16 primjeraka za ukupno 7808 GiB RAM memorije. To je sveukupni mogući rast skaliranja od 512x, uzimajući u obzir i veličinu instance i broj pročitanih replika. Troškovi prilično točno prate skaliranje resursa.

Ako tražite bazu podataka transakcijskih grafova kao uslugu, Amazon Neptune je održiv izbor. S obzirom na to da Neptun podržava jezike upita Gremlin i SPARQL, trebali biste moći pronaći programere za izradu aplikacija protiv njega. S druge strane, Neptunov nedostatak podrške za Cypher može obeshrabriti postojeće korisnike Neo4j-a, a nedostatak podrške za OLAP i algoritme grafikona obeshrabrit će ljude koji žele jedinstvenu bazu podataka za transakcije i analize.

Širok raspon kapaciteta Amazona Neptun (do 16x veličine i 16 primjeraka), visoka maksimalna stopa transakcija (100.000 upita u sekundi) i cijene uz naplatu trebaju odgovarati većini poslovnih zahtjeva. Međutim, nedostatak lokalnih mogućnosti može spriječiti upotrebu u tvrtkama koje imaju politike protiv stavljanja svojih osjetljivih podataka u oblak i tvrtkama koje preferiraju nastanak i umanjenje kapitalnih troškova od tekućih operativnih troškova.

-

Cijena: 0,348 USD do 5,568 USD po Instance-Hour, ovisno o veličini instance, 0,10 USD po GB mjesečno za pohranu, 0,20 USD za milijun I / O zahtjeva, 0,023 USD po GB mjesečno za sigurnosno kopiranje, 0,12 USD po GB za izlazni prijenos podataka; primjenjuju se razne cjenovne pauze. 

Platforma: Amazon Web Services; podržava upite Apache TinkerPop Gremlin ili SPARQL; pristup putem AWS konzole, HTTP REST-a i Jave, kao i RDF4J Workbench (SPARQL) i Python, .Net i Node.js (Gremlin).