Comments
Transcript
Presentazione standard di PowerPoint - e
Architetture del software e dei dati Appello del 24/2/2016 Università degli Studi di Milano-Bicocca Dipartimento di Informatica Sistemistica e Comunicazione Magrinelli Andrea - 736358 Secci Stefano - 756610 Ceresa Nausica - 708917 ANALISI DEL PROBLEMA Studio del problema Il sistema di Osservazione del Comportamento degli Automobilisti (OCA) deve: Fornire assistenza in caso di sinistro: Riconoscimento di eventuali sinistri (collisioni); Notifica all’operatore competente delle informazioni necessarie per organizzare l’assistenza; Attivazione di una connessione telefonica tra operatore e assicurato coinvolto Inviare i soccorsi sul luogo dell’incidente Studio del problema Consentire all’operatore di visualizzare, per ciascun assicurato e per ciascuna polizza, le attuali condizioni di polizza e il livello di rischio dell’assicurato. Calcolare il livello di rischio R di ciascun assicurato: R= f(K,V,P,D,E,C) Dove: D: numero denunce di sinistro; E: età dell’assicurato; C: comune di residenza; Consentire di ridefinire per ciascuna polizza su base annuale: Il chilometraggio totale K; La velocità media V per ciascuna tipologia di tronco viario; Il livello di prudenza P definito come la percentuale di chilometri percorsi rispettando i limiti di velocità con una tolleranza di 10 km/h. Acronimi OCA : sistema di Osservazione del Comportamento degli Automobilisti. ACC : sensore di accelerazione (accelerometro). TAC : sensore di velocità (tachimetro). GPS : sensore di posizione BDG : Base Dati Geografica BDA : Una Base Dati Assicurati Ambiguità Qual è il target del sistema? (Regionale o nazionale) Gli operatori, hanno ruoli assegnati?(ex: un operatore destinato a gestire le polizze e uno destinato a gestire sinistri) Che tipologia di incidenti vengono gestiti? Qual è il limite minimo di decelerazione per far partire autonomamente la segnalazione? L’utente può inviare manualmente la segnalazione? Quali parametri contiene la segnalazione incidente? Quanti sono i clienti della compagnia di assicurazioni? Quanti sono i veicoli assicurati dalla compagnia e quali? ASSUNZIONI Assunzioni generali Il target del sistema OCA è a livello regionale (Regione Lombardia) Gli operatori sono divisi in due categorie: operatore sinistri e operatori polizze I veicoli assicurati con OCA sono automobili, camion, camper, autobus, pullman. Sono esclusi rimorchi. Assunzioni sui sinistri L’accelerometro fornisce dati utili al rilevamento di impatti Gli incidenti che rientrano nelle casistiche del sistema, riguardano frontali, tamponamenti e ribaltamenti dei veicoli, solo in caso venga superato il valore di soglia stabilito dalla compagnia (variabile) Il guidatore assicurato non può inviare manualmente la segnalazione di sinistro. Assunzioni sulle polizze e livello di rischio La quotazione del premio assicurativo viene calcolata sui dati dell’assicurato, cioè colui che ha stipulato la polizza con la compagnia; Le polizze contenute in BDA sono riferite all’anno corrente e ad ogni rinnovo il numero di polizza rimane invariato Al rinnovo di una polizza il livello di rischio R viene calcolato basandosi sugli ultimi 12 mesi di ciascuna polizza dell’assicurato indipendentemente dalla loro scadenza Il livello di rischio R può essere ricalcolato e visualizzato in qualsiasi momento ma viene salvato, sovrascrivendo il dato precedente, solo alla scadenza di ognuna delle polizze sottoscritte. Stime I veicoli assicurati dalla compagnia sono 1 milione 500 mila (in Lombardia 6 milioni di veicoli secondo Statistiche ACI 2014) Il sistema OCA è utilizzato dalla compagnia assicurativa su un milione di assicurati; L’assicurazione ha tre agenzie per ogni provincia dove lavorano gli operatori polizze, mentre gli operatori sinistri sono collocati nella sede principale nel capoluogo (Milano) Ogni agenzia ha 4 operatori polizze e la sede centrale ha 100 operatori sinistri, quindi: Operatori polizze: 4(operatori)x12(numero province)x3(agenzie per provincia)=144 Operatori sinistri: 100 Vincoli funzionali La rilevazione del percorso avviene ad ogni accensione del veicolo ed i dati vengono inviati ogni volta che il veicolo viene spento. Il rilevamento delle collisioni viene notificato all’operatore competente, il quale sarà messo in contatto con l’assicurato e qualora lo ritenesse necessario, provvederà all’invio di soccorsi. Il sistema OCA deve inoltre: Calcolare il KVP per percorso e generare dunque il report mensile al fine di calcolare il valore di rischio R aggiornato. Visualizzare lo stato di ogni di ogni polizza e il valore di rischio R alla data odierna. Rinnovare la polizza in base a R Vincoli non funzionali Il sistema OCA è attivo 24h su 24h, tutti i giorni dell’anno I rilevamenti di velocità e posizione vengono effettuati ogni 5 secondi. I dati del sensore ACC sono campionati ogni 0,1 secondi, questo dovrebbe premettere di rilevare la collisione nel momento in cui avviene (secondo i dati ACI una collisione avviene in 1/10 secondo); Use Case Diagram Modello dei dati AD 1 - Rilevamento Posizione Velocità AD 2 - Creazione Percorso AD 3 - Rileva Collisione AD 4 - Riceve Segnalazione Collisione AD 5 - Riceve Percorso AD 6 - Calcolo KVP Mensili AD 7 – Rinnova Polizza AD 7.1 - Ricalcolo Livello Rischio AD 7.2 - Calcolo KVP Annuale AD 8 - Visualizza Polizza AD 9 - Visualizza Livello Rischio ARCHITETTURA LOGICA Suddivisione in componenti Gestore polizze • Rinnova polizze • Visualizza polizza • Visualizza livello di rischio Gestore dati sensori • Riceve percorso Gestore Sensori • Rileva collisione • Crea percorso Gestore KVP mensile • Calcola KVP mensile Gestore Sinistri • Riceve segnalazione collisione Partizionamento: Gestore Sensori FOOTPRINT : Gestore Sensori ABSTRACTION 10 COMPLEXITY 35 Gestore Sensori ABSTRACTION 100 SHARING FREQUENCY 80 COMPLEXITY 60 40 40 DELAY 30 LOCATION 10 EXTRA FLOW 80 INTRA FLOW 0 SHARING 20 20 INTRA FLOW FREQUENCY 0 EXTRA FLOW DELAY LOCATION Partizionamento: Gestore Sinistri FOOTPRINT : Gestore Sinistri ABSTRACTION 30 COMPLEXITY 20 Gestore Sinistri ABSTRACTION 100 SHARING FREQUENCY 80 COMPLEXITY 60 20 40 DELAY 20 LOCATION 10 EXTRA FLOW 50 INTRA FLOW 10 SHARING 50 20 INTRA FLOW FREQUENCY 0 EXTRA FLOW DELAY LOCATION Partizionamento: Gestore Dati Sensori FOOTPRINT : Gestore Dati Sensori ABSTRACTION 10 COMPLEXITY 10 Gestore Dati Sensori ABSTRACTION 100 SHARING FREQUENCY 10 80 COMPLEXITY 60 40 DELAY 20 LOCATION 10 EXTRA FLOW 10 INTRA FLOW 10 SHARING 60 20 INTRA FLOW FREQUENCY 0 EXTRA FLOW DELAY LOCATION Partizionamento: Gestore KVP Mensile FOOTPRINT : Gestore KVP Mensile ABSTRACTION 10 COMPLEXITY 10 Gestore KVP Mensile ABSTRACTION 100 SHARING FREQUENCY 80 COMPLEXITY 60 10 40 DELAY 10 LOCATION 10 EXTRA FLOW 5 INTRA FLOW 10 SHARING 80 20 INTRA FLOW FREQUENCY 0 EXTRA FLOW DELAY LOCATION Partizionamento: Gestore Polizze FOOTPRINT : Gestore Polizze ABSTRACTION 40 COMPLEXITY 50 Gestore Polizze ABSTRACTION 100 SHARING FREQUENCY 80 COMPLEXITY 60 50 40 DELAY 50 LOCATION 20 EXTRA FLOW 50 INTRA FLOW 30 SHARING 80 20 INTRA FLOW FREQUENCY 0 EXTRA FLOW DELAY LOCATION FOOTPRINT Complessivo Kiviat Chart ABSTRACTION COMPLEXITY 20 ABSTRACTION 100 30 SHARING FREQUENCY 30 80 COMPLEXITY 60 40 DELAY 30 LOCATION 10 EXTRA FLOW 40 INTRA FLOW 10 SHARING 60 20 INTRA FLOW FREQUENCY 0 EXTRA FLOW DELAY LOCATION PRO E CONTRO DELLA SOLUZIONE Per l’analisi che è stata effettuata, si è scelto di utiizzare 5 gestori complessivi, in modo tale da raccogliere alcune attività comuni in un unico Gestore. Gestore Sensori: Si occuperà di raccogliere i dati del percorso e di eventuali collisioni. Presenta una Frequenza e Complessità nella media, mentre è affetto da alto ExtraFlow, dovuto all’alta interazione con attori differenti quali ACC, TAC, GPS. Gestore Sinistri: si occupa solo di gestire la parte delle collisioni, è un componente a sè stante. Gestore Dati Sensori: viene eseguito in autonomia, non necessita di un attore principale; permette di raccogliere le informazioni dai percorsi e di catalogarle. Gestore KVP Mensile: Puramente indipendente, Unica nota è lo Sharing elevato. Gestore Polizza: il più complesso in quanto racchiude tutte le attività che si possono eseguire sulle polizze. La media dei KVIAT Chart da luogo al Footprint Complessivo ARCHITETTURA CONCRETA Diagrammi di Sequenza delle varie Attività Architettura di Deployment Tipo di Comunicazione Stime dei Costi SD – Rileva Posizione e Velocità SD – Creazione percorso SD – Rileva Collisione SD – Riceve Segnalazione di Collisione SD – Riceve Percorso SD – Calcola KVP mensili SD – Rinnova Polizza SD – Ricalcola Livello Rischio SD – Calcola KVP Annuale Deployment Soluzione 1 Analisi della soluzione 1 Disponiamo di due nodi “Centrali”, il server per le analisi che comprende il gestore per il calcolo di KVP_Mensile e il Gestore per l’analisi dei dati pervenuti dai device sulle automobili. Questa soluzione permette di avere due nodi separati per il bilanciamento del carico applicativo. Deployment Soluzione 2 Analisi della soluzione 2 Nell’ottica di rimanere Cost-Effective e visto che la priorità del sistema è il raccogilmento dei dati a fini di Rinnovo polizza (indicativamente una volta l’anno), si può optare per una soluzione caratterizzata da un solo nodo centrale che svolgerà le principali funzioni di elaborazione e di rimandare ai nodi “remoti” situati nelle sedi assicurative il “Calcolo del Gestore Polizze”. Devices: BB Al fine di raccogliere le informazioni dai sensori installati sul veicolo è necessario installare sullo stesso una periferica che permetta la comunicazione con il Body Computer installato su ogni autovettura. Quest’ultimo permette di collegare periferiche di terze parti tramite la porta OBD, installata sullo stesso, la quale fornisce sia l’alimentazione +12V anche a vettura spenta, che il BUS di comunicazione nel quale transiteranno i dati del veicolo. Devices: Operatori Per gli operatori la scelta ricade su dei desktop SFF (Dell Optiplex 302), i quali permettono prestazioni da ufficio in dimensioni ridotte rispetto ai normali Tower. Le operazioni che devono svolgere non richiedono una potenza di calcolo particolare, quindi la maggior parte dei Desktop aziendali può soddisfare le richieste. Devices: Server Per poter elaborare i dati inviati dai veicoli sul territorio e per gestire le richieste di rinnovo, mettiamo a confronto due possibili architetture, con i loro pro e contro: Cloud Server Pro: Elevata Scalabilità, costi di gestione limitati e costanti nel tempo. Nessuna infrastruttura di rete, banda garantita e nessun costo di manutenzione. Contro: Non creato ad hoc per il sistema. Privacy e sicurezza degli utenti. Server Fisico: Pro: Privacy e sicurezza ”in-house” Contro: Poca scalabilità, Costi elevati, necessità di personale specializzato. Per le opzioni viste, la più appropriata al problema è quella che vede l’utilizzo di server Cloud per l’immagazzinamento dei dati, e di un elaboratore ‘in house’ per gestire i sinistri. Comunicazione Per soddisfare le esigenze del sistema, l’opzione di comunicazione più consona è quella di avere per ogni dispositivo presente nelle vetture una scheda SIM installata, che permetta il traffico dati con il server remoto il quale si occupa di raccogliere i rilevamenti. Il device (BB) utilizzerà quindi la connessione GPRS/UMTS per inviare al server i dati raccolti dai percorsi e le rilevazioni di collisione. Per quanto riguarda i Client degli Operatori Polizza situati nelle varie agenzie sul territorio, verranno dotati di una connettività xDSL/Fibra che gli permetta di interagire con il sistema in Cloud. Stima dei costi 1/2 Per lo sviluppo del sistema supponiamo i seguenti costi: Analisi requisiti e creazione documenti di implementazione/architettura: 5 per 20-25 gg a 150€/gg Sviluppo del sistema partendo dalla documentazione prodotta nella fase di analisi (Inclusi test per rilasci in collaudo, produzione): 8 per 140 gg a 150€/gg Per un totale di 170.000€ di costi di Sviluppo SW Stima dei costi 244 Desktop Dell Optiplex 302, a 539 Euro caduno. 244 Monitor Dell 22 P2214H a 200 Euro caduno 1 Milione di blackbox al costo di 25 euro ciascuna (a carico dell’assicurato) Installazione di una blackbox: 1 per 30min a 30€/h (a carico dell’assicurato) Costo traffico UMTS/GSM: 3€/mese per BlackBox (a carico dell’assicurato) Costo cloud: 500€/mese Costo server sede centrale:4000 € Stima dei costi Costi avvio Analisi requisiti 20.000 € Sviluppo testing 150.000 € Acquisto HW 180.000 € Server e cloud Totale Costi mantenimento annui 50 €/mese a postazione 500 €/mese 350.000€ 550 € /mese Sviluppi futuri I chilometri in cui l’assicurato rispetta i limiti vengono calcolati per ogni tipologia di strada, questo potrebbe permettere alla compagnia assicurativa di raffinare il calcolo di R Al momento sappiamo avere solo 3 sensori. Su un autovettura sono molti di più, questo permetterebbe sviluppi futuri. L’esempio più intuitivo (per rimanere in tema OCA) è sapere se al momento dell’impatto le cinture fossero correttamente allacciate. Architettura Dati Integrazione L’integrazione ha come principale obiettivo quello di federare più database che ricadono nel controllo di singoli soggetti giuridici che però accettano tramite accordi di condividere una architettura di integrazione su una parte dei loro dati. Approccio scelto: Virtual Data Integration Virtual Data Integration Lo schema globale SG è caratterizzato dalle seguenti proprietà: • Tutto il contenuto informativo di SL1 e SL2 deve essere rappresentato in SG • Le eterogeneità tra SL1 e SL2 sono riconcigliate in SG • Le corrispondenze interschema sono rappresentate in SG • Non viene definito un nuovo DB fisico Integrazione – Le fasi Passi dell’integrazione: 1. Data Reverse Engineering : consiste nell’analizzare i diversi schemi locali producendo come risultato un insieme di schemi concettuali localmente completi e consistenti. 2. Integrazione Schemi: è la fase più importante in cui i diversi schemi locali vengono fusi in un unico schema globalmente consistente. 3. Progettazione Logica: utilizzando lo schema logico riconciliato si definisce la relazione (mapping) tra concetti degli schemi sorgenti e dello schema riconciliato. 4. Data Integration: Record Linkage e Fusion 1. Data Reverse Engineering - BDA Il testo riporta le seguenti specifiche: «Una Base Dati Assicurati (BDA) che contiene l’anagrafica degli assicurati, le relative polizze e le denunce di sinistro. Si consideri che un assicurato può avere più polizze corrispondenti a veicoli diversi.» Da queste informazioni ricaviamo lo schema logico relazionale con le seguenti entità: Assicurato Polizza Sinistro Vengono inoltre modellate anche le entità: Veicolo Comune Schema Logico Relazionale Locale BDA COMUNE (CAP, Nome_Comune, Regione_Comune) ASSICURATO (ID_Assicurato, CF_Assicurato, Nome_Assicurato, Cognome_Assicurato, Data_Nascita_Assicurato, Telefono, CAP) VEICOLO (Targa, Marca, Modello, Data_Immatricolazione, Categoria) POLIZZA (ID_Polizza, Data_Stipula, Data_Rinnovo, Premio, ID_Assicurato, Targa) SINISTRO (ID_Sinistro, Data, Ora, Luogo, ID_Polizza) Legenda Testo rosso: chiave esterna Testo Grassetto e sottolineato: chiave primaria Schema Concettuale Locale - BDA Schema Concettuale Locale - OCB Schema Logico Relazionale Locale – OCB TIPOLOGIA(ID_Tipologia, Nome, Limite_Velocità) OPERATORE(User, Nome, Cognome, Email, Password, Tipo_Op) VIA(ID_Via, Nome, Comune) TRONCO_VIA(ID_TroncoVia, ID_Via, ID_Tipologia) ASSICURATO(ID, CF, Telefono, R, Comune) POLIZZA(ID_Polizza, Targa_Veicolo, Assicurato, OP_Creaz_Polizza, OP_UltimoAgg) SINISTRO(ID_Sinistro, Polizza, ID_Segn, OP_Creaz_Sinistro,Op_Gest_Sinistro) BB(IMEI, Data_Attivazione, Soglia, Targa) RILEVAMENTO_COLLISIONE(ID_RilColl, X, Y, Z, Acc_G, IMEI) RILEVAMENTO(ID_Ril, Latitude,Longitude, Speed, IMEI, ID_TroncoVia) SEGNALAZIONE(ID_Segn, Data, ID_RilColl, ID_Ril, IMEI) PERCORSO(ID_Percorso, Data_Start, Data_Stop, KM_Totali, P_Percorso, ID_ReportMensile) KV(ID_Percorso, ID_Tipologia, V_Media_Percorso, KM_Idonei) REPORT_PERCORSI_POLIZZA(ID_RPP, Anno, Mese, K, P, Polizza) VELOCITÀ(ID_RPP, ID_Tipologia, V_Media) 2. Integrazione schemi Si Identificano i concetti comuni tra i due schemi concettuali identificando: Eterogeneità: sono relative allo stesso oggetto (concetto) nei due schemi, vanno rilevate e risolte nello schema globale. Stesso oggetto rappresentato con proprietà differenti Corrispondenza interschema: sono proprietà relative a oggetti diversi nei due schemi e vanno rilevate e rappresentate nello schema globale. Relazioni semantiche tra due oggetti O1 e O2 rappresentati in schemi differenti. Si integrano i due schemi concettuali in un solo globale, integrando le parti comuni. In modo tale da ricavare lo schema concettuale globale Eterogeneità e Corrispondenze interschema Schema OCB Schema BDA Tipo Risolta come: Assicurato.Comune Comune Eterogeneità strutturale Via.Comune Comune Eterogeneità strutturale Comune.Nome Comune.Nome_Comune Eterogeneità Sinonimia Nome Polizza.Targa_Veicolo Polizza.Veicolo Eterogeneità In OCB ho Attributo, in BDA è chiave esterna riferita al veicolo. Polizza, Assicurato, Sinistro Polizza, Assicurato, Sinistro Corrispondenza Scegliamo di rappresentare le informazioni contenute in BDA e OCB Scegliamo di rappresentare Comune come entità Schema concettuale Globale Schema Logico Globale TIPOLOGIA(ID_Tipologia, Nome, Limite_Velocità) OPERATORE(User, Nome, Cognome, Email, Password, Tipo_Op) VIA(ID_Via, Nome, Comune) TRONCO_VIA(ID_TroncoVia, ID_Via, ID_Tipologia) ASSICURATO (ID_Assicurato, Nome, Cognome, CF, Data_Nascita, Telefono CAP, R) POLIZZA(ID_Polizza, Targa, Data_Rinnovo, Data_Stipula, Premio, Assicurato, OP_Creaz_Polizza, OP_UltimoAgg) SINISTRO(ID_Sinistro, Data, Ora, Polizza, ID_Segn, OP_Creaz_Sinistro, Op_Gest_Sinistro, Luogo) COMUNE (CAP, Nome_Comune, Regione_Comune) BB(IMEI, Data_Attivazione, Soglia, Targa) RILEVAMENTO_COLLISIONE(ID_RilColl, X, Y, Z, Acc_G, IMEI) RILEVAMENTO(ID_Ril, Latitude,Longitude, Speed, IMEI, ID_TroncoVia) SEGNALAZIONE(ID_Segn, Data, ID_RilColl, ID_Ril, IMEI) PERCORSO(ID_Percorso, Data_Start, Data_Stop, KM_Totali, P_Percorso, ID_ReportMensile) KV(ID_Percorso, ID_Tipologia, V_Media_Percorso, KM_Idonei) REPORT_PERCORSI_POLIZZA(ID_RPP, Anno, Mese, K, P, Polizza) VELOCITÀ(ID_RPP, ID_Tipologia, V_Media) VEICOLO (Targa, Marca, Modello, Data_Immatricolazione, Categoria) 3. Progettazione Logica - Mapping I Mapping sono delle Viste SQL che permettono di mettere in relazione i vari SLi con lo schema globale. È stato richiesto l’utilizzo di GAV (Global as View), ovvero lo schema Globale andrà a contenere l’unione degli SLi (andando a risolvere come al passo precedente le Corrispondenze ed Eterogenità. Mapping – Schema Globale per Assicurato CREATE VIEW Assicurato AS( (SELECT A.ID_Assicurato as ID_Assicurato, A.Nome_Assicurato as Nome, A.Cognome_Assicurato as Cognome, A.CF_Assicurato as CF, A.Data_Nascita as Data_Nascita, A.Telefono as Telefono, A.CAP as CAP, O.R as R FROM BDA.Assicurato as A, OCB.Assicurato as O) WHERE A.ID_Assicurato=O.ID ) Mapping – Schema Globale per Polizza CREATE VIEW Polizza AS( (SELECT P.ID_Polizza as ID_Polizza, P.Targa as Targa, P.Data_Rinnovo as Data_Rinnovo, P.Data_Stipula as Data_Stupula, P.Premio as Premio, P.ID_Assicurato as Assicurato, P1.OP_Creaz_Polizza as OP_Creaz_Polizza, P1.Op_UltimoAgg as OP_UltimoAgg FROM BDA.Polizza as P, OCB.Polizza as P1 WHERE P.ID_Polizza = P1.ID_Polizza ) Mapping – Schema Globale per Sinistro CREATE VIEW Sinistro AS( (SELECT S.ID_Sinistro as ID_Sinistro, S.Data as Data, S.Ora as Ora, S1.ID_Polizza as Polizza, S1.ID_Segn as ID_Segn, S1.OP_Creaz_Sinistro as OP_Creaz_Sinistro, S1.Op_Gest_Sinistro as Op_Gest_Sinistro, S.Luogo as Luogo ) FROM BDA.Sinistro as S, OCB.Sinistro as S1 WHERE S.ID_Sinistro = S1.ID_Sinistro Mapping – Schema Globale da BDA CREATE VIEW Comune AS( (SELECT C1.CAP as CAP, C.Nome_Comune AS Nome, C.Regione_Comune AS Regione FROM BDA.Comune as C, OCB.Assicurato as C1 WHERE C.CAP = C1.CAP) ) CREATE VIEW Veicolo AS( (SELECT V1.Targa_Veicolo AS Targa, V.Data_Immatricolazione as Data_Immatricolazione, V.Marca as Marca, V.Modello as Modello, V.Categoria as Categoria FROM BDA.Veicolo as V, OCB.Polizza as V1 ) WHERE V.Targa=V1.Targa_Veicolo) Mapping – Schema Globale da OCB CREATE VIEW Tipologia AS( (SELECT * FROM OCB.Tipologia) ) CREATE VIEW Via AS( (SELECT * FROM OCB.Via) ) CREATE VIEW Opertatore AS( (SELECT * FROM OCB.Operatore) ) CREATE VIEW Tronco_Via AS( (SELECT * FROM OCB.Tronco_Via) ) CREATE VIEW Rilevamento_Collisione AS( (SELECT * FROM OCB.Rilevamento_Collisione) ) CREATE VIEW BB AS( (SELECT * FROM OCB.BB) ) CREATE VIEW Report_Percorsi_Polizza AS( (SELECT * FROM OCB.Report_Percorsi_Polizza) ) CREATE VIEW Velocità AS( (SELECT * FROM OCB.Velocità) ) Mapping – Schema Globale da OCB CREATE VIEW KV AS( (SELECT * FROM OCB.KV) ) CREATE VIEW Rilevamento AS( (SELECT * FROM OCB.Rilevamento) ) CREATE VIEW Percorso AS( (SELECT * FROM OCB.Percorso) ) CREATE VIEW Segnalazione AS( (SELECT * FROM OCB.Segnalazione) Query sullo Schema Globale La query ideata per il problema è: «Visualizzare il premio di tutti gli assicurati (nome, cognome) che hanno percorso almeno 1000 km nel mese di Gennaio 2016» SELECT A.Nome, A.Cognome, P.Premio FROM Polizza as P, Report_Percorsi_Polizza as RPP, Assicurato as A WHERE P.Assicurato = A.ID_Assicurato AND P.ID_Polizza=RPP.Polizza AND RPP.Mese=«Gennaio» AND RPP.Anno=«2016» AND RPP.K >’1000’ Query - Unfolding SELECT A.Nome, A.Cognome, P.Premio FROM WHERE (SELECT A.ID_Assicurato, A.Nome, A.Cognome, P.Premio FROM BDA.Assicurato as A JOIN BDA.Polizza as P ON A.ID_Assicurato = P.ID_Assicurato), (SELECT * FROM OCB.Report_Percorsi_Polizza)AS RPP, RPP.Polizza = P.ID_Polizza AND OCB.RPP.Mese=«Gennaio» AND OCB.RPP.Anno=«2016» AND OCB.RPP.KM>1000 Modello di rappresentazione dati non relazionale - NoSQL Poiché i database relazionali RDBMS presentano numerose limitazioni, si sono largamente diffusi i database non relazionali NRDBMS. I vari database non relazionali vengono raggruppati nel NoSQL (NotOnly SQL). Fra i differenti approci, proponiamo l’utilizzo dell’approccio Document Based, che estende il modello Key-Value, per la rappresentazione dei dati del database OCB. I documenti sono caratterizzati da una chiave unica e perciò vengono indirizzati nel database per mezzo di questa. Rispetto ai normali database relazionali basati sulle tabelle, è possibile salvare i dati in un documento, che può contenere un numero illimitato di campi. In questo modo non ci possono essere campi inutilizzati poiché ogni documento contiene solo gli attributi effettivamente utilizzati. MongoDB Fra le diverse possibilità, scegliamo MongoDB, un approccio Document-Based. Il modello non relazionale MongoDB utilizza documenti in formato JSON, permettendo di avere uno schema più dinamico e flessibile e una integrazione dei dati più semplice e veloce. L’assenza di tabelle permette ai database non relazionali di non utilizzare il JOIN, ottenendo risultati in tempi ridotti. Questo modello consente anche una scalabilità orizzontale, ovvero è possibile aggiungere al database nuove risorse e/o aggiungere al cluster nuovi nodi, gestirli in modo semplice senza compromettere il funzionamento del sistema. MongoDB Vantaggi: Document-oriented: le informazioni vengono memorizzate in un singolo documento. Performance: tempi di risposta più rapidi in quanto non utilizza le join. Scalabilità: sfrutta la scalabilità orizzontale. Storage: permette di bilanciare il carico applicativo.