July 31, 2025

QLDB

📘 ¿Qué es Amazon QLDB?

Amazon QLDB (Quantum Ledger Database) es un servicio de base de datos de contabilidad inmutable y verificable, completamente gestionado por AWS.

Está diseñado para almacenar registros con historial completo, donde los cambios de datos deben ser transparentes, rastreables y no manipulables.

  • Inmutable: Los datos no se pueden modificar ni eliminar.

  • Verificable criptográficamente

  • Transaccional y ACID

  • Serverless y escalable


🧩 ¿Cuándo usar QLDB?

Casos ideales:

  • 📚 Registros financieros y contables

  • 📝 Historial de cambios en documentos legales

  • 🚗 Registros de vehículos, cadenas de suministro

  • 🏥 Auditorías de sistemas médicos

  • ⚖️ Aplicaciones que requieren confianza sin blockchain compleja


📦 Componentes principales

ComponenteDescripción
LedgerContenedor principal (como una base de datos)
TablaColección de documentos en formato documental (JSON)
JournalRegistro inmutable de todos los cambios
BlockGrupo de transacciones; cada uno con hash criptográfico
DigestHash resumen que prueba integridad del historial

💡 ¿En qué se diferencia de Blockchain?

CaracterísticaQLDBBlockchain (ej. Ethereum, Hyperledger)
Gestión100% gestionado por AWSDescentralizado o semi-centralizado
ConsensoNo aplica, control centralSí (proof-of-work, BFT, etc.)
TransparenciaInterna (criptográficamente verificable)Pública o privada
ComplejidadBajaAlta (smart contracts, nodos, minería)
CostoPredecible, sin tokensIncierto, tarifas variables

⚙️ Características técnicas

FuncionalidadDetalle
Formato de datosDocumental (JSON / Amazon Ion)
Lenguaje de consultaSQL-like (PartiQL)
TransaccionesACID
InmutabilidadGarantizada por journal
VerificaciónHash criptográficos y digests exportables
EscaladoAutomático (serverless)
CifradoEn tránsito (TLS) y en reposo (KMS)
ExportaciónA S3 como CSV, JSON o Ion

📚 Ejemplo de PartiQL (lenguaje de consultas)

-- Crear una tabla
CREATE TABLE Vehiculos;

-- Insertar datos
INSERT INTO Vehiculos << {
  'VIN': '1HGBH41JXMN109186',
  'Marca': 'Honda',
  'Modelo': 'Civic',
  'Año': 2020
} >>;

-- Consultar datos
SELECT * FROM Vehiculos WHERE VIN = '1HGBH41JXMN109186';

-- Actualizar (se registra como nuevo bloque)
UPDATE Vehiculos SET Año = 2021 WHERE VIN = '1HGBH41JXMN109186';

-- Ver historial de un ítem
SELECT * FROM history(Vehiculos) WHERE VIN = '1HGBH41JXMN109186';

🔍 Verificación e historial

  • history(<tabla>): Consulta todas las versiones de un documento.

  • Digest: Hash raíz del journal, se puede exportar.

  • Verificación criptográfica:

    • AWS CLI: get-digest y get-proof

    • Verifica que los datos no han sido manipulados desde cierto punto.


🛠️ AWS CLI / API básicos

# Crear ledger
aws qldb create-ledger \
  --name RegistroContable \
  --permissions-mode STANDARD \
  --deletion-protection

# Listar ledgers
aws qldb list-ledgers

# Exportar digest
aws qldb get-digest --name RegistroContable

# Exportar a S3
aws qldb export-journal-to-s3 \
  --name RegistroContable \
  --s3-export-configuration file://config.json \
  --inclusive-start-time "2024-01-01T00:00:00Z" \
  --exclusive-end-time "2024-06-30T00:00:00Z"

🔐 Seguridad

  • IAM: Control de acceso por usuarios, funciones o roles

  • Cifrado en reposo: AWS KMS (por defecto)

  • TLS en tránsito

  • Integración con CloudTrail para auditoría externa


📈 Monitoreo y métricas

  • CloudWatch: Conexiones, latencia, transacciones fallidas

  • CloudTrail: Actividad de API/Qldb

  • QldbStream: Stream hacia Kinesis para análisis en tiempo real (logs, cambios)


💵 Precios

Se basa en:

ElementoCobro
Lecturas/escriturasPor cada operación
Journal storagePor GB/mes
Historial y verificaciónPor solicitud de proof/digest
ExportaciónSegún uso de S3 y tiempo

Sin costos por instancias o aprovisionamiento


🧠 Buenas prácticas

  • Usa historial y history() para auditorías o reconciliaciones

  • Activa protección contra eliminación del ledger

  • Integra con Lambda o Step Functions para lógica de negocio automatizada

  • Usa Ion (Amazon Ion) para mejor compatibilidad con QLDB internamente

  • Evita usarlo para cargas OLTP comunes (no es un reemplazo de RDS/Dynamo)


⚖️ Comparativa con otros servicios

ServicioTipoUso ideal
QLDBLedger/ContableAuditoría, trazabilidad, registros confiables
DynamoDBNoSQL clave-valorSesiones, apps web, datos sin historial
RDS/AuroraRelacionalTransacciones SQL complejas y relaciones
NeptuneGrafoRelaciones complejas, redes sociales

🎓 Preguntas tipo certificación

  1. ¿QLDB permite modificar registros anteriores?

    • ❌ No. Es inmutable.
  2. ¿Qué lenguaje usa QLDB?

    • ✅ PartiQL
  3. ¿Puedo verificar los datos almacenados?

    • ✅ Sí, mediante digest y proof criptográficos
  4. ¿Está basado en blockchain?

    • ❌ No, pero ofrece características similares en un sistema centralizado

📚 Recursos útiles