forum - Dipartimento di Ingegneria dell`Informazione

Un esempio di sistema di data
base distribuito
La piattaforna e-learning di Indire
Di
Biondi Andrea
E-learning
• L’e-learning di Indire è una piattaforma che ha lo
scopo di insegnare ai professori delle scuole
elementari e medie tematiche sulla nuova riforma
della scuola.
• Utilizza il web come veicolo di apprendimento e
le risorse utili alla formazione sono tutte caricate
sulle pagine web.
• Architettura Client-Server
E-learning
• Classe virtuale: ogni professore fa parte di un gruppo di
studenti diretto da un tutor (gruppo di circa 20 studenti).
• I professori della stessa classe fanno parte della stessa
regione.
• Il professore può lavorare sulla piattaforma senza problemi
di orario all’ora che vuole e senza il bisogno degli altri
membri della classe e nemmeno del tutor.
• Il tutor ha il compito di validare (non valutare) gli elaborati
del professore e stabilire ambienti di discussione (forum)
per condividere il percorso che viene intrapreso che
rimane uguale per tutti.
Formazione
• Il percorso formativo si sviluppa attraverso
un percorso di circa 5 mesi in cui il
professore svolge delle attività dal proprio
pc, manda degli elaborati, interviene in
discussioni.
• Ad ogni attività svolta con successo
vengono attribuiti dei crediti
I crediti
• I crediti vengono attribuiti al professore:
– In automatico: semplicemente scaricando dei
testi, eseguendo delle applicazioni dal proprio
pc (es: scaricare dal web un software e
installarlo correttamente sul proprio pc)
– Grazie al tutor che valida l’elaborato del
professore o dando dei crediti per i numerosi
interventi sui forum
Gestione della proprio iter formativo
• La piattaforma dà la possibilità non solo di
eseguire tutte le attività ma anche di aver
disponibile sempre on-line il proprio iter
formativo svolto, in cui si possono rileggere
i propri elaborati e controllarne la
validazione (Portfolio attività)
Cosa deve memorizzare la
piattaforma?
•
•
•
•
•
•
•
•
Anagrafe di tutti i professori (200.000)
Contenuti per la creazione della piattaforma via web
Gestione del login
Gestire l’accesso dei diversi utenti: tutor e professori
Tenere il tracciamento delle attività del professore
Gestione delle comunità virtuali
Gestione dei forum
Gestione degli elaborati
Architettura della piattaforma
Bilanciatore 1
router Bilanciatore 2
Web 1 Web 2 Web 3
switch
…
…
…
…
Web 23
switch
upload
Oracle 1
Oracle 2
Oracle 3
My sql
Centra
Bilanciamento
• Ogni volta che si connette un utente questo deve
essere assegnato ad una macchina web
• Dietro ogni ip che arriva può nascondersi o una
rete o un singolo utente
• Criterio di assegnazione: si assegna l’utente alla
macchina meno carica, non si assegna in base al
numero di utente di quella macchina ma in base al
suo tempo di risposta .
Macchina web
• Ogni macchina web gestisce la sessione
dell’utente e tutte le operazioni che questo compie
all’interno della struttura
• Si intrefaccia con i database
• Si occupa di ricercare tutte le informazioni
necessarie
• Conosce dove si trovano archiviate le
informazioni
• Frammenta le query
Come sono suddivise le
informazioni?
• Tabella anagrafica:
– userId, paswdUT, tipoUtente, nome, cognome, scuola,mail,tutor
assegnato
• Tracciamento delle attività:
– userId, paswdUt, nome, cognome, scuola, attività
• Login:
– userId, paswdUt, campi relativi al login
• Comunità virtuali:
– codUtente, Tutor, ambiente
• Forum:
– Nome, cognome, scuola, temaForum, testo
Criterio principale per il buon
funzionamento della piattaforma
• Se avessimo un solo data base su cui archiviare le
informazioni in caso di numerosi accessi (100000150000 utenti) si sovraccaricherebbe il sistema.
• Difficoltà a gestire insieme tutti gli utenti, ogni
macchina web fa potenzialmente troppi accessi
alla stessa macchina oracle.
• Evitare troppi accessi alla stessa macchina:
suddividere le informazioni su più DataBase.
• Obiettivo: rendere veloce l’accesso alle
informazioni.
Frammentazione e duplicazione
• Per frammentare le informazioni occorre
considerare:
– il rapporto tra applicazione e informazione
necessaria al suo funzionamento
– Il legame che c’è tra le informazioni ed i
vincoli su ogni dato
– La dimensione dei record
Rapporto tra applicazione e
informazione
• Per ogni applicazione deve essere possibile
ricercare immediatamente e in maniera
ottimale le informazioni:
• Login
• Forum
• Tracciamento
• Invio e consultazione dei file
Login
• Nella macchina Oracle1 stanno tutte le
informazioni relative all’anagrafica e al
login.
• Supponendo di avere già caricati su Oracle1
tutti gli utenti, quando un utente accede le
sue credenziali sono facilmente esaminate
in questa tabella login senza dover
consultare altre tabelle.
Forum
• Esistono due tipi di forum utilizzati in
ambienti un po’ diversi:
– Invision: è un forum che utilizzano professori e
tutor per confrontarsi su determinati temi ed è
usato all’interno delle classi virtuali per
discutere con i tutor e gli altri membri della
classe
– Vbullentin: utilzzato per altri scopi
Forum
• Dove mettere i forum?
– L’invio o la lettura di messaggi sui forum è una cosa assai
frequente quando l’utente è collegato.
• Insieme a login e all’anagrafe in Oracle1?
– Si avrebbe tutto a disposizione subito con un solo accesso alla
macchina andando a ricercare le informazioni un po’ sulla tabella
anagrafe e un po’ su quella dei forum senza così replicare colonne.
• In Oracle3?
– Si potrebbe così frammentare i dati e con un accesso andare su
Oracle1 per la parte anagrafica e su Oracle3 per i contenuti dei
forum.
Soluzione
• Il problema principale della piattaforma
sono i troppi accessi ad un singolo
DataBase quindi i dati stanno su Oracle3,
per ragioni sempre di ottimizzazione del
sistema, non sono state frammentate le
informazioni ma replicate le colonne
dell’anagraficha in modo da evitare accessi
ad Oracle1 in caso di utilizzo del forum.
VBullentin
• È un forum utilizzato poco e per questo è
stato inserito all’interno di MySql
– Le informazioni non sono replicate: si farà un
accesso ad Oracle1 e uno a MySql
Schema
Anagrafe: userId, paswdUT, tipoUtente, nome,
Oracle 1
Oracle 3
My sql
cognome, scuola,mail,tutor assegnato
Login: userId, paswdUt, campi relativi al login
Forum Invision: tipoUtente, nome,
cognome, scuola,mail, nomeForum, temaForum, testo
Forum VBullentin: nomeForum, temaForum, testo
Comunità virtuali
• Le informazioni sulle comunità virtuali
sono mantenute su Oracle1 ed è
un’associazione tra circa 20 professori e un
tutor.
• È una tabella creata al momento della
formazione della piattaforma e non replica
le colonne dell’anagrafica ma fa solo
l’associazione professore-tutor.
Il tracciamento
• Nota dolente del sistema:
• Si deve tener traccia di tutto l’iter formativo
dell’utente e questo deve esser facile da ricostruire
in fase di consultazione dalla macchina web.
• Lo scopo è anche quello di rilasciare alla fine
dell’iter formativo l’attestato di frequenza
• Si è notato che l’utente tende spessissimo ad
andare a vedere il proprio “portfolio” e a
controllare se i suoi elaborati sono stati validati dal
tutor.
Il tracciamento
• Si è deciso di tenere la tabella con le informazioni
necessarie a ricostruire e ad aggiornare l’iter
formativo dell’utente all’interno di Oracle1
(anagrafe, login, com.virtuali)
• Rendere l’evento più frequente più voloce da
ricostruire
Il tracciamento
• Come memorizzare l’iter formativo:
• Due casi:
– Dato che il percorso nelle varie aree è ben ristretto si
potrebbe usare una colonna per ciascun singolo
contenuto dell’area specifica e inserire nella riga
corrispondente all’utente il numero di crediti ottenuti.
La macchina Web così fa una ricerca sulla singola riga
e mette insieme le informazioni necessarie
– Creare una singola colonna “attività” in cui Oracle
attraverso una sua funzione particolare riesce a
vettorizzare il record. In un solo campo della riga vi
sono tutte le informazioni necessarie.
Il traccimetnto
• Si è deciso di tenere memorizzato tutto all’interno
del singolo campo “attività”:
– Diminuisce il contenuto della tabella
– Semplice da memorizzare il singolo vettore in memoria
ed è più semplice fare la ricostruzione e la modifica in
caso di inserimento di nuovi crediti:
• non si fa un accesso a tutta la riga ma si inserisce “attivitàcrediti” in modo sequenziale all’interno del vettore in un unico
campo.
Eventi frequenti
• Durante la normale attività della piattaforma
sono stati riscontrati dei problemi che hanno
reso necessario la modifica di alcuni aspetti:
• Si è visto che circa il 50-60% delle volte gli
utenti cambiavano la password e circa il
20% delle volte l’user-Id (soprattutto
all’inizio)
Eventi frequenti
• La modifica di questi campi in un ambiente in cui le
informazioni sono replicate , può portare ad un
sovraccarico in fase di aggiornamento del sistema
• Per risovere questo problema:
– Ad ogni utente si è dato un singolo codice identificativo in modo
tale che la modifica dell’userId vada a modificare solo la tabella
Login e non debbano essere modificate tabelle in altri database
– Anche per la password la modifica continua e frequente ha portato
a memorizzare una password fissa al momento della creazione
dell’utente ed utilizzata sempre in caso accesso dell’utente nelle
varie piattaforme. La modifica quindi andrà a cambiare solo il
campo password nella tabella login.
Allineamento
• Ogni modifica all’interno dei data base è
fatta in modo automatico dato che tutte le
macchine sono allineate tra di loro.
• Anche nel caso in cui si inserisse un nuovo
utente (cosa molto rara) o un tutor il sistema
terrebbe aggiornato il tutto senza che le
macchine web debbano intervenire
direttamente.
I contenuti
• I contenuti per creare graficamente la piattaforma
sono all’interno delle macchine web
• Le altre informazioni erano inizialmente
memorizzate all’intenro di Oracle1 poi si è visto
che queste informazioni non erano collegate alle
altre tabelle presenti nel data base quindi per
liberare Oracle1 da questi accessi si è
momorizzato il tutto in Oracle2 (fino ad ora non
utilizzato)
• La macchina web sarà quindi capace di ritrovare
queste informazioni in modo assai veloce.
Gestione dei contenuti
• I file che vengono mandati per essere visionati dal tutor vengono
archiviati all’interno di una macchina Unix (300GB di memoria)
• Su ogni macchina web vi è una copia del file system (NFS) della
macchina Unix
• Su MySql viene memorizzato l’elenco di tutti i documenti che sono
presenti all’interno del sistema
• Su MySql vi è memorizzato la lista dei file anche per un secondo
motivo:
– I file validati dai tutor (se l’utente lo desidera) possono servire come
sussidio per gli altri professori
– Gli utenti connessi hanno così a disposizione una biblioteca di file che
viene vista e letta attraverso due passaggi:
• La ricerca e la consultazione dell’archivio su MySql
• Il download attraverso la macchina Unix
Centra
• Centra è una pacchetto software che permette l’utilizzo di una
particolare comunità virtuale (comunicazione sincrona) in cui circa 12
utenti si connettono insieme in un orario prestabilito dal tutor
• Possono parlare insieme attraverso microfono-cuffia, chat testuale,
video-camera una lavagna virtuale condivisa e discutere insieme di
alcuni tempi particolari.
• Il tutor crea la classe virtuale segnando i professori che si sono
prenotati per l’evento, queste informazioni sono memorizzate
all’interno di Oracle2
• Di Centra viene solo utilizzato un software che gira sulle macchine
web di cui è possibile solo utilizzare l’interfaccia interrogabile in php.
• Queste informazioni poi sono inviate ad una piattaforma che non è
presente in Indire ma fuori, l’utente dopo il login viene connesso
direttamente a questa piattaforma.