mcpField
S
storage-sync

storage-sync

github.com/d-o-hubデータ・データベース1343 回インストール今日更新
リポジトリ

storage-sync について

永続ストレージのTursoとredbキャッシュを同期するスキルです。定期同期や障害後の復旧、整合性チェック、部分同期への対処を扱います。

主な機能

  1. 01起動時・定期・手動同期
  2. 02Tursoからepisodesを取得
  3. 03redbキャッシュを更新
  4. 04パターンとembeddingの同期設定
  5. 05エラー修復と再開

活用シーン

  1. 01起動後のキャッシュ更新
  2. 02ストレージ障害後のキャッシュ復旧
  3. 03未完了の同期の再開

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/d-o-hub/rust-self-learning-memory --skill storage-sync

インストール後、Claude Code で/storage-syncを入力して読み込まれたか確認します。

詳細

ストレージ同期

Turso(永続ストレージ)とredb(キャッシュ)間でメモリを同期します。

同期するタイミング

  1. 起動時 - システムの初期化後
  2. 定期的 - スケジュールされたバックグラウンド同期
  3. キャッシュの陳腐化 - redbが古くなっているように見える場合
  4. 復旧時 - ストレージ障害の後
  5. 手動での実行 - 明示的にリクエストされた場合

同期プロセス

  1. 接続の健全性を確認:

    turso_client.ping().await?;
    redb_env.check_integrity()?;
    
  2. Tursoから最新データを取得:

    let episodes = turso_client
        .query("SELECT * FROM episodes ORDER BY timestamp DESC LIMIT ?")
        .bind(max_episodes_cache)
        .await?;
    
  3. redbキャッシュを更新:

    tokio::task::spawn_blocking(move || {
        let write_txn = redb.begin_write()?;
        let mut table = write_txn.open_table(EPISODES_TABLE)?;
        for episode in episodes {
            table.insert(episode.id.as_bytes(), episode.to_bytes())?;
        }
        write_txn.commit()?;
    });
    
  4. 有効な場合は、パターンと埋め込みを同期します

設定

pub struct SyncConfig {
    pub max_episodes_cache: usize,  // Default: 1000
    pub batch_size: usize,          // Default: 100
    pub sync_patterns: bool,        // Default: true
    pub sync_embeddings: bool,      // Default: true
}

エラー処理

エラー対処
Tursoが利用できない同期をスキップし、警告を記録して、後で再試行します
redbの破損修復を試み、Tursoから再構築します
同期の一部失敗進行状況を追跡し、最後の時点から再開します

パフォーマンスに関するヒント

  • 小さな操作をバッチ処理します
  • 増分同期を行います(変更分のみ)
  • Tokioを使用して並列に取得します
  • 書き込み前の準備を行います

検証

同期後、次の項目を検証します。

  • エピソード数が一致する
  • 最新のエピソードが存在する
  • パターン数に一貫性がある
  • 孤立した埋め込みがない

トラブルシューティング

問題解決策
同期が遅いキャッシュサイズを小さくし、バッチサイズを大きくします
redbのロックエラー専用の書き込みタスクを使用します
メモリ不足大きな結果をストリーミングし、バッチサイズを小さくします

コメント