Surreal-Sync -- データ移行と同期
Surreal-Sync は、様々なデータベースソースから SurrealDB へのデータ移行を、Change Data Capture (CDC) によるフル同期および増分同期で実現するCLIツールです。
サポートされているソース
| ソース | フル同期 | 増分CDC | 方式 |
|---|---|---|---|
| MongoDB | はい | はい | Change Streams |
| MySQL | はい | はい | トリガーベースCDC + シーケンスチェックポイント |
| PostgreSQL (トリガー) | はい | はい | トリガーベースCDC + シーケンスチェックポイント |
| PostgreSQL (wal2json) | はい | はい | wal2jsonプラグインによる論理レプリケーション |
| Neo4j | はい | はい | タイムスタンプベースの追跡 |
| JSONLファイル | はい | 該当なし | JSON Linesからの一括インポート |
| Apache Kafka | はい | はい | 重複排除付きコンシューマサブスクリプション |
クイックスタート
# surreal-sync のインストール (Rust バイナリ)
cargo install surreal-sync
# PostgreSQL からのフル同期 (トリガーベース)
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
# PostgreSQL からの増分CDC (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
# 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
# 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
# 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
CLIパターン
surreal-sync from <SOURCE> <COMMAND> \
--connection-string [CONNECTION STRING] \
--surreal-endpoint [SURREAL ENDPOINT] \
--surreal-username [SURREAL USERNAME] \
--surreal-password [SURREAL PASSWORD] \
--to-namespace <NS> \
--to-database <DB>
主な機能
- 自動スキーマ推論と SurrealDB テーブル作成
- ソース主キーからのレコードIDマッピング
- リレーションシップ抽出とグラフエッジ作成
- 設定可能なバッチサイズと並列処理
- チェックポイント追跡による再開可能な同期
- Kafka コンシューマ向け重複排除
完全なドキュメント
完全なガイダンスはメインスキルのルールファイルを参照してください:
- rules/surreal-sync.md -- ソース設定、スキーママッピング、CDCセットアップ、競合解決、本番環境デプロイメント
- surrealdb/surreal-sync -- 上流リポジトリ