July 31, 2025

Neptune

📘 ¿Qué es Amazon Neptune?

Amazon Neptune es un servicio de base de datos de grafos completamente gestionado y optimizado para almacenar y consultar relaciones altamente conectadas. Permite modelar datos como nodos (vértices) y relaciones (aristas).

  • 🧠 Soporta grafos propiedad y de RDF (triple store).

  • 🔁 Diseñado para consultas con baja latencia en relaciones múltiples.

  • ⚙️ Compatible con Gremlin, openCypher, y SPARQL.

  • 🔐 Cifrado, backup, alta disponibilidad integrados.


🧩 ¿Qué tipo de grafos soporta?

Modelo de grafoLenguajeIdeal para…
Property GraphGremlin, openCypherRedes sociales, recomendaciones
RDF (Semantic Web)SPARQLOntologías, datos enlazados (Linked Data)

🧱 Componentes principales

  • Nodo (vértice): Representa una entidad (ej. persona, lugar).

  • Relación (arista): Conecta dos nodos con una dirección y propiedad.

  • Propiedades: Metadatos en nodos o relaciones.

  • Triplas (RDF): Sujeto - predicado - objeto (SPARQL).


🚀 Casos de uso

  • Sistemas de recomendación (ej: “personas similares”)

  • Detección de fraudes (transacciones sospechosas)

  • Gestión de redes sociales

  • Sistemas de conocimiento, inferencia semántica

  • Análisis de redes (TI, sociales, logísticas)


⚙️ Características técnicas

CaracterísticaDetalle
Modelos soportadosProperty Graph y RDF
Lenguajes de consultaGremlin, SPARQL, openCypher (beta)
Alta disponibilidadRéplica multi-AZ, failover automático
BackupsAutomáticos y snapshots manuales
CifradoEn tránsito (TLS) y en reposo (KMS)
EscaladoHasta 15 réplicas de lectura por clúster
ConexiónVPC privado, puerto 8182 (Gremlin) / 8182/SPARQL
Máximo de nodos por clúster16 (1 writer + 15 readers)

🛠️ Creación rápida desde CLI

aws neptune create-db-cluster \
  --db-cluster-identifier mi-grafo \
  --engine neptune \
  --master-username admin \
  --master-user-password ClaveSegura123 \
  --vpc-security-group-ids sg-12345678
aws neptune create-db-instance \
  --db-instance-identifier neptune-instance1 \
  --db-cluster-identifier mi-grafo \
  --db-instance-class db.r5.large \
  --engine neptune

🔎 Ejemplos de consultas

🧵 Gremlin (Property Graph)

// Encuentra amigos de un usuario
g.V().has('name', 'Ana').out('friend').values('name')

// Busca películas vistas por amigos
g.V().has('name', 'Ana').out('friend').out('watched').values('title')

🧠 SPARQL (RDF)

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE {
  ?person a foaf:Person .
  ?person foaf:name ?name .
}

📦 Integración y herramientas

Herramienta / ServicioUso principal
Gremlin ConsoleInteracción con la base vía shell
Neptune WorkbenchJupyter notebooks con plantillas Gremlin/SPARQL
IAMAutenticación y autorización
VPCAcceso seguro y privado
CloudWatchMonitoreo de rendimiento y métricas
Lambda + NeptuneTriggers y procesamiento en tiempo real
S3 + Bulk LoaderCarga masiva de datos

📤 Bulk Loader (importación masiva)

  • Carga desde archivos CSV, RDF, o JSON almacenados en Amazon S3.

  • Formato para Property Graph: .csv

  • Formato RDF: .ttl, .rdf, .ntriples

  • Ejemplo de comando:

curl -X POST https://<endpoint>:8182/loader -d '
{
  "source" : "s3://mi-bucket/data/",
  "format" : "csv",
  "iamRoleArn" : "arn:aws:iam::123456789012:role/NeptuneLoadRole",
  "region" : "us-east-1",
  "failOnError" : "FALSE"
}'

🛡️ Seguridad

  • Red privada (VPC) obligatoria.

  • Grupos de seguridad controlan el acceso por puerto (8182).

  • TLS en tránsito.

  • KMS para cifrado de datos en reposo.

  • IAM para autorización (puede integrarse con SIGv4).


📈 Monitoreo y mantenimiento

  • CloudWatch Logs y métricas: conexiones, CPU, latencia, uso de disco.

  • Backups automáticos: Hasta 35 días de retención.

  • Snapshots manuales: Restaurables y exportables.

  • Failover automático entre zonas.


💵 Precios

Se paga por:

  • Tipo y cantidad de instancias (db.r5.large, etc.)

  • Almacenamiento (por GB/mes)

  • Backups adicionales

  • Transferencias de datos

  • Consultas (no por número de vértices o relaciones)


⚖️ Comparación con otros servicios

ServicioTipo de datosCaso ideal
NeptuneGrafos (Gremlin/SPARQL)Relaciones complejas, redes, recomendaciones
DynamoDBClave-valorAccesos rápidos sin relaciones complejas
DocumentDBDocumental (JSON)Datos semiestructurados
Aurora MySQLRelacional SQLJoins complejos, transacciones ACID

🎓 Preguntas tipo certificación

  1. ¿Qué motor de grafo soporta Gremlin?

    • ✅ Property Graph
  2. ¿Neptune permite acceso desde Internet público?

    • ❌ No, solo desde dentro del VPC
  3. ¿Qué protocolo de cifrado usa en tránsito?

    • ✅ TLS
  4. ¿Se puede usar con SPARQL y openCypher?

    • ✅ Sí, ambas (openCypher en beta)

📚 Recursos útiles