Programavimas

„Amazon Neptune“ apžvalga: keičiama OLTP grafikų duomenų bazė

Grafikų duomenų bazės, tokios kaip „Neo4j“, „Apache Spark GraphX“, „DataStax Enterprise Graph“, „IBM Graph“, „JanusGraph“, „TigerGraph“, „AnzoGraph“, „Azure Cosmos DB“ grafiko dalis ir šios apžvalgos tema „Amazon Neptune“, tinka daugeliui programų, susijusių su labai susieti duomenų rinkiniai, pavyzdžiui, teikiant rekomendacijas remiantis socialiniais grafikais, atliekant sukčiavimą, teikiant produktų rekomendacijas realiuoju laiku ir nustatant tinklo ir IT operacijų įsibrovimus. Tai yra sritys, kuriose tradicinės reliacinės duomenų bazės tampa neefektyvios ir lėtos, nes reikia sudėtingų SQL jungčių, veikiančių dideliuose duomenų rinkiniuose.

„Neptūnas“ yra visiškai valdoma grafikų duomenų bazių paslauga, turinti ACID savybes ir betarpišką nuoseklumą, kurios esmė yra specialiai sukurtas, didelio našumo grafikų duomenų bazių variklis, kuris yra optimizuotas milijardų ryšių saugojimui ir grafiko užklausoms milisekundžių vėlavimu. „Neptūnas“ palaiko dvi populiariausias atvirojo kodo grafikų užklausų kalbas - „Apache TinkerPop Gremlin“ ir „W3C SPARQL“. „Neo4j“ naudojama populiarioji „Cypher Query Language“ (CQL) buvo pradėta naudoti nuosavybės teise, tačiau vėliau tapo atviro kodo.

„Gremlin“ ir „SPARQL“ adresai yra skirtingi grafikų duomenų bazių tipai. „Gremlin“, kaip ir CQL, yra nuosavybės diagramų duomenų bazėms; SPARQL skirtas išteklių aprašymo sistemos (RDF) triguboms versijoms, skirtoms žiniatinkliui. Gremlinas yra grafikų perėjimo kalba; SPARQL yra užklausos kalba, kurioje yra SELECT ir WHERE sąlygos.

„Amazon Neptune“ diegimas leidžia „Gremlin“ ir „SPARQL“ kalbas naudoti vienoje duomenų bazės instancijoje, tačiau jie nemato vienas kito duomenų. Priežastis leisti abiem yra leisti naujiems vartotojams išsiaiškinti, kas geriau tinka jų poreikiams.

„Neptūno“ dokumentacijoje yra pavyzdžiai, naudojant „Gremlin-Groovy“, „Gremlin-Java“ ir „Gremlin-Python“ variantus. „Neptūnas“ leidžia „Gremlin“ valdyti konsolėje, HTTP REST skambučiuose, „Java“, „Python“, .Net ir „Node.js“ programose. SPARQL pusėje „Neptūnas“ palaiko „Eclipse RDF4J“ konsolę ir darbastalį, HTTP REST skambučius ir „Java“ programas.

„Amazon Neptune“ funkcijos ir privalumai

Kaip visiškai valdoma sandorių grafinių duomenų bazė kaip paslauga, „Amazon Neptune“ suteikia ne tik laisvę tvarkyti duomenų bazės techninę ir programinę įrangą, bet ir lengvą mastelį, didesnį nei 99,99% prieinamumą ir kelis saugumo lygius. „Neptune“ duomenų bazių sankaupos gali turėti iki 64 TB automatinio dydžio keitimo saugyklą šešiose duomenų kopijose trijose prieinamumo zonose ir dar daugiau, jei įgalinsite aukštą prieinamumą naudodami skaitytų kopijas papildomose zonose.

„Neptūno“ duomenų saugojimo sluoksnis yra palaikomas SSD, atsparus gedimams ir savaime gydomas. Disko gedimai taisomi fone, neprarandant duomenų bazės prieinamumo. „Neptūnas“ automatiškai aptinka duomenų bazės gedimus ir iš naujo paleidžiamas - paprastai per 30 sekundžių ar mažiau - nereikalaujant atkurti avarijos ar atstatyti duomenų bazės talpyklos, nes talpykla yra izoliuota nuo duomenų bazės procesų ir gali išgyventi iš naujo. Jei nepavyksta viso pirminio egzemplioriaus, „Neptūnas“ automatiškai nepavyks perkelti į vieną iš 15 skaitytų kopijų. Atsarginės kopijos nuolat perduodamos į S3.

Galite keisti „Amazon Neptune“ grupes aukštyn ir žemyn, modifikuodami egzempliorius, arba (norėdami išvengti prastovų), pridėdami norimo dydžio egzempliorių ir išjungdami seną egzempliorių, kai duomenų kopija bus perkelta ir jūs paaukštinsite naują egzempliorių pirminis. „Neptune VM“ egzempliorių dydžiai svyruoja nuo db.r4.large (du vCPU ir 16 GiB RAM) iki db.r4.16xlarge (64 vCPU ir 488 GiB RAM).

„Amazon Neptune“ įgyvendina saugumą paleisdamas variklį VPC (virtualaus privataus debesies) tinkle ir pasirinktinai šifruodamas ramybės būsenos duomenis naudodamas AWS raktų valdymo paslaugą. Be pagrindinės saugyklos šifravimo, „Neptūnas“ taip pat šifruoja atsargines kopijas, momentines nuotraukas ir kopijas. „Neptūnas“ tinkamas naudoti HIPAA programose. Neptūnas daro ne reikalauti, kad sukurtumėte konkrečius indeksus, kad pasiektumėte gerą užklausos našumą, o tai yra sveikintinas pokytis lyginant užklausos ir rašymo našumą kruopščiai derinant indeksus.

„Amazon Neptune“ daro ne palaiko analitinius užklausų algoritmus, tokius kaip „PageRank“, kurie pateikiami kai kuriose kitose grafikų duomenų bazėse, tokiose kaip „Neo4j“, „TigerGraph“ ir „AnzoGraph“. „Neptūnas“ turėtų būti mažo delsos operacijų (OLTP) grafinių duomenų bazė, skirta didžiuliems duomenų rinkiniams, o ne analitinė (OLAP) duomenų bazė, ir tiesiog nėra optimizuota analizės naudojimo atvejams ar užklausoms, susijusioms su daugiau nei trim apyniais, o „PageRank“ paliečia kiekvieną elementą duomenų bazėje.

„Amazon Neptune“ palaiko agregatus, todėl gali tai padaryti mažai analizė, bet ne daug. Kaip ir „Neptūnas“, „Neo4j“ taip pat iš pradžių buvo skirtas naudoti OLTP, tačiau 2017 m. Jis pridėjo analitinių užklausų biblioteką. Tai, kad „Neptune“ analizės galimybės yra ribotos, nebūtinai yra priežastis to atmesti, nes mažos delsos OLTP grafikų duomenų bazė su visame pasaulyje platinamomis skaitytomis kopijomis ir galimybe tvarkyti 64 TB duomenų nėra ko čiaudėti.

Pradėkite naudoti „Amazon Neptune“

„Amazon Neptune“ grupę galite paleisti dviem būdais: tiesiai iš „Amazon Neptune“ konsolės arba naudodami „AWS CloudFormation“ šabloną, kad sukurtumėte „Neptune“ kaminą. Atminkite, kad pateiktas „CloudFormation“ šablonas nėra tinkamas gamybai, nes jis nėra labai saugus - jis skirtas kaip mokymo programos pagrindas.

Galite pradėti mažai ir pridėti talpos - didesnių VM ar daugiau skaitytų kopijų - visada, kai to reikia jūsų programai. Saugykla auga automatiškai, o jūs mokate tik už naudojamą saugyklą.

Toliau pateiktose ekrano kopijose parodau „Neptūno“ vaizdo, sukurto iš „Neptūno“ pulto, gyvavimo ciklą. Pradedu nuo klasterio sukūrimo.

Ar norite, kad jūsų klasteris būtų prieinamas? Tai visai nesunku.

Išplėstiniuose nustatymuose yra keli skydai. Laimei, dauguma nutylėjimų turėtų atitikti jūsų poreikius.

Galiausiai pamatysite įspėjimą prieš paspausdami mygtuką, kad paleistumėte duomenų bazę. Jei jums tikrai reikia pamatyti paaiškinimą, dešiniuoju pelės mygtuku spustelėkite nuorodą ir parodykite ją kitame skirtuke. (Tikiuosi, kad ši klaida bus ištaisyta.)

Turėdami veikiantį klasterį, egzemplioriuose galite atlikti kelis veiksmus.

Klasterio lygiu galite pateikti santrauką.

Egzemplioriaus lygyje galite pamatyti našumo diagramas.

Duomenų įkelimas į „Amazon Neptune“

Norėdami įkelti duomenis į „Amazon Neptune“, pirmiausia įkelkite failus į „Amazon S3“ vienu iš tinkamų formatų: CSV Gremlin ir trigubai, keturračiai, RDF / XML arba Turtle RDF. Krautuvas palaiko gzip pavienių failų glaudinimą.

Turėsite sukurti IAM vaidmenį ir S3 VPC galinį tašką, kad suteiktumėte „Neptune“ leidimą pasiekti jūsų S3 segmentą, nebent jie jau buvo sukurti, pavyzdžiui, naudojant „CloudFormation“ šabloną. Yra „Neptune“ krautuvo API, kurią galima iškviesti per REST galinį tašką (pvz., Iš „curl“ komandos), kuris gali prisiimti IAM vaidmenį ir masiniu būdu įkelti duomenis į jūsų grupę. Taip pat „GitHub“ yra konverteris, skirtas „GraphML“ į CSV. Duomenų įkėlimo apžvalga skirta bet kokiam palaikomam duomenų formatui.

Užklausa „Amazon Neptune“ su „Gremlin“

Galite naudoti „Gremlin“ konsolę ir REST galinį tašką, kad prisijungtumėte prie „Amazon Neptune“ egzempliorių Gremlin ir atliktumėte užklausą iš EC2 VM toje pačioje VPC kaip duomenų bazė. Naudingiau programoms galite pateikti užklausą „Neptune“ naudodami „Gremlin“, esančią „Java“, „Python“, .Net ir „Node.js“.

„Gremlin“ yra visa knyga, Praktinis „Gremlin“: „Apache TinkerPop“ pamoka, autorius Kelvinas Lawrence'as. Knygoje duomenų bazei naudojama „TinkerGraph“, tačiau ta pati „Gremlin“ sintaksė veikia ir „Neptūnui“ su nedidelėmis išimtimis, kurias dokumentuoja „Amazon“.

„Gremlin“ užklausose aprašoma, kaip naršyti grafiko viršūnes ir kraštus. Knygoje aptarto oro maršrutų duomenų bazės pavyzdyje rasti visi būdai skristi iš Ostino, Teksaso (oro uosto kodas AUS) į Agrą, Indiją (oro uosto kodas AGR) dviem sustojimais:

g.V (). has („kodas“, „AUS“). pakartokite (out ()). kartus (3). turi („kodas“, „AGR“). kelias (). pagal („kodas“)

Jei norite išbandyti „Amazon Neptune“ knygos pavyzdžius, pirmiausia turėsite nukopijuoti kraštus ir mazgus CSV failus į S3 kibirą naudodami komandą AWS CLI cp ir iš ten įkelti duomenis į „Neptune“.

Užklausa „Amazon Neptune“ su SPARQL

Norėdami prisijungti prie „Amazon Neptune“ egzempliorių SPARQL ir atlikti užklausą iš EC2 VM toje pačioje VPC kaip duomenų bazėje, galite naudoti „RDF4J“ konsolę, „RDF4J“ darbastalį ir „REST“ galinį tašką. Naudingiau programoms galite pateikti užklausą „Neptune“ naudodami „Java“ SPARQL. SPARQL 1.1 užklausų kalbos specifikacija apibrėžia, kaip kurti užklausas. Jei internete ieškosite „sparql pamoka“, rasite daugybę nemokamų rašytinių ir vaizdo įrašų pamokų šia tema. Visa tai turėtų veikti su „Neptune“, kai tik įkelsite duomenis.

SPARQL atrodo mažiau kaip funkcinis kodas nei Gremlinas, ir labiau kaip SQL. Pavyzdžiui:

PASIRINKITE? Knyga? Kas

KUR {? Knygos dc: kūrėjas? Kas}

„Amazon Neptune“ našumas ir mastelio keitimas

„Amazon Neptune“ buvo skirtas mažos vėlavimo grafikų užklausoms, kuriose buvo iki trijų apynių didžiulėse (iki 64 TB) duomenų bazėse. Jis palaiko iki 15 mažo delsos skaitymo kopijų trijose prieinamumo zonose, kad padidintų skaitymo pajėgumą ir, pasak „Amazon“, gali įvykdyti daugiau nei 100 000 grafiko užklausų per sekundę.

Jo egzempliorių dydžiai svyruoja nuo dviejų iki 64 vCPU su 15 GiB iki 488 GiB RAM, apytikriai padvigubindami abu žingsnius. Daugiausia „Neptūnas“ gali naudoti 64 vCPU, 16 kartų, iš viso 1024 vCPU, ir 488 GiB RAM kartus, 16 kartų, iš viso 7808 GiB RAM. Tai bendras galimas mastelio augimas 512 kartų, atsižvelgiant ir į egzempliorių dydį, ir į perskaitytų kopijų skaičių. Išlaidos tiksliai tiksliai nustato išteklių mastelį.

Jei ieškote sandorių grafikų duomenų bazės kaip paslaugos, „Amazon Neptune“ yra tinkamas pasirinkimas. Atsižvelgiant į tai, kad „Neptūnas“ palaiko tiek „Gremlin“, tiek „SPARQL“ užklausų kalbas, turėtumėte rasti kūrėjų, kurie galėtų kurti programas prieš ją. Kita vertus, tai, kad „Neptūnas“ neturi „Cypher“ palaikymo, gali atgrasyti esamus „Neo4j“ vartotojus, o OLAP ir grafų algoritmų palaikymo trūkumas atbaidys žmones, kurie nori vienos grafikų duomenų bazės operacijoms ir analizei.

Platus „Amazon Neptune“ pajėgumų asortimentas (iki 16 kartų didesnis ir 16 egzempliorių), aukšta maksimali operacijų norma (100 000 užklausų per sekundę) ir „pay-as-you-go“ kainodara turėtų atitikti daugumos verslo reikalavimus. Tačiau dėl to, kad trūksta vietinių galimybių, gali būti neleidžiama naudoti įmonėms, kurios vykdo politiką, neleidžiančios savo neskelbtinų duomenų įdėti į debesį, ir įmonėms, kurios pageidauja patirti ir nurašyti kapitalo išlaidas, o ne einamąsias veiklos išlaidas.

Kaina: USD 0,348–5,568 USD už egzempliorių valandą, priklausomai nuo egzemplioriaus dydžio, 0,10 USD už GB per mėnesį saugojimui, 0,20 USD už milijoną įvesties / išvesties užklausų, 0,023 USD už GB mėnesį per atsarginę saugyklą, 0,12 USD už GB už siunčiamus duomenis; taikomos įvairios kainų pertraukos.

Platforma: „Amazon Web Services“; palaiko „Apache TinkerPop Gremlin“ arba SPARQL užklausas; prieiga per AWS konsolę, HTTP REST ir „Java“, taip pat „RDF4J Workbench“ (SPARQL) ir „Python“, .Net bei Node.js („Gremlin“).