Architetture del Software e dei Dati A.A. 2015/16 Sistema di Osservazione del Comportamento degli Automobilisti Lorenzo Fenili 763082 Silvio Messi 763076.

Slides:



Advertisements
Presentazioni simili
Architettura del sistema
Advertisements

Tecnologia delle basi di dati: Strutture fisiche di accesso
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D1 Architetture di rete.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
Unità D1 Architetture di rete.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D1 Architetture di rete.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Una Introduzione alle Basi di Dati
DOCUMENTAZIONE DI SCHEMI E/R
Biglietti e Ritardi: schema E/R
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Basi di Dati prof. A. Longheu
4 – Progettazione – Introduzione e Modello E-R
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
ACCESS.
ESEMPI DI ARCHIVI DI DATI
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
L’uso dei database in azienda
IL PATRIMONIO DI DATI - LE BASI DI DATI. Il patrimonio dei dati Il valore del patrimonio di dati: –Capacità di rispondere alle esigenze informative di.
LA PROGETTAZIONE LOGICA
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Partizionamento/accorpamento di concetti
Daniel Stoilov Tesi di Laurea
M.A.E.A.I. Mobile Agent and Enterprise Architecture Integration Il gestore delle politiche Valerio Siri Reti di Calcolatori LS Docente: Antonio Corradi.
Implementare un modello di dati
Esercitazione di Basi di Dati
INFORMATICA Corso Base Modulo G: I DataBase  Access.
L’algebra relazionale
Windows Intune, la soluzione Cloud per la gestione dei PC in azienda Lorenzo Santagata Product Marketing Manager Windows Client Microsoft 15 dicembre 2010.
Progetto RETE SME ALESSANDRO PASSONI
Progettare un database
Dottorato di ricerca Nuove Tecnologie e Informazione Territorio – Ambiente Nozioni fondamentali di Basi di Dati Seminario interno.
Introduzione a Oracle 9i
IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
DATABASE Introduzione
Lazienda SC Informatica si occupa della progettazione e della realizzazione di sistemi informatici dedicati alle farmacie. Fornisce inoltre un servizio.
Corso di Laurea in Ingegneria per l’Ambiente e il Territorio Informatica per l’Ambiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
ITCG “V. De Franchis” - PON FSE Modulo G/1 l’informatica”
I DATABASE.
I DBMS BASI DI DATI (DATABASE) Insieme organizzato di dati utilizzati
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Dati e DBMS DBMS relazionali SQL Progettazione di un DBMS Normalizzazione Programma del Corso di Basi di Dati.
Basi di dati Maria Laura Alessandroni
Progettazione di dati e applicazioni per il Web S. Ceri, P. Fraternali, A. Bongio, M. Brambilla, S. Comai, M. Matera Copyright © The McGraw-Hill.
Basi di dati distribuite Prof. M.T. PAZIENZA a.a
Riunione conclusiva della prima fase del progetto Dipartimento di Scienze dell’Ingegneria dell’Università di Modena e Reggio Emilia.
Basi di dati e Relazioni Uno schema di relazione R(X) è costituito da un simbolo (nome della relazione) R e da una serie di attributi X={A 1, A 2, …, A.
1 Esami Esame scritto: Tra 21 e 25 domande: 20 domande chiuse (20 punti),  5 domande aperte (10 punti) 1½ ore Esame orale/applicativo: Esercizi usando.
Lezione 5 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
Eprogram informatica V anno.
Cloud informatica V anno.
Sviluppo ed implementazione di un software per il car pooling
ICT e Sistemi informativi Aziendali Materiale di supporto alla didattica.
1. CASO BIBLIOTECA ANALISI DEI REQUISITI Si vuole automatizzare la gestione prestiti dei libri di una biblioteca personale. La progettazione deve tener.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
I DONEITÀ DI C ONOSCENZE E C OMPETENZE I NFORMATICHE ( A – D ) Un database è un insieme di record (registrazioni) e di file (archivi) organizzati per uno.
Laurea Magistrale in Informatica Architetture basi di dati A.A Docente: Prof. Carlo Batini Proprieta’ e caratteristiche strutturali dei sistemi.
Architetture del software e dei dati Appello del 24/2/2016 Università degli Studi di Milano-Bicocca Dipartimento di Informatica Sistemistica e Comunicazione.
Architetture software e dei dati Appello 24/02/2016 Osservazione del Comportamento degli Automobilisti (OCA) MONTEROSSO FEDERICO MONTEVECCHI.
Sistema di osservazione del comportamento degli automobilisti Progetto di Architetture del software e dei dati 2015/2016 Alessandro Banfi Camillo.
APPELLO 12/02/2014 STUDENTE: LUCA GRAZIOLI MATRICOLA: Progetto di Architetture del software e dei dati.
DDBMS Distributed database system. DDB Una base di dati distribuita è una collezione di dati che appartengono logicamente allo stesso sistema informativo.
Architettura del Software e dei Dati Sistema di Osservazione del Comportamento degli Automobilisti (OCA) Gruppo BPS Michele Bellini Daniele Prevedello.
Transcript della presentazione:

Architetture del Software e dei Dati A.A. 2015/16 Sistema di Osservazione del Comportamento degli Automobilisti Lorenzo Fenili Silvio Messi

Assunzioni La compagnia di assicurazioni che utilizza il sistema opera a livello regionale (<=500 mila assicurati), e può avere più sedi distribuite sul territorio. Per la rilevazione della collisone si utilizzano esclusivamente i dati forniti dall’accelerometro (ACC). In particolare abbiamo assunto che il sensore fornisca un unico valore di accelerazioni e che se esso supera una determinata soglia allora siamo certi che il veicolo ha subito una collisone. Sul veicolo dell’assicurato viene montato un dispositivo (che contiene GPS, TAC e ACC) che ha un identificatore univoco.

Stime temporali Veicolo (in media 2 ore di viaggio al giorno) Campionamento ACC ogni 0,1 sec Campionamento GPS e TAC ogni 10 sec = 720 campioni al giorno In media 50 collisioni di veicoli al giorno Assicurato (sono circa 500mila) Visualizzazione informazioni assicurato almeno una volta al mese Polizza (sono circa 250mila) Scadenze polizze = /365 = 685 al giorno Visualizzazione informazione polizza almeno una volta al mese

ARCHITETTURA DEL SOFTWARE

ARCHITETTURA DEL PROBLEMA

Use Case Diagram

Class Diagram

Activity Diagram - Acquisizione dati veicolo

Activity Diagram - Salvataggio K-V-P giornaliero

Activity Diagram - Rilevamento Collisione

Activity Diagram - Organizzazione assistenza

Activity Diagram - Calcolo livello di rischio

Activity Diagram - Ridefinizione premio assicurazione

Activity Diagram - Visualizzazione informazioni assicurato/polizze

ARCHITETTURA LOGICA

Partizionamento - 1

Partizionamento - 2

Gestore acquisizione dati Multiplicity: # veicoli

Gestore rilevazione collisioni Multiplicity : # veicoli

Gestore collisioni Multiplicity : # 1

Gestore K-V-P Multiplicity : # 1

Gestore calcolo livello di rischio Multiplicity : # 1

Gestore ridefinizione polizze Multiplicity : # sedi locali

Gestore visualizzazione informazioni Multiplicity : # sedi locali

Footprint del partizionamento

Abstraction (50): alcuni componenti hanno a che fare con diversi livelli di astrazione dell’informazione (l’esempio più lampante è il componente che si occupa del calcolo del livello di rischio). Complexity e Frequency (10): i componenti sono stati partizionati in modo da essere ben omogenei per quanto riguarda queste due dimensioni. Delay (30): abbiamo un vicolo temporale abbastanza stringente tra due componenti (rilevazione collisioni e gestore collisioni). Location (20): la location degli attori con cui i componenti hanno ha che fare è omogenea. Intra Flows(20): il flusso di informazioni tra istanze dello stesso componente è assente (si pensi al componete gestore rilevazione collisioni). Extra Flows (30): il flusso di informazioni tra i componenti e l’ambiente esterno è discreto. Sharing(20): la condivisione delle informazioni tra componenti è limitata solo ad alcune informazioni (K-V-P). Control Flows(10): il flusso di controllo tra i vari componenti è quasi del tutto assente.

ARCHITETTURA CONCRETA

Sequence Diagram - Acqusizione dati veicolo

Sequence Diagram- Rilevazione collisioni / Organizzazione assistenza

Sequence Diagram - Ricezione dati veicolo / Calcolo K-V-P giornaliero

Sequence Diagram - Calcolo livello di rischio

Sequence Diagram - Visualizzazione informazioni assicurato / polizze

Sequence Diagram - Ridefinizione polizza

DEPLOYMENT DIAGRAM

SCELTE TECNOLOGICHE

Comunicazioni

Black box sul veicolo Il dispositivo che viene installato sugli autoveicoli degli assicurati non necessita di una grande potenza di calcolo. Deve essere in grado di gestire i 3 sensori e immagazzinare un numero ridotto di informazioni. Proprio quest’ultima necessita ci ha spinto a scartare il noto microcontrollore Arduino e a scegliere invece il Raspberry Pi. Questo modulo, infatti, monta uno slot per le SD card e dunque è possibile espandere senza problemi la memoria del device. Sono di facile reperibilità ed hanno un prezzo contenuto i sensori (GPS, ACC, TAC) per tale device ed inoltre è possibile trovare una vasta documentazione per il loro utilizzo. Per la comunicazione con la sede centrale basta equipaggiare il con un modulo 3G.

Sede centrale Gran parte del carico computazionale viene gestito nelle sede centrale. Bisogna dunque prevedere un apparato HW/SW che sia in grado di rispondere alle esigenze del sistema. Ci sono due possibili soluzioni: utilizzo di tecnologie in Cloud: tale soluzione ha a suo favore tutti vantaggi tipici dell’utilizzo del Cloud ossia: costi di gestione HW ridotti se non addirittura inesistenti, possibilità di scalare senza spese eccessive. utilizzo di server proprietari: questa soluzioni comporta costi maggiori in termini di risorse umane e gestione apparati HW, ma garantisce la privatezza dei dati e permette di non essere vincolati in scelte di soluzioni SW. La scelta di una o dell’altra soluzione è legata principalmente ai vincoli di budget.

Stima dei costi – Risorse HW/SW ProdottoCostoQuantitàTot. Raspberry Pi50€ € Sensoristica (GPS + TAC + ACC)100€ € Modulo 3G30€ € Costo piano tariffario5€/mese €/mese Costo installazione server € Costo server(soluzione Cloud)200€/mese1 Le ultime due voci della tabella sono mutualmente esclusive, in base alla tipologia di soluzione che viene utilizzata per l’acquisto dei server nella sede centrale. Per quanto riguarda il SW, in particolare il DBMS per OCB, si è deciso di utilizzare una soluzione open, cosi da abbattere I costi per le licenze.

Stima dei costi – Risorse umane DescrizioneQuantitàCosto Unitario/MeseTotale Project Manager12.500€ Database Administrator12.000€ Sistemista12.000€ Sviluppatori51.500€7.500€

Stima dei costi - totale In definitiva la stima di massima dei costi per il sistema risulta essere: Blackbox: € € mensili Server ufficio centrale: Soluzione proprietaria : € Soluzione Cloud : 200€/mese Risorse umane: € mensili Sedi locali: si assume che nelle sedi locali siano già presenti postazioni PC

ARCHITETTURA DEI DATI

Schema logico BDA Assicurato(CF, nome, cognome, indirizzo, comuneResidenza, dataDiNascita, numeroDiTelefono, iban) Comune(comune, provincia) Provincia(provincia, regione) Polizza(idPolizza, assicurato, targaVeicolo) StoricoPolizza(idPolizza, dataStipula, dataScadenza, premio) Sinistro(idPolizza, assicurato, data, comuneSinistro) I vincoli referenziali sono stati rappresentanti tramite l’ausilio dei colori.

Reverse engineering - 1 Associare alle tabelle con chiavi semplici delle entità, e associare la chiave a identificatori. EnititàIdentificatore AssicuratoCF PolizzaidPolizza Comunecomune Provinciaprovincia Le entità Comune e Provincia possono essere considerate, nello schema concettuale, come un unica entità. Nello schema logico sono divise per questioni di normalizzazione. Inoltre, anche se essa non ha un chiave “semplice”, nello schema globale ci sarà anche l’entità StoricoPolizze che non si presta ad essere una relazione.

Reverse engineering - 2 Utilizzare i vincoli di integrità referenziale per individuare le relationships. ChiaveTabella referenziata Assicurato.comuneResidenzaComune Comune.provinciaProvincia Polizza.assicuratoAssicurato StoricoPolizza.idPolizzaPolizza Sinistro.idPolizzaPolizza Sinistro.assicuratoAssicurato Sinistro.comuneSinistroComune

Reverse engineering – 2.1 EntitàRelationshipEntità AssicuratocomuneResidenzaComune AssicuratostipulaPolizza StoricoPolizzahaStoricoPolizza Tra le entità Assicurato, Comune e Polizza, in base ai vincoli referenziali, abbiamo pensato di introdurre la relationship “Sinistro”.

Reverse engineering - 3 Utilizza gli attributi che descrivono diversi oggetti per individuare IS_A e generalizzazioni. Nello schema logico non sono presenti attributi che inducono ad introdurre relazioni IS_A o generalizzazioni nello schema concettuale.

Schema concettuale DBA

Schema concettuale OCB

Schema logico OCB Assicurato(idAssicurato, livelloDiRischio, dataCalcoloLivelloDiRischio) Polizza(idAssicurato, veicolo, dataDiScadenza, premioPolizza) Veicolo(targa, modello, cilindrata idDevice) K-V-PGiornaliero(idKVP, veicolo, timestamp, K, P) VPerTGiornaliero(idKVP, T, V) Collisione(idCollisione, veicolo, timestamp, accelerazione, latitudine, longitudine) Segnalazione(idCollisione, timestamp, idAssicurato)

Eterogeneità e corrispondenze BDAOCBTipologia C1Assicurato Corrispondenza interschema C2Polizza Corrispondenza interschema E1DBA.Polizza.targaVeicolo OBC.Polizza.veicolo Eterogeneità Livello di Schema – stesso concetto diverso tipo (in DBAattributo, in OCB entità) E2DBA.Assicurato.CFOBC.Assicurato.idAssicuratoSinonimia: Diverso nome ma stesso concetto

Integrazione schemi Le corrispondenze interschema C1 e C2 vengono risolte mantenendo le entità BDA.Assicurato e BDA.Polizza, che vengono “arrichite” con gli attributi delle corrispondenti entità in OCB L’eterogeneità E1 viene risolta mantenendo l’entità OCB.Veicolo Per quanto riguarda l’eterogeneità E2, si è deciso di mantenere l’identificatore CF

Schema concettuale BDG (globale)

Schema logico BDG Assicurato(CF, nome, cognome, indirizzo, comuneResidenza, dataDiNascita, numeroDiTelefono, iban, livelloDiRischio, dataCalcoloLivelloDiRischio) Comune(comune, provincia) Provincia(provincia, regione) Polizza(idPolizza, assicurato, veicolo, dataDiScadenza, premioPolizza) StoricoPolizza(idPolizza, dataStipula, dataScadenza, premio) Sinistro(idPolizza, assicurato, data, comuneSinistro) Veicolo(targa, modello, cilindrata idDevice) K-V-PGiornaliero(idKVP, veicolo, timestamp, K, P) VPerTGiornaliero(idKVP, T, V) Collisione(idCollisione, veicolo, timestamp, accelerazione, latitudine, longitudine) Segnalazione(idCollisione, timestamp, idAssicurato)

Mapping GAV - 1 CREATE VIEW Assicurato (CF, nome, cognome, indirizzo, comuneResidenza, dataDiNascita, numeroDiTelefono, iban, livelloDiRischio, dataCalcoloLivelloDiRischio ) AS SELECT T1.CF, T1.nome, T1.cognome, T1.indirizzo, T1.comuneResidenza, T1.dataDiNascita, T1.numeroDiTelefono, T1.iban, T2.livelloDiRischio, T2.dataCalcoloLivelloDiRischio FROM BDA.Assicurato AS T1 LEFT JOIN OCB.Assicurato AS T2 ON T1.CF = T2.idAssicurato CREATE VIEW Polizza (idPolizza, assicurato,veicolo, dataScadenza, premioPolizza) AS SELECT T1.idPolizza, T1.assicurato, T1.targaVeicolo, T2.dataScadenza, T2.premioPolizza FROM BDA.Polizza AS T1 LEFT JOIN OCB.Polizza AS T2 ON T1.idPolizza = T2.idPolizza CREATE VIEW Veicolo (targa, modello, cilindata, idDevice) AS SELECT T1.targaVeicolo, T2.modello, T2.cilindarata, T2.idDevice FROM BDA.Polizza AS T1 LEFT JOIN OCB.Veicolo AS T2 ON T1.targaVeicolo = T2.targa

Mapping GAV - 2 CREATE VIEW Comune (comune, provincia) AS SELECT comune, provincia FROM DBA.Comune CREATE VIEW Provincia (provincia, regione) AS SELECT provincia, regione FROM DBA.Provincia CREATE VIEW StoricoPolizza (idPolizza, dataStipula, dataScadenza, premio) AS SELECT idPolizza, dataStipula, dataScadenza, premio FROM DBA.StoricoPolizza CREATE VIEW Sinistro (idPolizza, assicurato, data, comuneSinistro) AS SELECT idPolizza, assicurato, data, comuneSinistro FROM DBA.Sinistro

Mapping GAV - 3 CREATE VIEW K-V-PGiornaliero (idKVP, veicolo, timestamp, K, P) AS SELECT idKVP, veicolo, timestamp, K, P FROM OCB.K-V-PGiornaliero CREATE VIEW VPerTGiornaliero(idKVP,T, V) AS SELECT idKVP, T, V FROM OCB.VPerTGiornaliero CREATE VIEW Collisione (idCollisione, veicolo, timestamp, accelerazione, latitudine, longitudine) AS SELECT idCollisione, veicolo, timestamp, accelerazione, latitudine, longitudine FROM OCB.Collisione CREATE VIEW Segnalazione (idCollisione, timestamp, idAssicurato) AS SELECT idCollisione, timestamp, idAssicurato FROM OCB.Segnalazione

Query “Trovare il veicolo che ha percorso più km nell’ultimo anno; mostrare quanti kilometri ha percorso, la sua targa e il nome e cognome della persona che lo ha assicurato. ”

Query SELECT A.Nome, A.Cognome, sommaKmPerVeicolo2.veicolo, massimoDelleSomme.max FROM ( SELECT MAX (somma) AS max FROM ( SELECT veicolo, SUM (K) AS somma FROM BDG.K-V-PGiornaliero WHERE timestamp>= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY(veicolo) ) AS sommaKmPerVeicolo1 ) AS massimoDelleSomme JOIN ( SELECT veicolo, SUM (K) AS somma FROM BDG.K-V-PGiornaliero WHERE timestamp>= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY(veicolo) ) AS sommaKmPerVeicolo2 ON sommaKmPerVeicolo2.somma = massimoDelleSomme.max JOIN BDG.Polizza AS P ON P.veicolo = sommaKmPerVeicolo2.veicolo JOIN BDG.Assicurato AS A ON P. CF = A.CF

Unfolding - 1 SELECT A.Nome, A.Cognome, sommaKmPerVeicolo2.veicolo, massimoDelleSomme.max FROM ( SELECT MAX (somma) AS max FROM ( SELECT veicolo, SUM (K) AS somma FROM OCB.K-V-PGiornaliero WHERE timestamp>= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY(veicolo) ) AS sommaKmPerVeicolo1 ) AS massimoDelleSomme JOIN ( SELECT veicolo, SUM (K) AS somma FROM OCB.K-V-PGiornaliero WHERE timestamp>= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY(veicolo) ) AS sommaKmPerVeicolo2 ON sommaKmPerVeicolo2.somma = massimoDelleSomme.max (continua)

Unfolding - 2 JOIN ( SELECT T1.idPolizza, T1.assicurato, T1.targaVeicolo AS veicolo, T2.dataScadenza, T2.premioPolizza FROM BDA.Polizza AS T1 LEFT JOIN OCB.Polizza AS T2 ON T1.idPolizza = T2.idPolizza ) AS P ON P.veicolo = sommaKmPerVeicolo2.veicolo JOIN ( SELECT T1.CF, T1.nome, T1.cognome, T1.indirizzo, T1.comuneResidenza, T1.dataDiNascita, T1.numeroDiTelefono, T1.iban, T2.livelloDiRischio, T2.dataCalcoloLivelloDiRischio FROM BDA.Assicurato AS T1 LEFT JOIN OCB.Assicurato AS T2 ON T1.CF = T2.idAssicurato )AS A ON P. CF = A.CF

NoSQL Il modello di rappresentazione dati NoSQL che più si adatta al sistema OCA è quello document based. Per come è stata progettata la base di dati, infatti, l’esecuzione di alcune query porta all’utilizzo di un gran numero di join. Di conseguenza, l’utilizzo della rappresentazione document based, ci farebbe risparmiare in termini di tempo e guadagnare in termini di prestazioni dato che le tecnologie basta su questa rappresentazione non fanno uso dell’operatore join. Un altro motivo che ci ha spinto a preferire questo paradigma rispetto ad altri, è legato al fatto che la rappresentazione delle informazioni del domino dell’applicazione, ossia documenti cartacei che rappresentano assicurati e polizze, si avvicina di più al modello document based che al modello relazionale. La tecnologia più diffusa che implementa il modello NoSQL da noi scelto è MongoDB che dispone di molti vantaggi: File Storage: MongoDB può essere utilizzato anche come file system, ai file possono essere associati i metadati su cui è possibile associare degli indici full-tex Bilanciamento, replicazione dei dati e affidabilità: MongoDB scala orizzontalmente utilizzando lo sharding e questo trae vantaggio sul bilanciamento e di conseguenza sull’affidabilità Query ad hoc: è possibile effettuare query per campi, intervalli e regular expression Inidicizzazione: gli indici di MongoDB sono similari a quelli dei tradizionali RDBMS, quindi ogni campo può essere indicizzato Di seguito un esempio di informazioni della basi di dati OCB, modellate utilizzando MongoDB, in cui viene rappresentata una polizza con l’assicurato e il veicolo.

“Assicurato”:{ “idAssicurato”:”3”, “livelloDiRIschio”:”5”, “dataCalcoloLivelloDiRIschio”:”22/01/2016”, Polizze:[ { “dataDiScadenza”:”27/02/2016”, “premioPolizza”:”600”, “veicolo”:{ “targa”:”BC475PU”, “modello”:”Clio Renault”, “cilindrata”:”1500” } }, { “dataDiScadenza”:”11/12/2016”, “premioPolizza”:”450”, “veicolo”:{ “targa”:”BK413GM”, “modello”:”FIAT Punto”, “cilindrata”:”1200” } ] }

Adottando il modello di rappresentazione dati document based si potrebbe rivedere l’architettura dati mostrata precedentemente nel diagramma deployement. Invece di avere un architettura con un database centralizzato si potrebbe introdurre un architettura distribuita, con un database per ogni sede, nel quale vengono memorizzate solo le informazioni degli assicurati, e relative polizze, prese in carico dalla sede, questo sfruttando il fatto che le informazione legate ad un assicurato sono modellate come un unico documento.