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
| Componente | Descripción |
|---|---|
| Ledger | Contenedor principal (como una base de datos) |
| Tabla | Colección de documentos en formato documental (JSON) |
| Journal | Registro inmutable de todos los cambios |
| Block | Grupo de transacciones; cada uno con hash criptográfico |
| Digest | Hash resumen que prueba integridad del historial |
💡 ¿En qué se diferencia de Blockchain?
| Característica | QLDB | Blockchain (ej. Ethereum, Hyperledger) |
|---|---|---|
| Gestión | 100% gestionado por AWS | Descentralizado o semi-centralizado |
| Consenso | No aplica, control central | Sí (proof-of-work, BFT, etc.) |
| Transparencia | Interna (criptográficamente verificable) | Pública o privada |
| Complejidad | Baja | Alta (smart contracts, nodos, minería) |
| Costo | Predecible, sin tokens | Incierto, tarifas variables |
⚙️ Características técnicas
| Funcionalidad | Detalle |
|---|---|
| Formato de datos | Documental (JSON / Amazon Ion) |
| Lenguaje de consulta | SQL-like (PartiQL) |
| Transacciones | ACID |
| Inmutabilidad | Garantizada por journal |
| Verificación | Hash criptográficos y digests exportables |
| Escalado | Automático (serverless) |
| Cifrado | En tránsito (TLS) y en reposo (KMS) |
| Exportación | A 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-digestyget-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:
| Elemento | Cobro |
|---|---|
| Lecturas/escrituras | Por cada operación |
| Journal storage | Por GB/mes |
| Historial y verificación | Por solicitud de proof/digest |
| Exportación | Segú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
| Servicio | Tipo | Uso ideal |
|---|---|---|
| QLDB | Ledger/Contable | Auditoría, trazabilidad, registros confiables |
| DynamoDB | NoSQL clave-valor | Sesiones, apps web, datos sin historial |
| RDS/Aurora | Relacional | Transacciones SQL complejas y relaciones |
| Neptune | Grafo | Relaciones complejas, redes sociales |
🎓 Preguntas tipo certificación
-
¿QLDB permite modificar registros anteriores?
- ❌ No. Es inmutable.
-
¿Qué lenguaje usa QLDB?
- ✅ PartiQL
-
¿Puedo verificar los datos almacenados?
- ✅ Sí, mediante digest y proof criptográficos
-
¿Está basado en blockchain?
- ❌ No, pero ofrece características similares en un sistema centralizado