Full Transcript

1. FONDAMENTI E TECNICHE DI MODELLAZIONE NELLE BASI DI DATI Le BASI DI DATI sono un insieme organizzato di DATI, solitamente memorizzati e accessibili elettronicamente da un SISTEMA INFORMATICO. Questi dati sono estremamente utili perché grazie ai sistemi informatici vengono racchiusi all'int...

1. FONDAMENTI E TECNICHE DI MODELLAZIONE NELLE BASI DI DATI Le BASI DI DATI sono un insieme organizzato di DATI, solitamente memorizzati e accessibili elettronicamente da un SISTEMA INFORMATICO. Questi dati sono estremamente utili perché grazie ai sistemi informatici vengono racchiusi all'interno di una memoria che ci permette di accrescere la conoscenza umana. Un SIMBOLO è un segno fisico a cui si dà un qualche significato, mentre un DATO è un simbolo che rappresenta un’informazione. Un dato può essere atomico o composto da dati atomici e l'INFORMAZIONE è proprio un’elaborazione/organizzazione dei dati stessi. - I DATI NULL sono quei dati nel quale l’informazione è: - ASSENTE= l'informazione non è osservabile perché non esiste o è stata esclusa a priori - IGNOTA= l'informazione è presente, ma non è stata osservata - INAPPLICABILE= l'informazione sarebbe osservabile se non ci fossero dei vincoli imposti dalla realtà - Due concetti molto importanti sono: 1. SISTEMA INFORMATIVO, un insieme coordinato di risorse e processi per la gestione delle informazioni di un’organizzazione 2. SISTEMA INFORMATICO, insieme coordinato di risorse e processi per l’elaborazione automatica delle informazioni I due sono indipendenti l’uno dall’altro ma il sistema informatico garantisce l’automazione dei processi e la creazione di una memoria, ciò che caratterizza una base di dati. L’ATTRIBUTO è una caratteristica specifica o qualità di un’entità o di un oggetto, utilizzata per descriverlo o identificarlo, per esempio la “sella” è un attributo dell’entità “bicicletta” - La CLASSIFICAZIONE è il processo che attraverso l’unione degli attributi da vita ad un concetto, per esempio il concetto di bicicletta, ossia la classificazione degli attributi “sella”, “telaio”, “ruote”, “manubrio”. 1. l’INSIEME è una collezione di elementi che sono identificati o classificati sotto un unico concetto a causa delle loro proprietà comuni. Da ciò possiamo dire quindi che l’ESTENSIONE di un concetto da origine ad un insieme e l’INTENSIONE di un insieme da origine al concetto stesso. - Proprio grazie a questi ultimi concetti capiamo bene cos’è l’AGGREGAZIONE, ossia la combinazione di più elementi per formare un concetto complesso. Ritorniamo sull’esempio della bicicletta, il concetto di “bicicletta” può essere inteso come l’aggregazione dell’insieme dei “telai”, “ruote” e “manubrio”, in sostanza è l’operazione nel quale si combinano più entità per formare un’entità più complessa, tutto ciò enfatizza la relazione tra le parti e il tutto, mostrando come gli elementi individuali si uniscono per formare un concetto più grande. - GENERALIZZAZIONE, il concetto A è generalizzazione del concetto B se e solo se ogni elemento dell’estensione di B è anche elemento dell’estensione di A - SPECIALIZZAZIONE, il concetto B è la specializzazione del concetto A se e solo se il concetto A è la generalizzazione del concetto B Si parla di GENERALIZZAZIONE MULTIPLA quando i concetti A1,…,An sono generalizzazioni del concetto B; il concetto B è la specializzazione dei concetti A1,…,An se e solo se i concetti A1,…,An sono generalizzazioni del concetto B, e ogni elemento dell’estensione di B è anche elemento dell’estensione di A1,…,An. Il RIUSO DEI CONCETTI è l’applicazione di classificazione, aggregazione e generalizzazione per definire nuovi concetti, riprendendo sempre l’esempio della “bicicletta”, capiamo come attraverso le tecniche spiegate prima possiamo riusare i concetti di “telaio”, “ruota”, “manubrio” per formare il concetto di “bici” - RIUSO TOP-DOWN, si parte dai concetti più generali per poi arrivare a quelli specifici - RIUSO BOTTOM-UP, si parte dai concetti più specifici per arrivare a quelli più generali 2. MODELLI, SCHEMI E ARCHITETTURE NELLE BASI DI DATI Il MODELLO DI DATI è un insieme di tipi di dato per classificare, aggregare e generalizzare gli elementi. Esso è essenzialmente un insieme di regole e strumenti usati per organizzare e rappresentare i dati in un database. Lo SCHEMA è il risultato dell’applicazione di un modello di dati ad una realtà d’interesse. Esso viene utilizzato per memorizzare e organizzare i dati nel modo più efficace e efficiente ed è utili per essere sicuri di aver preso tutti e solo i dati che riguardano la nostra realtà d’interesse. - La REALTÀ D’INTERESSE è data dai concetti ai quali si applicano, anche mediante il riuso, la classificazione, l’aggregazione o la generalizzazione allo scopo di individuare le proprietà degli elementi che saranno organizzati, memorizzati e gestiti da un sistema informativo. - La nozione di modello e schema che abbiamo descritto può essere ulteriormente sviluppata, tenendo presenti altre dimensioni nella descrizione dei dati dati, cioè il livello concettuale, logico e fisico: 1. MODELLO CONCETTUALE 2. MODELLO LOGICO Il MODELLO ENTITÀ-ASSOCIAZIONE è un modello di dati concettuale che rappresenta i concetti in termini di entità e associazioni. Esso presenta una serie di costrutti che permettono di descrivere una realtà d’interesse attraverso quello che chiamiamo lo schema ER, in sostanza ci permette di capire come gli oggetti della nostra realtà di interesse sono collegati tra loro loro. - Il MODELLO ER è formato da: Un’ ENTITÀ, ossia un concetto che dobbiamo prendere in considerazione Un’ ASSOCIAZIONE, ossia un legame tra due o più entità Un ATTRIBUTO, ossia una proprietà di un’entità e/o associazione 1. Le ASSOCIAZIONI possono essere N-ARIE: - È importante capire alcune regole sulle associazioni, due entità possono essere collegati tra loro solo tramite associazioni, tra due entità deve esserci almeno un’associazione, un’entità con un dato nome appare solo una volta e persino un’associazione. 2. Gli ATTRIBUTI possono dividersi in semplici o composti, nel quale un attributo è formato da più attributi atomici. L’obiettivo è quello di trovare un attributo o insieme di attributi, chiamato “IDENTIFICATORE”, che ci permette di distinguere univocamente ogni elemento dell’entità. Gli attributi servono maggiormente a noi per distinguere un elemento da un altro dell’insieme, in quanto noi sappiamo che ogni entità rappresenta un insieme, per esempio l’entità “strumento musicale”, questo presenterà uno o più attributi che ci faranno capire a quale strumento ci stiamo riferendo. 3. RAPPORTI DI CARDINALITÀ I RAPPORTI DI CARDINALITÀ sono le coppie di numeri interi non negativi che specificano il numero di istanze di un’entità che possono essere associate con le istanze di un’altra entità attraverso una relazione o associazione, in pratica indicano il numero minimo e il numero massimo di elementi delle altre entità coinvolte nell’associazione che possono essere in relazione con quell’elemento. Es. due entità, musicista e strumento legati dall’associazione “suona” 4. IL PROGETTO DELLA BASE DI DATI PROGETTO: un progetto è un lavoro temporaneo intrapreso allo scopo di creare un prodotto, un servizio o un risultato unico. Un progetto è temporaneo perché ha un inizio ed una fine predefiniti. È unico perché il risultato finale è diverso da tutti gli altri risultati. Un progetto si distingue di conseguenza da quei prodotti di processi ripetibili perché esso non può essere ripetuto. - Qui di seguito elencheremo i principali elementi che compongono il progetto: - UTENTE: gli utenti possono essere le persone che andranno ad utilizzare la nostra base dei dati oppure possono essere dei committenti, cioè le persone che ci commissionano per progettare proprio questa base di dati. - REQUISITI INFORMATIVI E FUNZIONALI: i requisiti, che siano funzionali o informativi, sono una qualità che deve essere necessariamente vera per gli utenti, i requisiti informativi sono relativi alle informazioni che voglio memorizzare. Mentre i requisiti funzionali sono riferiti alle operazioni che posso fare sui dati. - VINCOLO: per vincolo si intendono dei legami definiti sui dati che devono essere mantenuti su tutte le operazioni che facciamo. - REALTÀ D’INTERESSE: la realtà di interesse l'abbiamo vista anche in precedenza e in questo caso si tratta dell'insieme dei requisiti e dei vincoli del progetto. - Un progetto ben fatto si sviluppa su quattro fasi: 1. Raccolta e analisi dei requisiti 2. Progettazione concettuale 3. Progettazione logica 4. Progettazione fisica - Infine elenchiamo i passi da seguire per una corretta analisi dei requisiti: 5. MODELLO ENTITÀ-ASSOCIAZIONE ESTESO Un MODELLO ENTITÀ-ASSOCIAZIONE ESTESO non è nulla di diverso da un modello ER classico, semplicemente ci aiuta a organizzare e comprendere meglio le informazioni del nostro database, fornisce dettagli più specifici sulle entità e sulle loro relazioni, in modo da rendere più facile per noi gestire e analizzare in modo completo questi dati. - Gli IDENTIFICATORI ESTERNI sono attributi di un’entità che fanno riferimento ad attributi di un’altra entità per definire un’identità unica, sono utilizzati quando gli identificatori interni da soli non sono sufficienti per garantire l’unicità. Essi estendono la capacità del modello di dati di gestire complessità reali, garantendo che ogni elemento possa essere identificato in modo chiaro e non ambiguo, sono quindi essenziali per quelle entità che presentano identificatori interni troppo “deboli”. - Il concetto di Identificatore esterno genera le ENTITÀ DEBOLI, ossia entità che non possono essere identificate unicamente dai propri attributi, ma hanno bisogno di dipendere da un’altra entità, detta “forte”, per essere identificate completamente. L’identificatore dell’entità debole è quindi formato dall’identificatore dell’entità forte e da altri eventuali attributi dell’entità debole, inoltre tutti gli attributi coinvolti nell’identificatore devono essere attraversati da un segmento che vada a tagliare anche la linea di collegamento con l’associazione, il quale collegamento dovrà anche avere rapporto di cardinalità (1;1). - Un’entità debole può essere trasformata in entità forte aggiungendo un’attributo fittizio che fa da identificatore: Questa soluzione è adottabile quando sono presenti nel nostro modello molte entità deboli e la gestione di tutti gli identificatori esterni diventa inefficiente, Tuttavia sono da gestire con cautela per il rischio di problemi di inconsistenza, per esempio nell’esempio del teatro due posti potrebbero avere diversi ID ma rappresentare lo stesso identico posto in uno specifico teatro. 6. GENERALIZZAZIONI E SPECIALIZZAZIONI NEL MODELLO DI DATI CONCETTUALE Le GENERALIZZAZIONI sono dei legami logici tra un’entità detta “genitore” e delle entità dette “figlie”, si dice che l’entità E1 è generalizzazione di E2 se ogni elemento di E2 è anche elemento di E1, di conseguenza quando E1 è generalizzazione di E2 allora E2 è una SPECIALIZZAZIONE di E1. - Si parla quindi di EREDITARIETÀ quando l’entità E1 è una generalizzazione dell’entità E2 e ogni elemento di E2 ha gli attributi e le associazioni di E1. In sostanza è una caratteristica delle generalizzazioni nel quale l’entità figlia eredita tutti gli attributi e associazioni dell’entità genitore, ciò significa che ogni elemento dell’entità figlia mantiene le proprietà dell’entità genitore. - Possiamo distinguere vari tipi di GENERALIZZAZIONE: 1. TOTALE, tutti gli elementi di un’entità generale sono elementi di almeno un’entità figlia 2. PARZIALE, c’è almeno un elemento di un’entità generale che non appartiene a nessuna entità specifica 3. ESCLUSIVA, un qualsiasi elemento di un’entità generale è elemento di al più una sola entità specifica 4. SOVRAPPOSTA, ovvero non esclusiva L’ACCORPAMENTO IN ENTITÀ consiste quindi nel raggruppare tutte le entità in un’unica entità, questo si può fare quando ci sono pochi elementi di entità specifiche e soprattutto è utile in quanto non sempre il linguaggio SQL riesce a riprodurre le nostre generalizzazioni, questo si divide in: 1. ACCORPAMENTO IN ENTITÀ GENERALE, nel quale le proprietà delle entità figlie sono incorporate nell’entità genitore 2. ACCORPAMENTO IN ENTITÀ SPECIFICA, dove le proprietà dell’entità genitore sono distribuite tra le figlie 3. TRADUZIONE IN ASSOCIAZIONE, dove la relazione di generalizzazione è trasformata in una serie di associazioni tra l’entità genitore e le entità figlie, mantenendo la flessibilità ma aumentando il numero di accessi al database 7. IL MODELLO RELAZIONALE Il MODELLO RELAZIONALE si basa sulla teoria degli insiemi e utilizza tabelle per rappresentare dati e relazioni tra di essi. Esso è caratterizzato dal requisito dell’indipendenza dei dati: 1. INDIPENDENZA LOGICA, la capacità di modificare lo schema logico di una base di dati senza dover modificare le applicazioni o i programmi che accedono a tali dati 2. INDIPENDENZA FISICA, la capacità di modificare lo schema fisico senza influenzare lo schema logico o le applicazioni - Il concetto fondamentale quando si parla di implementazione logica è la RELAZIONE, ossia un sottoinsieme del prodotto cartesiano di due o più insiemi - la struttura di una relazione si chiama SCHEMA DI UNA RELAZIONE R, si indica con R(A1,…,Aj,…,Am), dove R è il NOME DELLO SCHEMA e X=A1,…,Aj,…,Am è un insieme ordinato di attributi in cui Aj è il NOME DELL’ATTRIBUTO e dom(Aj) il suo DOMINIO, il numero m di attributi viene chiamato GRADO DI UNA RELAZIONE - Ogni elemento di una relazione si chiama N-UPLA o TUPLA, ossia una sequenza ordinata di valori di attributi, dove un ATTRIBUTO è la coppia (nome, tipo di dato) - Una ISTANZA DI RELAZIONE r di uno schema R(X) è un insieme di tuple nel 2uale il numero di elementi n della relazione r è la CARDINALITÀ DI r - Le relazioni vengono mostrate attraverso TABELLE dove ogni riga corrisponde ad una tupla e ogni colonna ad un attributo, nella tabella possono essere presenti dei valori NULL, che denotano un’assenza di informazione dovuta al fatto che l’attributo potrebbe essere sconosciuto, il valore esiste ma non è disponibile oppure l’attributo non è applicabile alla tupla in considerazione. Il modello relazionale è soggetto ad una serie di predicati, o meglio, VINCOLI, che permettono di eliminare errori che potrebbero portare ad inconsistenza di una singola tupla o di tutto lo schema relazionale, questi vincoli possono essere inerenti al modello di dati relazionale, per il quale bisogna fare riferimento alla definizione matematica, oppure vincoli dello schema, ossia: 1. VINCOLI INTRA-RELAZIONALI, ossia vincoli che vengono verificati sulla singola istanza di uno schema di relazione, fino ad arrivare al singolo valore di una tupla di un’istanza - Vincoli di dominio, specificano il dominio di appartenenza per ogni attributo, che determina il tipo di dati - Vincoli di chiave, determinano un insieme di attributi che univocamente identificano le tuple in una relazione, essi garantiscono che i dati siano accurati, consistenti e accessibili 2. VINCOLI INTER-RELAZIONALI - Vincolo di integrità referenziale, si tratta di un vincolo tra relazioni e garantisce che ogni valore di chiave esterna corrisponda a un valore di chiave primaria esistente, mantenendo la coerenza tra le relazioni È importante capire come avviene il passaggio da schema ER a schema logico/relazionale: - ENTITÀ FORTE, ogni entità forte diventa uno schema relazionale, dove gli attributi dell’entità diventano gli attributi dello schema e l’identificatore diventa la chiave primaria (ovviamente l’identificatore non può essere un valore null) - ASSOCIAZIONI, le associazioni vengono trasformate aggiungendo schemi relazionali che includono le chiavi primarie delle entità coinvolte e gli attributi dell’associazione. Le chiavi primarie composte e i vincoli di integrità referenziale sono applicati per collegare correttamente le entità. - ENTITÀ DEBOLE, si trasforma come per il caso di un’entità che partecipa con cardinali (1,1) con un’unica differenza nella costruzione della chiave primaria dello schema dell’entità debole. 8. OPERAZIONI CRUD E COSTO COMPUTAZIONALE Un’OPERAZIONE è un’attività svolta allo scopo di elaborare dei dati, dove l’elaborazione consiste nel trasferimento di dati da e verso l’unità centrale di elaborazione. - Le OPERAZIONI CRUD (Create, Retrive, Update, Delete) sono divise in : 1. LETTURA, copiare dati dalla memoria di massa alla memoria centrale 2. SCRITTURA, copiare i dati dalla memoria centrale alla memoria di massa 3. INTERATTIVA, breve scambio di dati con l’utente 4. BATCH, non prevede inserzioni con gli utenti ma ha tempi molto lunghi Una operazione estrae, combina o trasforma dati, che rappresentano informazioni, per produrne altri che a loro volta rappresentano altre informazioni. Un’operazione può essere: 1 - un’interrogazione 2 - una manipolazione Il COSTO COMPUTAZIONALE è il numero di accessi al disco necessari per eseguire un’operazione su un database, l’obiettivo è quindi quello di trovare lo schema che minimizza il totale delle lunghezze dei percorsi seguiti dal Sistema di Gestione di Basi di Dati (SGBD) per eseguire le operazioni. Il costo computazionale di un’applicazione è dato da: 1. NUMERO DI ACCESSI in lettura o scrittura per unità di tempo 2. Spazio di memoria della base di dati 3. La banda di rete utilizzata dall’SGBD In questo corso, per costo computazionale si intenderà solamente il numero di accessi. - Per il costo computazionale abbiamo quindi bisogno di: 1. Lo SCHEMA, dove le generalizzazioni devono essere sostituite, non sono necessari gli attributi e i rapporti di cardinali devono essere specificati per tutte le associazioni 2. I DATI, relativi alla tavola dei volumi e la tavola delle operazioni e in particolare la frequenza con cui esse sono eseguite per unità di tempo 9. LA MATRICE CRUD, RIDONDANZA, PARTIZIONAMENTO ED ACCORPAMENTO Una matrice Create, Retrieve, Update, Delete (CRUD) è lo strumento per verificare d’aver previsto tutte e sole le operazioni richieste e per stimare il costo computazionale delle singole operazioni e dell’applicazione. La matrice CRUD: riassume i dati essenziali delle operazioni fornisce una rappresentazione del costo computazionale complessivo di un’applicazione Una matrice CRUD è utile per trovare: dati mai creati (e che quindi non potranno mai essere gestiti) dati mai cancellati (e che continuano ad essere in gestione) dati mai modificati (e che non rispecchieranno l’evoluzione dell’informazione) dati mai letti (e che quindi non saranno mai resi noti) - Ristrutturazione dello schema concettuale Per ristrutturazione dello schema s’intende la modifica dello schema concettuale mediante due azioni: 1. controllo della ridondanza 2. partizionamento ed accorpamento. Il risultato della ristrutturazione dello schema è uno schema efficiente dal punto di vista del costo computazionale delle operazioni. Lo schema ristrutturato è traducibile in uno schema logico. - Controllo della ridondanza Si dice dato ridondante quello ottenibile dallo schema da almeno due cammini diversi. - Partizionamento ed accorpamento Partizionamento: Ogni elemento di E mantiene gli stessi vincoli posti dai rapporti per cui m1 = m2 = m e n1 = n2 = n; Accorpamento: Ogni elemento di E mantiene gli stessi vincoli posti dai rapporti, tuttavia, quelli di A1 possono essere più stringenti di quelli di A2 , di conseguenza, m = m′ 1 = m′ 2 = min{m1, m2} e n = n′ 1 = n′ 2 = max{n1, n2}. 10. CARATTERISTICHE DELLA TECNOLOGIA DELLE B.D.D., DATI SEMI-STRUTTURATI Caratteristiche della tecnologia delle basi di dati: Natura autodescrittiva: Una base di dati è autodescrittiva poiché il suo schema descrive completamente il contenuto, indipendentemente dai dati effettivi. Anche una base di dati vuota mantiene la sua semantica grazie allo schema, a differenza di una collezione qualsiasi. Viste multiple: Un Sistema di Gestione di Base di Dati (SGBD) consente la creazione di viste multiple, permettendo di accedere a sottoinsiemi di dati tramite sottoschemi senza duplicare le informazioni. Le viste offrono una prospettiva limitata sul panorama complessivo della base di dati. Condivisione dei dati e gestione dei conflitti: Il SGBD facilita l'uso condiviso dei dati tra più applicazioni, prevenendo conflitti, come nel caso di prenotazioni simultanee dello stesso posto. Questo è gestito tramite meccanismi di blocco temporaneo (commit) che garantiscono l'integrità dei dati. Controllo della ridondanza: Il controllo della ridondanza evita la duplicazione dei dati, garantendo l'aggiornamento accurato delle informazioni condivise. Sebbene la ridondanza possa prevenire conflitti, porta a incoerenze e aumenti di costi computazionali se non gestita correttamente. Controllo degli accessi: La sicurezza in un SGBD include il controllo degli accessi, definendo privilegi specifici per utenti e operazioni (lettura e scrittura) su vari elementi della base di dati. Esempi includono l'accesso a tabelle, attributi specifici o singole celle. Sicurezza - Backup e ripristino. I SGBD implementano strategie di backup e ripristino per recuperare dati in caso di guasti. Il backup copia i dati su supporti di memorizzazione di massa, mentre il ripristino utilizza procedure come backup periodici, mirroring dei dischi e log file per mantenere l'integrità dei dati dopo incidenti. Dati semi-strutturati: Un dato semi-strutturato è un tipo di dato che non aderisce a un modello di dati rigoroso come quello delle basi di dati relazionali, ma possiede comunque una certa organizzazione che permette di identificarne la struttura Questi dati non risiedono in rigide tabelle con righe e colonne ben definite; tuttavia, hanno un formato che include etichette (tag) o altri marcatori per separare gli elementi semantici e permettere un'elaborazione gerarchica Caratteristiche: Struttura flessibile: i dati semi-strutturati sono flessibili nella loro organizzazione. Possono contenere variazioni nella struttura, come campi mancanti, campi aggiuntivi o campi che variano in tipo tra le diverse istanze. Marcatori semantici: anche se non organizzati in un schema rigido, i dati semi- strutturati utilizzano etichette o marcatori che indicano il significato di ciascun elemento nel dato. Questo rende possibile l’elaborazione e l’analisi dei dati senza conoscere il modello in anticipo. Interoperabilità: i dati semi-strutturati sono spesso usati in scenari che richiedono lo scambio di dati tra sistemi disomogenei, come nelle interfacce di programmazione delle applicazioni (API), dove formati come JSON (JavaScript Object Notation) e XML (eXtensible Markup Language) sono comunemente utilizzati. I dati semi-strutturati si presentano in gerarchie di aggregazione di dati composti di elementi che a loro volta possono essere composti da: altri dati composti dati semplici, cioè non più decomponibili I dati semi-strutturati sono disponibili in file codificati con formati standard, i più diffusi sono: CSV (Comma-Separated Values) XML (eXtensible Markup Language) JSON (JavaScript Object Notation) Per popolare una tabella con dati codificati in CSV, JSON, XML o altri formati sono necessarie delle librerie apposite messe a disposizione mediante i linguaggi di programmazione CSV: È un file di testo che usa la virgola “,” o altro separatore per delimitare un insieme di valori Ogni riga di un file CSV rappresenta un record Ogni record consiste di uno o più campi delimitati dalla virgola È un modo per memorizzare i dati di una tabella in un formato testuale Non c’è uno standard Nella prima riga si può riportare l’intestazione delle colonne XML: è linguaggio formale e standard definito dal consorzio WWW (W3C)XML XML è definito mediante un insieme di regole formali (una grammatica) che definisce le modalità di generazione di un documento XML XML consente la descrizione (markup) dei dati. I dati sono inclusi nei documenti XML come stringhe di testo racchiuse tra opportune etichette (markup tag) che ne descrivono struttura e tipo di contenuto. NON è xml un documento XML è un documento di testo che può essere letto e modificato con un qualsiasi text editor (es. HTML, Python, MySQL ecc..) Esempio: L’elemento persona contiene un sottoelemento nome e tre sottoelementi professione. L’elemento nome, a sua volta, contiene due sottoelementi nome proprio e cognome. Caratteristiche: L’intero documento deve essere racchiuso in un unico tag radice I tag devono essere annidati in maniera corretta Gli attributi possono essere solo inseriti nei tag di apertura Lo stesso attributo non può comparire più di una volta all’interno dello stesso tag Ogni attributo inserito deve avere un valore e deve essere racchiuso tra doppi apici I nomi dei tag e degli attributi sono sensibili a maiuscolo/minuscolo Attributi: 11. JSON, CLIENT-SERVER, API, REST JSON: è un semplice formato per lo scambio di dati Per le persone è facile da leggere e scrivere Per le macchine risulta facile da generare e analizzarne la sintassi è basato su due strutture: 1. Un insieme di coppie nome/valore. In diversi linguaggi di progammazione, questo è realizzato come un oggetto, un record, uno struct, un dizionario, una tabella hash, un elenco di chiavi o un array associativo 2. Un elenco ordinato di valori. Nella maggior parte dei linguaggi questo si realizza con un array, un vettore, un elenco o una sequenza Esempi: JSON: data types e sintassi: Numeri decimali con segno, può essere espresso in forma esponenziale ma non può includere i non-numeri come ad es. NaN, non viene fatta distinzione tra interi e virgola mobile (viene di fatto demandato al linguaggio) Stringhe zero o più caratteri tra virgolette Boolean il valore true o false Array una lista ordinata di zero o più valori che possono essere di qualsiasi tipo tra quelli ammessi Oggetti una lista non ordinata di coppie chiave/valore null il valore vuoto Un sistema informatico distribuito è un insieme di processi che si scambiano dati mediante un internet: si tratta quindi di un sistema informatico la cui caratteristica è la possibilità di ricevere e trasmettere dati mediante reti di calcolatori A caratterizzare un sistema distribuito è lo scambio dei dati Quando un calcolatore è connesso ad altri, il suo sistema operativo (SO) mette a disposizione le proprie risorse e sfrutta quelle dei sistemi connessi La condivisione è sia quella delle risorse hardware che di quelle software Architettura client-server: Un processo controllato da un SO può utilizzare risorse di un altro SO collegato mediante la rete di calcolatori; spesso, il primo processo è detto client, il secondo è detto server. API: Il server “espone” dei servizi al client che ne fa richiesta mediante chiamate di programmi regolate da un’Application Program Interface (API) Una API è l’insieme di procedure messe a disposizione dei programmatori affinché possano effettuare un dato compito all’interno di un programma Spesso tali API sono pubblicamente disponibili (a pagamento oppure tramite autenticazione) e permettono di effettuare operazioni anche su dati non fisicamente residenti sulla macchina su cui stiamo lavorando Utilizzo delle API nelle arch. Client-server: L’API è un elenco di nomi di programma ovvero di funzione corredati dai tipi di dato che sono gli argomenti ricevuti e i valori restituiti dalla funzione al client L’utilizzo della risorsa da parte del processo client avviene sempre mediante un processo server, nel senso che quest’ultimo possiede la risorsa e la mette a disposizione del primo Un processo client può utilizzare le risorse messe a disposizione da un processo server dello stesso SO come se il primo fosse di un calcolatore collegato a se stesso Architetture REST: REST sta per Representational State Transfer è uno modello architetturale per sistemi distribuiti Si basa sulla “rappresentazione” delle risorse: documenti realizzati in uno specifico formato conosciuto dal destinatario (ad es. XML o JSON) a cui si può accedere tramite un identificatore globale, detto URI (vedi slide successiva) Per utilizzare le risorse, le componenti di una rete (componenti client e server) comunicano attraverso un’interfaccia standard (per esempio HTTP) per scambiare rappresentazioni di queste risorse, ovvero il documento che trasmette le informazioni URI ((Uniform Resource Identifier): URI, ovvero una stringa, costruita con una sintassi ben definita e standardizzata a livello internazionale, capace di specificare il protocollo di comunicazione e, anche se non necessariamente, di fornire elementi auto-esplicativi sulla natura della risorsa stessa. REST: L’approccio REST è stateless ovvero ogni connessione dopo la risposta viene chiusa e non viene mantenuta traccia nel server del contesto client che l’ha generata, comunemente detto “sessione”. Di conseguenza, ogni richiesta deve contenere tutta l’informazione necessaria a qualificare completamente il client ed il suo stato attuale e, se necessario, ad autenticarlo e a specificare la risorsa sulla quale si desidera operare Le operazioni CRUD (Create, Read, Update e Delete) vengono effettuate avvantaggiandosi dei metodi forniti da HTTP stesso per le richieste: GET utilizzato per le normali operazioni di lettura PUT utilizzato per modificare una risorsa POST utilizzato per creare una nuova risorsa sul server DELETE utilizzato per cancellare una risorsa Creando degli URI ai quali risponda del codice capace di effettuare le operazioni, assembliamo una API REST

Use Quizgecko on...
Browser
Browser