Surreal-Sync -- Migración y Sincronización de Datos
Surreal-Sync es una herramienta CLI para migrar datos desde diversas fuentes de bases de datos a SurrealDB con sincronización completa e incremental mediante Change Data Capture (CDC).
Fuentes Soportadas
| Fuente | Sincronización Completa | CDC Incremental | Método |
|---|---|---|---|
| MongoDB | Sí | Sí | Change streams |
| MySQL | Sí | Sí | CDC basado en triggers + puntos de control de secuencia |
| PostgreSQL (triggers) | Sí | Sí | CDC basado en triggers + puntos de control de secuencia |
| PostgreSQL (wal2json) | Sí | Sí | Replicación lógica con plugin wal2json |
| Neo4j | Sí | Sí | Seguimiento basado en marcas de tiempo |
| Archivos JSONL | Sí | N/A | Importación por lotes desde JSON Lines |
| Apache Kafka | Sí | Sí | Suscripciones de consumidor con deduplicación |
Inicio Rápido
# Instalar surreal-sync (binario Rust)
cargo install surreal-sync
# Sincronización completa desde PostgreSQL (basado en triggers)
surreal-sync from postgres trigger-full \
--connection-string "postgresql://user:pass@localhost/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# CDC incremental desde PostgreSQL (wal2json)
surreal-sync from postgres wal2json \
--connection-string "postgresql://user:pass@localhost/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# Sincronización completa desde MongoDB
surreal-sync from mongo full \
--connection-string "mongodb://localhost:27017/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# Importación por lotes desde JSONL
surreal-sync from jsonl import \
--file data.jsonl \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# Consumir desde Kafka
surreal-sync from kafka consume \
--bootstrap-servers "localhost:9092" \
--topic my-events \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
Patrón CLI
surreal-sync from <SOURCE> <COMMAND> \
--connection-string [CADENA DE CONEXIÓN] \
--surreal-endpoint [ENDPOINT SURREAL] \
--surreal-username [USUARIO SURREAL] \
--surreal-password [CONTRASEÑA SURREAL] \
--to-namespace <NS> \
--to-database <DB>
Características Clave
- Inferencia automática de esquema y creación de tablas en SurrealDB
- Mapeo de IDs de registros desde claves primarias de origen
- Extracción de relaciones y creación de aristas de grafo
- Tamaños de lote y paralelismo configurables
- Sincronización reanudable con seguimiento de puntos de control
- Deduplicación para consumidores de Kafka
Documentación Completa
Consulte el archivo de reglas del skill principal para obtener una guía completa:
- rules/surreal-sync.md -- configuración de fuentes, mapeo de esquemas, configuración de CDC, resolución de conflictos y despliegue en producción
- surrealdb/surreal-sync -- repositorio upstream