SlideShare a Scribd company logo
1 of 19
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
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
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
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
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
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
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
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
ALGORITMO DI
CONTROLLO
FUNZIONE DI
TRASFORMAZIONE
OPERATIONAL
TRANSFORMATION
Sincronizzazione delle modifiche
Non dipende dal formato dati
Risoluzione dei conflitti
Dipende dal formato dati
Operational Transformation: Struttura
Non esistono funzioni di trasformazione native per JSON
TUTTAVIA
Esistono funzioni verificate per strutture ad albero ordinate
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
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]
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}
[0,0]
[0]
[0,0]
[0]
85 8573
[1,0]
[1]
[1,0]
[1]
73
Risoluzione conflitti
Controllo posizioni vettoriali
Modifica posizione o tipo operazione
“author”
“John”
“pages”
{ }
[ ]
[0]
“author”
“John”
“pages”
{ }
[ ]
DELETE [0] REPLACE [1,0] 85
REPLACE [1,0] 85 REPLACE [0,0] 85 DELETE [0]
[0]
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
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)
Schema implementazione
Esempio interfaccia
Tecnologie: Vue.js, Semantic UI, CSS, HTML, JavaScript
Editor base: JsonEditor Online (http://jsoneditoronline.org)
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
Grazie per l’attenzione

More Related Content

Featured

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software
 

Featured (20)

Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
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
  • 9. ALGORITMO DI CONTROLLO FUNZIONE DI TRASFORMAZIONE OPERATIONAL TRANSFORMATION Sincronizzazione delle modifiche Non dipende dal formato dati Risoluzione dei conflitti Dipende dal formato dati Operational Transformation: Struttura Non esistono funzioni di trasformazione native per JSON TUTTAVIA Esistono funzioni verificate per strutture ad albero ordinate
  • 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}
  • 13. [0,0] [0] [0,0] [0] 85 8573 [1,0] [1] [1,0] [1] 73 Risoluzione conflitti Controllo posizioni vettoriali Modifica posizione o tipo operazione “author” “John” “pages” { } [ ] [0] “author” “John” “pages” { } [ ] DELETE [0] REPLACE [1,0] 85 REPLACE [1,0] 85 REPLACE [0,0] 85 DELETE [0] [0]
  • 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)
  • 17. Esempio interfaccia Tecnologie: Vue.js, Semantic UI, CSS, HTML, JavaScript Editor base: JsonEditor Online (http://jsoneditoronline.org)
  • 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