Surreal-Sync -- Migration et synchronisation de données
Surreal-Sync est un outil CLI pour migrer des données de diverses sources de base de données vers SurrealDB, avec synchronisation complète et incrémentielle via Change Data Capture (CDC).
Sources prises en charge
| Source | Synchronisation complète | CDC incrémentiel | Méthode |
|---|---|---|---|
| MongoDB | Oui | Oui | Change streams |
| MySQL | Oui | Oui | CDC basé sur des déclencheurs + points de contrôle de séquence |
| PostgreSQL (déclencheurs) | Oui | Oui | CDC basé sur des déclencheurs + points de contrôle de séquence |
| PostgreSQL (wal2json) | Oui | Oui | Réplication logique avec plugin wal2json |
| Neo4j | Oui | Oui | Suivi basé sur les horodatages |
| Fichiers JSONL | Oui | N/A | Import par lots depuis JSON Lines |
| Apache Kafka | Oui | Oui | Abonnements consommateur avec déduplication |
Démarrage rapide
# Installer surreal-sync (binaire Rust)
cargo install surreal-sync
# Synchronisation complète depuis PostgreSQL (basée sur déclencheurs)
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 incrémentiel depuis 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
# Synchronisation complète depuis 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
# Import par lots depuis 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
# Consommation depuis 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
Modèle CLI
surreal-sync from <SOURCE> <COMMANDE> \
--connection-string [CHAÎNE DE CONNEXION] \
--surreal-endpoint [ENDPOINT SURREAL] \
--surreal-username [NOM D'UTILISATEUR SURREAL] \
--surreal-password [MOT DE PASSE SURREAL] \
--to-namespace <NS> \
--to-database <BD>
Fonctionnalités clés
- Inférence automatique du schéma et création de tables SurrealDB
- Correspondance des identifiants d'enregistrement à partir des clés primaires source
- Extraction de relations et création d'arêtes de graphe
- Tailles de lots et parallélisme configurables
- Synchronisation reprenable avec suivi des points de contrôle
- Déduplication pour les consommateurs Kafka
Documentation complète
Voir le fichier de règles principal de la compétence pour des conseils complets :
- rules/surreal-sync.md -- configuration des sources, mappage de schéma, configuration CDC, résolution de conflits, et déploiement en production
- surrealdb/surreal-sync -- dépôt upstream