Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di dati JSON basato su Operational Transformation
1. Laureando: Filippo MUSCOLINO
Analisi e sviluppo di un sistema collaborativo
simultaneo per la modifica di dati JSON
basato su Operational Transformation
Università degli Studi di Trieste - Dipartimento di Ingegneria ed Architettura - A.A. 2017/18
Relatore: Prof. Francesco FABRIS
Correlatore: PhD. Carlos KAVKA
2. Contesto: Sistema collaborativo
Collaborazione
Più utenti, geograficamente distribuiti, dati condivisi (es. testo, JSON, …)
Interattività e simultaneità
Repliche locali, sincronizzazione modifiche in tempo reale
Modifiche concorrenti
Possibili conflitti
3. Scenario: Conflitto tra modifiche
ABCD ABCD
ELIMINA
PRIMO CARATTERE
ELIMINA
TERZO CARATTERE
ABD
BD
BCD
BC
Con dati strutturati (es. JSON): ancora più complesso!
Utente 1 Utente 2
COPIA LOCALE
INIZIALE
COPIA LOCALE
FINALE
4. Problema: Conflitti su dati strutturati
Più utenti effettuano modifiche a dati in formato JSON
Come garantire:
1. Stesso contenuto copie finali
2. Preservazione formato JSON
3. Sincronizzazione simultanea
5. Motivazioni
Interesse aziendale da parte di Esteco S.p.A.
Applicazioni web esistenti con modelli di dati in formati strutturati
Estendere e migliorare funzionalità collaborative
JSON: Perché?
Formato strutturato human readable
Primo passo verso formati più complessi
6. Obiettivo della tesi
Sistema per la modifica collaborativa simultanea di dati JSON
Requisiti
Operazioni standard (es. JSON Patch)
Risoluzione dei conflitti
Utilizzo, se possibile, di algoritmi verificati
Vincoli progettuali
Architettura client / server
Ambiente web (JavaScript, Node.js)
No dati su server esterni
7. Stato dell’arte
In letteratura
Algoritmi di tipo Operational Transformation
Garantiscono correttezza (proprietà matematiche) e simultaneità
No supporto nativo a JSON
In commercio
Nessun prodotto completo, verificato, che soddisfi i requisiti
Limitazioni (es. gestione parziale operazioni, server esterni)
Algoritmi simili a OT, correttezza non garantita
8. IL TERZO CARATTERE
HA CAMBIATO
POSIZIONE: ELIMINA
TERZO DIVENTA
ELIMINA SECONDO
Operational Transformation: Conflitti
ABCD ABCD
ELIMINA
PRIMO CARATTERE
ELIMINA
TERZO CARATTERE
ABD
BD
BCD
BD
Utente 1 Utente 2
COPIA LOCALE
INIZIALE
COPIA LOCALE
FINALE
PRIMA
POSIZIONE
NON È STATA
MODIFICATA:
NO CONFLITTO
10. Soluzione proposta
Sincronizzazione
Algoritmo di controllo client/server verificato (Google OT)
Aggiunta supporto collaborazione offline
Risoluzione conflitti
Estensione del modello ad albero al formato JSON
Nuovo modello
Conversione operazioni
Prototipo di sistema completo basato su OT
11. Modello: albero JSON
“nums”
23
[ ]
“user”
“name”
“User1”
{ }
{ }
99
{
“nums” : [ 99, 23 ],
“user” :
{
“name” : “User1”
}
}
OGNI NODO HA
UN TIPO SPECIFICO
(ES. ARRAY)
OGNI NODO È
IDENTIFICATO DA UNA
POSIZIONE VETTORIALE
(ES. [1,0])
[ ]
[0] [1]
[1,0]
Motivazione: mantenere vincoli formato
Operazioni: INSERT, DELETE, REPLACE
[1,0,0]
12. 1. Posizione nominale / posizione vettoriale
ADD “/year” 2018
“/year” ?
Ordinamento alfanumerico delle chiavi: [2]
2. Adattamento dell’oggetto
2018 ?
Inclusione della chiave: { “year”: 2018}
3. Tipo operazione
MOVE ? DELETE + INSERT
Conversione operazioni: Problemi
“author”
“John”
“pages”
73
{ }
[ ]
[0] [1]
“year”
2018
[2]
INSERT [2] {“year”:2018}
14. Sincronizzazione
Estensione alla collaborazione offline
Client può lavorare dopo disconnessione
Modifiche locali offline e remote sincronizzate alla riconnessione
Algoritmo di controllo Google OT
Server mantiene copia remota
Numero di versione su copia remota
Trasformazioni sia lato client che lato server
15. 1. Tipologia operazioni
Quali operazioni propagare?
Operazioni JSON: troppe conversioni
Operazioni albero: gestione operazioni composte?
Soluzione: macro operazione, una o più operazioni su albero
2. Storico operazioni sul server
Buffer operazioni limitato e collaborazione offline?
Se non possibile, sincronizzazione contenuto
Sincronizzazione: Problemi
MOVE
DELETE
+
INSERT
[ DELETE, INSERT]
DOC (VER. 3)
DOC (VER. 4)
18. Conclusioni
Obiettivi raggiunti
Sistema per la collaborazione simultanea su dati JSON
Sincronizzazione e risoluzione conflitti basata su algoritmi in letteratura
Fase di test basilare (trasformazioni e conversioni)
Esempio di estensione collaborazione
Sviluppi futuri
Sistema di test automatici e valutazione performance
Supporto undo/redo
Estensione ad altri formati