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.