Ohjelmointi

Amazon Neptune -katsaus: Skaalattava graafitietokanta OLTP: lle

Graafitietokannat, kuten Neo4j, Apache Spark GraphX, DataStax Enterprise Graph, IBM Graph, JanusGraph, TigerGraph, AnzoGraph, Azure Cosmos DB: n graafiosa ja tämän arvostelun aihe, Amazon Neptune, ovat hyviä monenlaisiin sovelluksiin, joihin liittyy hyvin yhdistetyt tietojoukot, kuten sosiaalisiin kaavioihin perustuvien suositusten tarjoaminen, petosten havaitseminen, reaaliaikaisten tuotesuositusten antaminen ja verkko- ja IT-operaatioiden havaitseminen. Näillä alueilla perinteiset relaatiotietokannat ovat yleensä tehottomia ja hitaita, koska tarvitaan monimutkaisia ​​SQL-liittymiä, jotka toimivat suurissa tietojoukoissa.

Neptune on täysin hallittu kaaviotietokantapalvelu, jolla on ACID-ominaisuudet ja välitön yhdenmukaisuus, ja jonka ytimessä on tarkoitukseen rakennettu, korkean suorituskyvyn kaaviotietokantamoottori, joka on optimoitu miljardien suhteiden tallentamiseen ja graafin kyselyyn millisekuntien viiveellä. Neptune tukee kahta suosituinta avoimen lähdekoodin kaaviokyselykieliä, Apache TinkerPop Gremlin ja W3C SPARQL. Neo4j: ssä käytetty suosittu Cypher Query Language (CQL) aloitti itsenäisen, mutta myöhemmin siitä tuli avoimen lähdekoodin.

Gremlin ja SPARQL osoittavat erilaisia ​​graafitietokantoja. Gremlin, kuten CQL, on ominaisuusgraafitietokantoihin; SPARQL on tarkoitettu resurssikuvakehyksen (RDF) kolmikoille, jotka on suunniteltu verkkoon. Gremlin on graafin läpi kulkeva kieli; SPARQL on kyselykieli, jossa on SELECT- ja WHERE-lausekkeet.

Amazon Neptune -toteutus sallii sekä Gremlin- ​​että SPARQL-kielet yhdessä tietokantaesimerkissä, mutta ne eivät näe toistensa tietoja. Syy sallia molemmat on antaa uusien käyttäjien selvittää, mikä toimii paremmin heidän tarpeisiinsa.

Neptunuksen dokumentaatiossa on näytteitä Gremlinin Gremlin-Groovy-, Gremlin-Java- ja Gremlin-Python-muunnoksista. Neptune sallii Gremlinin konsolissa, HTTP REST -puhelut, Java, Python, .Net ja Node.js. SPARQL-puolella Neptune tukee Eclipse RDF4J -konsolia ja työpöytää, HTTP REST -puheluja ja Java-ohjelmia.

Amazon Neptunuksen ominaisuudet ja edut

Amazon Neptune on täysin hallittu transaktiokaavio-tietokanta palveluna, eikä vain vapauta tarvetta ylläpitää tietokantalaitteistoja ja -ohjelmistoja, se tarjoaa myös helpon skaalauksen, yli 99,99%: n käytettävyyden ja useita suojaustasoja. Neptune-tietokantaryhmissä voi olla jopa 64 Tt automaattisen skaalauksen tallennustilaa kuudessa tietojesi kopiossa kolmella käytettävyysvyöhykkeellä, ja enemmän, jos otat käyttöön korkean käytettävyyden käyttämällä lukualueita muilla vyöhykkeillä.

Neptunuksen tietovarastokerros on SSD-levyjen tukema, vikasietoinen ja itsensä parantava. Levyviat korjataan taustalla menettämättä tietokannan saatavuutta. Neptune havaitsee tietokannan kaatumiset automaattisesti ja käynnistyy uudelleen - yleensä enintään 30 sekunnissa - ilman kaatumisen palauttamista tai tietokannan välimuistin uudelleenrakentamista, koska välimuisti on eristetty tietokantaprosesseista ja voi selviytyä uudelleenkäynnistyksestä. Jos koko ensisijainen esiintymä epäonnistuu, Neptune epäonnistuu automaattisesti yhdessä enintään 15 luetun kopion kanssa. Varmuuskopiot lähetetään jatkuvasti S3: een.

Voit skaalata Amazon Neptune -klustereita ylös tai alas joko muuttamalla esiintymiä tai (seisokkien välttämiseksi) lisäämällä halutun kokoinen esiintymä ja sammuttamalla vanha instanssi, kun kopio tiedoista on siirtynyt ja olet ylentänyt uutta ilmentymää ensisijainen. Neptune VM -instanssikoot vaihtelevat db.r4.large (kaksi vCPU: ta ja 16 GiB RAM-muistia) - db.r4.16xlarge (64 vCPU ja 488 GiB RAM).

Amazon Neptune toteuttaa tietoturvan ajamalla moottorin VPC (virtuaalinen yksityinen pilvi) -verkossa ja salaamalla valinnaisesti tiedot lepotilassa AWS-avaimenhallintapalvelun avulla. Neptune salaa taustalla olevan tallennustilan lisäksi myös varmuuskopiot, tilannekuvat ja kopiot. Neptunusta voidaan käyttää HIPAA-sovelluksissa. Neptunus tekee ei vaatii sinua luomaan erityisiä indeksejä hyvän kyselyn suorituskyvyn saavuttamiseksi, mikä on tervetullutta muutosta kyselyn ja kirjoitusominaisuuksien tasapainottamiseen säätämällä indeksit huolellisesti.

Amazon Neptune tekee ei tukee analyyttisiä kyselyalgoritmeja, kuten PageRank, jotka ovat esillä joissakin muissa kaaviotietokannoissa, kuten Neo4j, TigerGraph ja AnzoGraph. Neptunuksen on tarkoitus olla matalaviiveinen transaktiotietokanta (OLTP) valtaville tietojoukoille, ei analyyttinen (OLAP) tietokanta, eikä sitä yksinkertaisesti ole optimoitu analyyttisiin käyttötapauksiin tai kyselyihin, joissa on enemmän kuin kolme humalaa - ja PageRank koskettaa jokaista kohdetta tietokannassa.

Amazon Neptune tukee aggregaatteja, joten se voi tehdä a vähän analyysi, mutta ei paljon. Kuten Neptune, myös Neo4j oli alun perin tarkoitettu käytettäväksi OLTP: ssä, mutta lisäsi analyyttisen kyselykirjaston vuonna 2017. Se, että analyysiominaisuudet ovat rajoitetut Neptunuksessa, ei välttämättä ole syy sulkea sitä pois, koska matalaviiveinen OLTP-graafitietokanta maailmanlaajuisesti jaetuilla luetuilla kopioilla ja kyvyllä käsitellä 64 Tt dataa ei ole mitään aivastusta.

Aloita Amazon Neptunuksen käyttö

Voit käynnistää Amazon Neptune -klusterin kahdella tavalla: suoraan Amazon Neptune -konsolista tai luomalla Neptune-pino AWS CloudFormation -mallin avulla. Huomaa, että toimitettu CloudFormation-malli ei sovellu tuotantoon, koska se ei ole kovin turvallinen - se on tarkoitettu opetusohjelman perustaksi.

Voit aloittaa pienen määrän ja lisätä kapasiteettia - suurempia virtuaalikoneita tai enemmän luettuja kopioita - aina, kun sovelluksesi sitä tarvitsee. Tallennustila kasvaa automaattisesti, ja maksat vain käyttämästäsi tallennustilasta.

Seuraavissa kuvakaappauksissa näytän joitain Neptune-konsolista luodun Neptune-kuvan elinkaarta. Aloitan klusterin luomisesta.

Haluatko klusterisi korkean käytettävyyden? Se ei ole ollenkaan vaikeaa.

Lisäasetuksissa on useita paneeleja. Onneksi useimpien oletusten pitäisi palvella tarpeitasi.

Lopuksi näet varoituksen, ennen kuin painat painiketta käynnistääksesi tietokannan. Jos haluat todella nähdä selityksen, napsauta linkkiä hiiren kakkospainikkeella ja näytä se toisessa välilehdessä. (Toivon, että tämä virhe korjataan.)

Kun sinulla on toimiva klusteri, voit suorittaa useita toimintoja ilmentymiin.

Klusteritasolla voit tuoda yhteenvedon.

Ilmentymien tasolla näet suorituskykykaaviot.

Ladataan tietoja Amazon Neptune -ohjelmaan

Jos haluat ladata tietoja Amazon Neptune -ohjelmaan, lataat ensin tiedostot Amazon S3: een yhdessä oikeista muodoista: CSV Gremlinille ja kolminkertaiset, neloset, RDF / XML tai Turtle RDF: lle. Kuormaaja tukee yksittäisten tiedostojen gzip-pakkausta.

Sinun on luotava IAM-rooli ja S3 VPC-päätepiste, jotta Neptune saa luvan käyttää S3-ämpäriäsi, ellei niitä ole jo luotu, esimerkiksi CloudFormation-mallin avulla. REST-päätepisteen kautta voidaan kutsua Neptune loader -sovellusliittymä (esim. Käpristyskomennosta), joka voi ottaa IAM-roolin ja ladata joukkotiedot joukkoon. GitHubissa on myös muunnin GraphML: stä CSV: ksi. Tiedon lataamisen läpikäynti on mistä tahansa tuetusta datamuodosta.

Kysy Amazon Neptunusta Gremlinin kanssa

Voit muodostaa yhteyden Gremlinin Amazon Neptune -esiintymiin ja kysyä niitä Gremlin-konsolista ja REST-päätepisteestä EC2-virtuaalikoneelta samassa VPC: ssä kuin tietokanta. Hyödyllisempi sovelluksille, voit kysyä Neptunusta käyttämällä Java, Python, .Net ja Node.js Gremliniä.

Gremlinissä on koko kirja, Käytännön Gremlin: Apache TinkerPop -opetusohjelma, kirjoittanut Kelvin Lawrence. Kirja käyttää TinkerGraph-tietokantaa tietokantaansa, mutta sama Gremlin-syntakse toimii Neptunuksessa pieniä poikkeuksia lukuun ottamatta, jotka Amazon on dokumentoinut.

Gremlin-kyselyt kuvaavat kuinka navigoida kuvaajan pisteissä ja reunoissa. Esimerkki kirjassa käsitellystä lentoreittitietokannasta löytää kaikki mahdollisuudet lentää Texasin Austinista (lentokenttäkoodi AUS) Intiaan Agraan (lentokenttäkoodi AGR) kahdella pysäkillä:

g.V (). has (’code’, ’AUS’). toista (out ()). kertaa (3) .has (’code’, ’AGR’). path (). by (’code’)

Jos haluat kokeilla kirjan esimerkkejä Amazon Neptune -palvelusta, sinun on ensin kopioitava reunat ja solmut CSV-tiedostot S3-ämpäriin AWS CLI cp -komennolla ja ladattava tiedot sieltä Neptunukseen.

Kysy Amazon Neptune SPARQL: llä

Voit käyttää RDF4J-konsolia, RDF4J-työpöytää ja REST-päätepistettä muodostaaksesi yhteyden SPARQL: n Amazon Neptune -esiintymiin ja kyselemällä niitä tietokannan kanssa samassa VPC: ssä olevasta EC2 VM: stä. Hyödyllisempi sovelluksille, voit tehdä kyselyn Neptune-ohjelmasta Java-SPARQL: n avulla. SPARQL 1.1 Query Language -määrittely määrittelee kyselyjen rakentamisen. Jos haet verkosta "sparql-opetusohjelma", löydät useita ilmaisia ​​kirjallisia ja video-oppaita aiheesta. Kaikkien näiden pitäisi toimia Neptunuksen kanssa, kun olet ladannut tiedot.

SPARQL näyttää vähemmän kuin toiminnallinen koodi kuin Gremlin, ja enemmän kuin SQL. Esimerkiksi:

VALITSE? Kirja? Kuka

MISSÄ {? Kirja dc: luoja? Kuka}

Amazon Neptunuksen suorituskyky ja skaalaus

Amazon Neptune on suunniteltu matalan viiveen graafisille kyselyille, joissa on jopa kolme humalaa valtaviin (jopa 64 Tt) tietokantoihin. Se tukee jopa 15 matalaviiveistä lukukopiota kolmella saatavuusvyöhykkeellä lukukyvyn skaalaamiseksi ja voi Amazonin mukaan suorittaa yli 100000 kuvaajakyselyä sekunnissa.

Sen instanssikoot vaihtelevat kahdesta 64: een vCPU: ta 15 Gt: n ja 488 Gt: n RAM-muistin kanssa, kaksinkertaistamalla molemmat kussakin vaiheessa. Korkeintaan Neptune voi käyttää 64 vCPU: ta kertaa 16 instanssia yhteensä 1024 vCPU: ta varten ja 488 GiB RAM-muistia kertaa 16 instanssia yhteensä 7808 GiB RAM-muistia. Tämä on yleinen mahdollinen skaalauksen kasvu 512x ottaen huomioon sekä esiintymien koko että luettujen kopioiden lukumäärä. Kustannukset seuraavat resurssien skaalausta tarkalleen.

Jos etsit transaktiokaaviotietokantaa palveluna, Amazon Neptune on toteuttamiskelpoinen valinta. Koska Neptune tukee sekä Gremlin- ​​että SPARQL-kyselykieltä, sinun pitäisi pystyä etsimään kehittäjiä rakentamaan sovelluksia sitä vastaan. Toisaalta Neptunuksen puute Cypher-tuesta voi estää nykyisiä Neo4j-käyttäjiä, ja sen puute OLAP- ja kaavioalgoritmituesta rohkaisee ihmisiä, jotka haluavat yhden graafitietokannan tapahtumia ja analyyseja varten.

Amazon Neptunuksen laajan kapasiteettivalikoiman (jopa 16x kokoinen ja 16 esiintymää), korkean transaktioprosentin (100 000 kyselyä sekunnissa) ja maksullisen hinnoittelun tulisi vastata useimpia liiketoiminnan vaatimuksia. Paikallisten vaihtoehtojen puute voi kuitenkin estää sen käytön yrityksissä, joilla on käytäntö estää arkaluonteisten tietojensa sijoittaminen pilvipalveluun, ja yritykset, jotka haluavat tehdä pääomakustannuksia ja kirjoittaa ne alas juokseviin toimintakuluihin.

Kustannus: 0,348 dollaria - 5,568 dollaria instanssituntia kohti ilmentymän koosta riippuen, 0,10 dollaria / GB kuukaudessa tallennustilaa varten, 0,20 dollaria / miljoona I / O-pyyntöä, 0,023 dollaria / GB kuukaudessa varmuuskopiointia varten, 0,12 dollaria / GB lähtevää tiedonsiirtoa varten erilaisia ​​hinnanvaihtoja sovelletaan.

Alusta: Amazon-verkkopalvelut; tukee Apache TinkerPop Gremlin- ​​tai SPARQL-kyselyitä; pääsy AWS-konsolin, HTTP REST: n ja Java: n sekä RDF4J Workbench (SPARQL) ja Python, .Net ja Node.js (Gremlin) kautta.

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