Sto lavorando su un client di sincronizzazione file che attualmente produce un flusso di modifiche al filesystem sottostante. Questo è un flusso di eventi create / update / move / delete per ogni "target" di sincronizzazione.
Ogni evento include un ID sequenza, che fornisce informazioni sull'ordinazione degli eventi e quindi informazioni quali:
- percorso di origine (e percorso di destinazione per gli eventi di spostamento)
- md5 (per i file)
- Mtime timestamp
- tipo di evento: {crea, sposta, aggiorna, cancella}
Funziona abbastanza bene, ma spesso ci sono ridondanze. Ad esempio, uno spostamento dal percorso X al percorso Y e quindi di nuovo al percorso X verrà segnalato come due eventi:
- X - > Y
- Y - > X
Questo è chiaramente ridondante e può essere rimosso completamente dallo stream.
Esistono tecniche ben documentate per rilevare e rimuovere tali ridondanze?
Allo stesso modo, esiste un modo ben compreso ed efficiente per rilevare le ridondanze derivanti dalle eliminazioni? Ad esempio:
- Aggiornamento A
- A - > B
- B - > C
- Elimina C
Qui, le modifiche 1 - 4 potrebbero essere ridotte a Delete A
.
Gli approcci informali, insieme ai documenti accademici, sarebbero i benvenuti, tenendo presente che non è raro incontrare flussi di decine di migliaia di eventi in questo caso.
Grazie mille!
Modifica
Questo problema ha un nome? Il motivo per cui sono qui è perché Google mi ha deluso, e suppongo che questo sia perché mi manca un po 'di vocabolario!