Amazon Neptune
Amazon Neptune
W pełni zarządzana baza grafowa AWS. Modeluj i przeszukuj relacje między danymi za pomocą property graph (Gremlin/openCypher) lub RDF (SPARQL) - od grafów wiedzy po wykrywanie oszustw.
Amazon Neptune to w pełni zarządzana baza grafowa w chmurze AWS, zaprojektowana do przechowywania miliardów relacji i odpytywania ich z milisekundowym opóźnieniem. W przeciwieństwie do relacyjnych baz danych, Neptune przechowuje dane jako węzły (nodes) i krawędzie (edges), co czyni go idealnym do modelowania złożonych sieci powiązań.
Neptune obsługuje dwa modele grafowe: property graph (zapytania w Gremlin lub openCypher) oraz RDF (zapytania w SPARQL). Dzięki Neptune Serverless nie musisz zarządzać pojemnością - baza skaluje się automatycznie do Twoich potrzeb.
Amazon Neptune może przechowywać i przeszukiwać miliardy krawędzi (relacji) z milisekundowym opóźnieniem. Nazwa serwisu nawiązuje do planety Neptun - tak jak planeta ma złożony układ księżyców, tak baza grafowa modeluje złożone sieci powiązań. Neptune jest używany m.in. przez serwisy społecznościowe do rekomendacji znajomych i przez instytucje finansowe do wykrywania oszustw w czasie rzeczywistym.
Zanim wybierzesz Neptune, upewnij się że Twój problem naprawdę wymaga bazy grafowej. Jeśli potrzebujesz przeszukiwać relacje o głębokości 3+ poziomów (np. "znajomi znajomych znajomych") - Neptune będzie znacznie szybszy niż SQL JOIN-y. Ale jeśli masz proste relacje 1:N, zwykły RDS wystarczy. Używaj Neptune Serverless na start - unikniesz przepłacania za nieużywaną pojemność.
Amazon Neptune to w pelni zarzadzana grafowa baza danych obslugujaca property graph (Apache TinkerPop/Gremlin, openCypher) i RDF (SPARQL). Neptune jest zoptymalizowany do przechowywania miliardow relacji i odpytywania grafow z latencja milisekund. Dane sa automatycznie replikowane 6x w 3 Availability Zones z ciaglym backupem do S3.
Tworzenie klastra Neptune
Klaster Neptune sklada sie z primary instance (read-write) i do 15 read replica w roznych AZ. Typy instancji: db.r5 (pamiec od 16 GiB do 768 GiB), db.r6g (Graviton2, do 20% lepsza wydajnosc za cene). Storage automatycznie skaluje sie do 128 TiB w przyrostach po 10 GiB. Dla srodowisk dev/test Neptune Serverless eliminuje zarzadzanie instancjami.
Wybor silnika zapytan
Neptune obsluguje 3 jezyki zapytan: Gremlin (traversal API dla property graph - imperatywny styl, swietny do path traversal), openCypher (deklaratywny SQL-podobny jezyk dla property graph - latwiejszy do nauki), SPARQL (dla grafow RDF/knowledge graphs). Mozesz uzywac wielu jezykow jednoczesnie na tym samym klastrze. Gremlin i openCypher dzialaja na tym samym modelu danych.
Ladowanie danych grafowych
Neptune Bulk Loader laduje dane z S3 w formatach CSV (dla property graph) lub N-Triples/N-Quads/Turtle (dla RDF). Bulk Loader dziala rownolegle i jest 10-100x szybszy niz pojedyncze operacje INSERT. Format CSV wymaga osobnych plikow dla wezlow (node ID, label, properties) i krawedzi (edge ID, source, target, label). Dla duzych zbiorow (miliardy krawedzi) ladowanie trwa minuty zamiast godzin.
Konfiguracja endpointow
Neptune udostepnia: cluster endpoint (read-write, zawsze wskazuje na primary), reader endpoint (load-balanced miedzy replikami), instance endpoints (bezposredni dostep do konkretnej instancji). Aplikacje zapisujace uzywaja cluster endpoint, czytajace - reader endpoint. Polaczenia przez WebSocket (Gremlin), HTTPS (SPARQL/openCypher) lub Bolt protocol (openCypher). IAM authentication lub VPC-only access.
Wykonywanie traversali grafowych
Gremlin traversal przechodzi po grafie krok po kroku: g.V().has("user","name","Jan").out("follows").out("follows").dedup() znajduje "friends of friends". openCypher: MATCH (u:user {name:"Jan"})-[:follows]->()-[:follows]->(fof) RETURN DISTINCT fof. Neptune optymalizuje traversale automatycznie - index-free adjacency zapewnia O(1) lookup sasiadow niezaleznie od rozmiaru grafu.
Backup i odtwarzanie
Neptune automatycznie wykonuje ciagly backup do S3 z retencja 1-35 dni. Mozesz przywrocic klaster do dowolnego punktu w czasie (point-in-time recovery) z dokladnoscia do sekundy. Reczne snapshoty nie maja limitu retencji. Klonowanie klastra (Neptune clone) tworzy kopie w minuty dzieki copy-on-write - idealne do testowania zapytan na danych produkcyjnych bez kopiowania storage.
Praktyczne wskazowki do modelowania grafow, optymalizacji zapytan i wykorzystania zaawansowanych funkcji Neptune w produkcji.
Property graph (Gremlin/openCypher) vs RDF (SPARQL)
Property graph to najlepszy wybor dla wiekszosci aplikacji: sieci spolecznosciowe, fraud detection, recommendation engines, identity graphs. Wezly i krawedzie maja etykiety i wlasciwosci. RDF/SPARQL wybierz dla knowledge graphs, danych semantycznych, integracji z ontologiami (OWL) i linked data. Jezeli nie masz istniejacego modelu RDF, zacznij od property graph z openCypher - jest najlatwiejszy do nauki.
PoczatkujacyBulk Loader dla poczatkowego ladowania
Nigdy nie laduj duzych zbiorow danych przez pojedyncze INSERT/addVertex - to 100x wolniejsze niz Bulk Loader. Przygotuj dane w S3 jako pliki CSV: vertices.csv (id, label, property:type) i edges.csv (id, from, to, label). Bulk Loader laduje rownolegle z wielu plikow. Dla 1 miliarda krawedzi na instancji r5.8xlarge ladowanie trwa ok. 30-45 minut. Uzyj parametru failOnError=FALSE dla tolerancji na bledy.
PoczatkujacyNeptune ML - sieci neuronowe na grafach
Neptune ML integruje sie z SageMaker do trenowania modeli Graph Neural Network (GNN) bezposrednio na danych w Neptune. Zastosowania: przewidywanie brakujacych krawedzi (link prediction), klasyfikacja wezlow, wykrywanie anomalii. Neptune ML eksportuje graf do S3, trenuje model w SageMaker i udostepnia predykcje jako zapytania Gremlin. Nie musisz byc ekspertem ML - pipeline jest zautomatyzowany.
ZaawansowanyNeptune Streams dla Change Data Capture
Neptune Streams rejestruje kazda zmiane w grafie (dodanie/modyfikacja/usuniecie wezlow i krawedzi) jako sekwencyjny log. Mozesz czytac stream przez REST API i reagowac na zmiany: synchronizacja z ElasticSearch (full-text search na grafie), aktualizacja cache, triggerowanie Lambda. Stream retencja to 7 dni. Uzyj Neptune Streams zamiast pollingu bazy - jest wydajniejszy i gwarantuje kolejnosc.
ZaawansowanyNeptune Serverless dla zmiennych workloadow
Neptune Serverless automatycznie skaluje capacity (w NCU - Neptune Capacity Units) od 1.0 do 128 NCU na podstawie obciazenia. Placisz za faktycznie zuzyty czas obliczen. Idealny dla: srodowisk dev/test, workloadow z pikami, nowych projektow gdzie nie znasz wymaganej wydajnosci. Ustaw minimum NCU na 2.5 dla produkcji (zapewnia szybki cold start). Dla stalego obciazenia provisioned jest 30-40% tanszy.
PoczatkujacyGlobal Database dla multi-region
Neptune Global Database replikuje klaster do maksymalnie 5 regionow AWS z latencja ponizej 1 sekundy. Region secondary obsluguje zapytania read-only, a w przypadku awarii regionu primary mozesz promowac secondary do primary w mniej niz 1 minute. Idealne dla globalnych aplikacji wymagajacych niskiej latencji odczytu grafu w wielu regionach (np. fraud detection, recommendation).
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon Neptune bezposrednio w konsoli AWS.
Do czego sluzy Amazon Neptune?
Grafy wiedzy (Knowledge Graphs)
Buduj powiązania między encjami - produktami, osobami, koncepcjami. Idealne do wyszukiwarek semantycznych i systemów rekomendacji.
Wykrywanie oszustw (Fraud Detection)
Analizuj relacje między transakcjami, kontami i urządzeniami w czasie rzeczywistym, aby wykrywać podejrzane wzorce i sieci oszustów.
Sieci społecznościowe
Modeluj relacje użytkowników - znajomości, obserwacje, interakcje. Szybko odpytuj grafy o wzajemne połączenia i rekomendacje.
Zarządzanie tożsamością i dostępem
Mapuj złożone hierarchie uprawnień, ról i zasobów. Szybko sprawdzaj kto ma dostęp do czego w dużych organizacjach.
Co musisz wiedziec?
Property Graph
Model grafowy, w którym węzły i krawędzie mają właściwości (pary klucz-wartość). Odpytywany przez Gremlin lub openCypher.
RDF (Resource Description Framework)
Model grafowy oparty na trójkach (subject-predicate-object). Odpytywany przez SPARQL. Używany w grafach wiedzy i Linked Data.
Neptune Serverless
Tryb, w którym baza automatycznie skaluje pojemność (NCU - Neptune Capacity Units) w górę i w dół. Płacisz tylko za zużyte zasoby.
Neptune ML
Integracja z machine learning - pozwala tworzyć predykcje grafowe (np. przewidywanie brakujących krawędzi) bez pisania kodu ML.
Neptune Analytics
Silnik analityczny do uruchamiania zapytań grafowych na dużych zbiorach danych bez potrzeby ładowania ich do bazy Neptune.
Read Replica
Kopia bazy tylko do odczytu. Możesz mieć do 15 replik w różnych AZ, co zwiększa dostępność i wydajność odczytów.
Architektura: Neptune jako grafowa baza danych
Typowa architektura Neptune z klastrem primary/replica, bulk loaderem z S3 i integracja z Neptune ML przez SageMaker. Aplikacja laczy sie przez endpointy cluster (zapis) i reader (odczyt).
Ile kosztuje Amazon Neptune?
On-Demand (instancje)
Płacisz za godzinę działania instancji Neptune. Cena zależy od typu instancji.
db.r5.large: ~$0.348/godz. (~$254/mies.) w eu-west-1
Neptune Serverless
Płacisz za Neptune Capacity Units (NCU) za godzinę. Skaluje się automatycznie od min do max NCU.
~$0.1098/NCU-godz. Min 1 NCU, max 128 NCU
Storage i I/O
Storage: opłata za GB/mies. I/O: opłata za milion żądań odczytu/zapisu.
Storage: ~$0.10/GB/mies., I/O: ~$0.20/milion żądań
Backup i eksport
Automatyczne backupy do 35 dni są bezpłatne. Dodatkowy storage backupów jest płatny.
Dodatkowy backup: ~$0.021/GB/mies.
Przyklady AWS CLI
Utwórz klaster Neptune
Tworzy nowy klaster bazy grafowej Neptune
aws neptune create-db-cluster \
--db-cluster-identifier moj-graf \
--engine neptune \
--engine-version 1.3.1.0 \
--serverless-v2-scaling-configuration MinCapacity=1,MaxCapacity=16
Dodaj instancję do klastra
Tworzy instancję (writer) w klastrze Neptune
aws neptune create-db-instance \
--db-instance-identifier moj-graf-writer \
--db-cluster-identifier moj-graf \
--db-instance-class db.serverless \
--engine neptune
Sprawdź status klastra
Wyświetla informacje o klastrach Neptune
aws neptune describe-db-clusters \
--query "DBClusters[].{ID:DBClusterIdentifier,Status:Status,Endpoint:Endpoint,Engine:EngineVersion}" \
--output table
Załaduj dane z S3
Importuje dane grafowe z pliku w S3 do Neptune (bulk loader)
curl -X POST https://moj-graf.cluster-abc123.eu-west-1.neptune.amazonaws.com:8182/loader \
-H "Content-Type: application/json" \
-d '{"source":"s3://moj-bucket/dane/","format":"csv","iamRoleArn":"arn:aws:iam::123456789012:role/NeptuneLoadRole","region":"eu-west-1"}'
Quiz: Amazon Neptune
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Które języki zapytań obsługuje Amazon Neptune?
2. Co to jest Neptune Serverless?
3. Do czego najlepiej nadaje się baza grafowa?
4. Ile replik do odczytu może mieć klaster Neptune?
Czesto uzywane razem z Amazon Neptune
Chcesz poznac Amazon Neptune w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon Neptune krok po kroku. Teoria + praktyka od zera.