Programovanie

Recenzia Amazon Neptune: Škálovateľná databáza grafov pre OLTP

Databázy grafov, ako sú Neo4j, Apache Spark GraphX, DataStax Enterprise Graph, IBM Graph, JanusGraph, TigerGraph, AnzoGraph, grafová časť Azure Cosmos DB a predmet tejto recenzie, Amazon Neptune, sú vhodné pre niekoľko druhov aplikácií, ktoré zahŕňajú vysoko prepojené súbory údajov, napríklad poskytovanie odporúčaní na základe sociálnych grafov, vykonávanie detekcie podvodov, poskytovanie odporúčaní produktov v reálnom čase a detekcia vpádov do sieťových a IT operácií. Jedná sa o oblasti, kde tradičné relačné databázy majú tendenciu byť neefektívne a pomalé z dôvodu potreby komplexných spojení SQL fungujúcich na veľkých množinách údajov.

Neptún je plne spravovaná služba databázy grafov s vlastnosťami ACID a okamžitou konzistenciou, ktorá má v jadre účelový, vysoko výkonný databázový stroj grafov, ktorý je optimalizovaný na ukladanie miliárd vzťahov a dopytovanie grafu s latenciou milisekúnd. Neptún podporuje dva z najpopulárnejších otvorených zdrojov dotazovacích jazykov pre grafy, Apache TinkerPop Gremlin a W3C SPARQL. Populárny jazyk Cypher Query Language (CQL) používaný v serveri Neo4j začínal proprietárne, ale neskôr sa stal otvoreným zdrojom.

Gremlin a SPARQL adresujú rôzne druhy databáz grafov. Gremlin, podobne ako CQL, slúži na databázy grafov vlastností; SPARQL je pre trojnásobný rámec popisu zdrojov (RDF) určený pre web. Gremlin je jazyk prechádzajúci grafom; SPARQL je dotazovací jazyk s klauzulami SELECT a WHERE.

Implementácia Amazon Neptune umožňuje jazyk Gremlin aj SPARQL v jednej inštancii databázy, navzájom si však navzájom nevidia údaje. Dôvodom umožnenia oboch je umožniť novým používateľom zistiť, ktorá z nich lepšie vyhovuje ich potrebám.

Dokumentácia Neptún obsahuje vzorky využívajúce Gremlin-Groovy, Gremlin-Java a Gremlin-Python varianty Gremlina. Neptún umožňuje Gremlinovi v konzole, volaniam HTTP REST, programom Java, Python, .Net a Node.js. Na strane SPARQL podporuje Neptune konzolu a pracovný stôl Eclipse RDF4J, volania HTTP REST a programy Java.

Vlastnosti a výhody Amazonu Neptún

Ako plne spravovaná databáza transakčných grafov ako služba ponúka Amazon Neptune nielen slobodu od nutnosti údržby hardvéru a softvéru databázy, ale aj ľahké škálovanie, dostupnosť viac ako 99,99% a rôzne úrovne zabezpečenia. Klastre databáz Neptún môžu mať až 64 TB úložiska s automatickým škálovaním v šiestich replikách vašich údajov v troch zónach dostupnosti a ďalšie, ak povolíte vysokú dostupnosť pomocou prečítaných replík v ďalších zónach.

Vrstva dátového úložiska Neptún je podporovaná jednotkami SSD, odolná voči chybám a samoopraviteľnou. Poruchy disku sa opravujú na pozadí bez straty dostupnosti databázy. Neptún automaticky detekuje zlyhania databázy a reštartuje sa - zvyčajne za 30 sekúnd alebo menej - bez potreby obnovy po zlyhaní alebo opätovného vytvorenia medzipamäte databázy, pretože vyrovnávacia pamäť je izolovaná od procesov databázy a môže prežiť reštart. Ak zlyhá celá primárna inštancia, Neptún automaticky zlyhá pri jednej z až 15 prečítaných replík. Zálohy sa nepretržite streamujú na S3.

Klastre Amazon Neptune môžete škálovať nahor a nadol buď úpravou inštancií, alebo (aby ste sa vyhli prestojom) pridaním inštancie požadovanej veľkosti a vypnutím starej inštancie po migrácii kópie údajov a povýšení novej inštancie na primárny. Veľkosti inštancií Neptune VM sa pohybujú od db.r4.large (dva vCPU a 16 GiB RAM) do db.r4.16xlarge (64 vCPUs a 488 GiB RAM).

Amazon Neptune implementuje zabezpečenie spustením motora v sieti VPC (virtuálny privátny cloud) a voliteľným šifrovaním údajov v pokoji pomocou služby AWS Key Management Service. Okrem šifrovania základného úložiska Neptune šifruje aj zálohy, snímky a repliky. Neptún je vhodný na použitie v aplikáciách HIPAA. Neptún áno nie vyžadujú, aby ste vytvorili konkrétne indexy na dosiahnutie dobrého výkonu dotazu, čo je vítaná zmena oproti vyváženiu výkonu dotazu a zápisu starostlivým vyladením indexov.

Amazonský Neptún áno nie podpora analytických dotazovacích algoritmov, ako je PageRank, ktoré sú obsiahnuté v niektorých ďalších databázach grafov, ako sú Neo4j, TigerGraph a AnzoGraph. Neptún má byť transakčnou databázou grafov s nízkou latenciou (OLTP) pre obrovské množiny dát, nie analytickou (OLAP) databázou a jednoducho nie je optimalizovaný pre prípady analytického použitia alebo dotazy týkajúce sa viac ako troch chmeľov - a PageRank sa dotkne každej položky v databáze.

Amazon Neptune podporuje agregáty, takže môže robiť a málo rozbor, ale nie vela. Rovnako ako Neptún, aj Neo4j mal byť pôvodne určený na použitie pre OLTP, ale v roku 2017 pridal knižnicu analytických dotazov. Skutočnosť, že analytické možnosti sú v Neptúne obmedzené, nemusí byť nevyhnutne dôvodom na jeho vylúčenie, pretože grafová databáza OLTP s nízkou latenciou s globálne distribuovanými replikami na čítanie a schopnosťou spracovať 64 TB dát nie je nič, nad čím by si kýchol.

Začnite používať Amazon Neptune

Klaster Amazon Neptune môžete spustiť dvoma spôsobmi: priamo z konzoly Amazon Neptune alebo pomocou šablóny AWS CloudFormation na vytvorenie zásobníka Neptún. Upozorňujeme, že poskytnutá šablóna CloudFormation nie je vhodná na produkciu, pretože nie je príliš bezpečná - slúži ako základ pre výukový program.

Môžete začať s malou a zvyšovať kapacitu - väčšie virtuálne počítače alebo viac čítaných replík - kedykoľvek to vaša aplikácia potrebuje. Úložisko rastie automaticky a platíte iba za úložisko, ktoré využijete.

Na nasledujúcich snímkach obrazovky zobrazujem niektoré zo životného cyklu obrazu Neptúna vytvoreného z konzoly Neptún. Začínam vytvorením klastra.

Chcete pre svoj klaster vysokú dostupnosť? Nie je to vôbec ťažké.

V rozšírenom nastavení je k dispozícii viac panelov. Väčšina predvolených nastavení by našťastie mala slúžiť vašim potrebám.

Na záver sa zobrazí varovanie pred stlačením tlačidla na spustenie databázy. Ak naozaj potrebujete vysvetlenie vidieť, kliknite pravým tlačidlom myši na odkaz a zobrazte ho na inej karte. (Dúfam, že táto chyba bude opravená.)

Keď už máte funkčný klaster, môžete v inštanciách vykonať niekoľko akcií.

Na úrovni klastra môžete vyvolať súhrn.

Na úrovni inštancie môžete vidieť grafy výkonnosti.

Načítavajú sa údaje do Amazonu Neptún

Ak chcete načítať údaje do služby Amazon Neptune, najskôr načítate súbory do služby Amazon S3 v jednom zo správnych formátov: CSV pre Gremlin a trojlôžkové, štvorlôžkové, RDF / XML alebo Turtle pre RDF. Zavádzač podporuje kompresiu jednotlivých súborov pomocou gzip.

Budete musieť vytvoriť rolu IAM a koncový bod S3 VPC, aby ste Neptúnovi povolili prístup k vášmu vedeniu S3, pokiaľ už neboli vytvorené, napríklad pomocou šablóny CloudFormation. K dispozícii je rozhranie API Neptún loader, ktoré je možné zavolať prostredníctvom koncového bodu REST (napr. Pomocou príkazu curl) a ktoré môže prevziať rolu IAM a hromadne načítať údaje do vášho klastra. Na GitHube existuje aj prevodník pre GraphML na CSV. Návod na načítanie údajov je pre akýkoľvek podporovaný formát údajov.

Dotaz na Amazon Neptún s Gremlinom

Konzolu Gremlin a koncový bod REST môžete použiť na pripojenie a zadanie dotazu na vaše inštancie Amazon Neptune v aplikácii Gremlin z virtuálneho počítača EC2 v rovnakom VPC ako databáza. Užitočnejšie pre aplikácie je dopyt Neptúna pomocou Gremlina v jazykoch Java, Python, .Net a Node.js.

O Gremlinovi je celá kniha, Praktický Gremlin: Výukový program Apache TinkerPop, autor: Kelvin Lawrence. Kniha pre svoju databázu používa program TinkerGraph, ale rovnaká Gremlinova syntax funguje aj pre Neptún, s malými výnimkami, ktoré dokumentuje Amazon.

Gremlinove dotazy popisujú, ako sa pohybovať po vrcholoch a hranách grafu. Príklad databázy leteckých liniek, o ktorej pojednáva kniha, obsahuje všetky spôsoby letu z texaského Austinu (kód letiska AUS) do indickej Agry (kód letiska AGR) s dvoma zastávkami:

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

Ak si chcete vyskúšať príklady v knihe o Amazone Neptún, najskôr musíte pomocou príkazu AWS CLI cp skopírovať súbory CSV hrán a uzlov do vedra S3 a odtiaľ načítať údaje do Neptúna.

Dotaz na Amazon Neptune so SPARQL

Na pripojenie a dopytovanie inštancií Amazon Neptune v SPARQL z EC2 VM v rovnakom VPC ako databáza môžete použiť konzolu RDF4J, pracovný stôl RDF4J a koncový bod REST. Užitočnejšie pre aplikácie je, že môžete dotazovať na Neptún pomocou SPARQL v Jave. Špecifikácia dotazovacieho jazyka SPARQL 1.1 definuje, ako sa majú dotazy vytvárať. Ak na webe vyhľadáte „sparql tutorial“, nájdete množstvo bezplatných písomných a videonávodov k tejto téme. Po načítaní údajov by všetky mali s Neptúnom fungovať.

SPARQL vyzerá menej ako funkčný kód ako Gremlin a skôr ako SQL. Napríklad:

VYBERTE? Kniha? Kto

KDE {? Book dc: creator? Who}

Výkon a zmena mierky Amazon Neptune

Amazon Neptune bol navrhnutý pre dotazy s nízkou latenciou až do troch chmeľov na obrovské (až 64 TB) databázy. Podporuje až 15 replík čítania s nízkou latenciou v troch zónach dostupnosti na zväčšenie kapacity čítania a podľa Amazonu dokáže vykonať viac ako 100 000 grafických otázok za sekundu.

Jeho inštančné veľkosti sa pohybujú od dvoch do 64 vCPU s 15 GiB až 488 GiB RAM, čo sa v každom kroku zhruba zdvojnásobí. Neptún môže používať najviac 64 vCPU krát 16 inštancií pre celkom 1024 vCPU a 488 GiB RAM krát 16 inštancií celkovo 7808 GiB RAM. To je celkový možný nárast mierky 512-násobku, a to pri zohľadnení veľkosti inštancie aj počtu prečítaných replík. Náklady do veľkej miery presne sledujú škálovanie zdrojov.

Ak hľadáte databázu transakčných grafov ako službu, Amazon Neptún je životaschopnou voľbou. Vzhľadom na to, že Neptún podporuje dotazovacie jazyky Gremlin aj SPARQL, mali by ste byť schopní nájsť vývojárov, ktorí by proti nim stavali aplikácie. Na druhej strane nedostatok podpory Neptúna od spoločnosti Cypher môže odradiť existujúcich používateľov systému Neo4j a nedostatok podpory OLAP a algoritmov grafov odradí ľudí, ktorí chcú pre transakcie a analýzu jedinú databázu grafov.

Široká škála kapacít služby Amazon Neptune (až 16-násobná veľkosť a 16 inštancií), vysoká maximálna rýchlosť transakcií (100 000 dotazov za sekundu) a priebežné ceny by mali zodpovedať väčšine obchodných požiadaviek. Jeho nedostatok lokálnych možností však môže zabrániť jeho použitiu v spoločnostiach s politikami proti umiestňovaniu ich citlivých údajov do cloudu a v spoločnostiach, ktoré uprednostňujú vznik a odpísanie kapitálových výdavkov pred bežnými prevádzkovými nákladmi.

Náklady: 0,348 až 5 568 dolárov za hodinu inštancie v závislosti od veľkosti inštancie, 0,10 USD za GB mesačne pre úložisko, 0,20 USD za milión I / O požiadaviek, 0,023 USD za GB mesačne pre záložné úložisko, 0,12 USD za GB pre prenos odchádzajúcich dát; platia rôzne cenové prestávky.

Plošina: Webové služby Amazon; podporuje dotazy Apache TinkerPop Gremlin alebo SPARQL; prístup cez konzolu AWS, HTTP REST a Java, ako aj RDF4J Workbench (SPARQL) a Python, .Net a Node.js (Gremlin).

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