Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
CAP THEOREM
Vale negli ambienti appena descritti, ovvero negli ambienti distribuiti
Teorizzato per la prima volta da Eric Brewer nel 2000, afferma che "in un sistema distribuito puoi avere solo due delle seguenti tre garanzie: Consistenza, Disponibilità e Tolleranza della partizione. Una di queste deve essere sacrificata"
Non posso avere in un sistema distribuito sia tolleranza alle partizioni, disponibilità e consistenza.
Consistenza: ogni lettura riceve l'ultima scrittura- non può mai capitare che io leggo l'ultima scrittura. Sono sempre sicuro che il dato del db sia consistente ovvero che sia l'ultimo.
Disponibilità: ogni richiesta riceve una risposta (non di errore) ma senza garanzia che contenga la scrittura più recente
Tolleranza alle partizioni: il sistema continua a funzionare quando si verificano partizioni di rete. In un sistema distribuito continua a funzionare anche se cade la rete, le parti funzionano separatamente
In generale,
La rete è da considerarsi inaffidabile anche all'interno di una singola organizzazione (intranet). Il verificarsi di momenti problemi alla rete in un ambiente distribuito non è un'opzione, ma una certezza! La tolleranza della partizione deve essere quindi sempre gestita! Devi tollerare le partizioni in un sistema distribuito secondo il teorema di CAP, ciò significa che ci restano due opzioni (cosa rinunciare):
- Give Away Consistency: i dati potrebbero non essere aggiornati e due richieste uguali potrebbero ricevere risposte diverse;
- Give Away Availability: se si verifica un errore di rete, il sistema rifiuta le connessioni.
Esempio: booking.com. Booking è sotto un sistema distribuito perché deve dare la risposta in pochi millisecondi a migliaia di utenti in parallelo. Martin vuole prenotare da Londra adesso attraverso booking un hotel.
a Bologna il 1° maggio. Prenota una suit all'hotel x (esiste solo una suit). Pramod nello stesso tempo dall'India vuole prenotare la stessa stanza di Martin. Sia Martin e Pramod decidono che il 1 maggio vogliono la stessa stanza nello stesso momento da 2 aree geografiche diverse. Cosa fa il sistema? Martin si collega da un nodo europeo, non a un booking.com centralizzato. Pramod da un nodo in India. È un sistema distribuito che ha più istanze. Il sistema si parla attraverso la riga sbiadita (rete) e decide se dare la stanza a uno o all'altro in base al millesimo di secondo che ci ha messo l'uno o l'altro. Ma se per 10 secondi cade la rete. Booking ha creato un sistema tollerante alle partizioni. In quei 10 secondi ho i db con le info di Londra e India dove dicono che non è stata prenotata la stanza. Avendo un sistema tollerante alle partizioni devo decidere se rinunciare alla consistenza o disponibilità. 2 possibilità per booking: 1- Crearesistema consistente: non esiste la possibilità che il sistema si sbagli a prenotare le camere perché è allineato con tutti i db. aspetta per prenotare→2- Creare sistema disponibile prenota pure che non c’è problema double booking→ →Cos’è meglio?Disponibilità o consistente?Booking ha scelto di essere disponibile perché La consistenza ha il suo prezzo (anche in assenza di partizione di rete) sincronizzazione tra le repliche crea latenza→LaL’utente vuole velocità e non latenza altrimenti si sconnettono.Un db relazionale nasce per la consistenza (proprietà acid) per questo non sono adatti→La consistenza ha un suo prezzo anche se non ci fosse il problema delle partizioni.3 paper importante:Amazon Dymano Key-Value Store: “In questo ambiente c'è una particolare esigenza di tecnologie di storage «always available». Ad esempio, i clienti devono essere in gradoDivisualizzare e aggiungere articoli al proprio carrello (amazon) anche se i dischi si guastano, ci sono problemi di rete o i data center vengono distrutti da dei tornado. Pertanto, il servizio responsabile della gestione dei "carrelli della spesa" necessita che si possa sempre leggere e scrivere dal proprio archivio dati e che i dati stessi debbano essere disponibili in più data center distribuiti.
GIVING AWAY CONSISTENCY
- Amazon ha scoperto che ogni 100 millisecondi di latenza costa loro l'1% delle vendite.
- Google ha scoperto che un aumento di mezzo secondo della latenza di ricerca riduce il traffico del 20%.
- Nella maggior parte dei casi, per motivi di business, la disponibilità è preferita alla consistenza.
Spesso i sistemi devono essere progettati per far fronte a un certo grado di errore, mantenendo la disponibilità ed essendo in grado di ricostruire la consistenza dopo il ripristino della rete. Questi sistemi sono...
Chiamati eventually consistent!• Questi sistemi accettano che ci sia una «finestra di inconsistenza» e cioè un periodo di inconsistenza tra l’ultimo aggiornamento e il momento in cui è garantito che qualsiasi osservatore sia in grado di vedere il valore aggiornato. La disponibilità è preferita alla consistenza in questo tipo di business. Spesso i sistemi devono essere progettati per risolvere il problema (es double booking) quando si ricollegano. Bisogna creare la consistenza quando ripristino la rete sistemi evenutally consistent: sistema→che rispristina la consistenza alla fine del processo. Questi sistemi accettano che ci sia una finestra di inconsistenza. Per booking→ esempio telefona 1 dei due clienti e gli da un buono da spendere. DB RELAZIONALE consistente grazie alle proprietà acide. Una transazione consiste in un insieme di operazioni che partendo da un db in uno stato consistente fa in modo di riportarlo in uno stato
essere permanenti e persistenti nel database, anche in caso di guasti o riavvii del sistema. Il tag html corretto per formattare il testo fornito è il seguente:Finale consistente. Se una transazione non va a buon fine è necessario fare il "rollback" delle operazioni in modo da eliminare le modifiche che sono state fatte e riportare il db nello stato consistente precedente. L'acronimo ACID indica le proprietà che ogni DBMS deve avere per assicurare la validità e il successo delle transazioni:
- (A)tomicity - Atomicità: garantisce che una transazione sia eseguita come un tutt'uno, ovvero l'esecuzione della transazione deve essere totale o nulla, non sono ammesse esecuzioni parziali;
- (C)onsistency - Consistenza: garantisce i vincoli di integrità dei dati, ovvero la transazione parte dal database in stato consistente e lo riporta in uno stato consistente.
- (I)solation - Isolamento: ogni transazione è indipendente dalle altre. Due transazioni distinte non devono interferire tra di loro.
- (D)urability - Persistenza: Una volta effettuato il commit di una transazione, le modifiche effettuate devono essere permanenti e persistenti nel database, anche in caso di guasti o riavvii del sistema.
- Basically Available - il sistema sembra funzionare sempre
- Soft State - non deve essere coerente tutto il tempo
- Eventually Consistent - diventa coerente in un momento successivo - appena ritrova la rete ritorna consistenza viene accettata una finestra di inconsistenza.
- Caratteristiche NoSQL DB:
- NoSQL sta per "not only SQL":
- Classe di sistemi di archiviazione dati "non relazionali"
- Open Source
- Cluster friendly
- Schema-less (non richiedono uno schema di tabelle fisso) né usano il concetto di join
- Tutti i database NoSQL rilassano una o più proprietà ACID
È utile quando conosciamo molto bene i tuoi dati, sai come accedervi e desideri applicare lo schema che hai scelto nella fase preliminare di analisi.
Lo schema/struttura dei dati viene definita solo nel momento in cui questi vengono utilizzati (letti), non quando vengono memorizzati nel database. In questo modo è possibile archiviare velocemente grandi quantità di dati senza dover conoscere a priori il loro modello e il loro futuro utilizzo. La struttura viene applicata ai dati solo durante la lettura, ciò consente di archiviare velocemente nel database dati non strutturati. Poiché non è necessario definire lo schema prima di archiviare i dati, semplifica l'inserimento di nuove origini dati on-the-fly.
I database NoSQL sono classificati in base al tipo di modello che utilizzano per la memorizzazione dei dati, in particolare possono essere individuate 4 grandi famiglie:
- Key-Values stores.
- Column-oriented database
- Document
database
• Graph database WORKSHOP
Data: un insieme di elementi grezzi di fatti, utilizzati per calcolare, ragionare o misurare.
Information: è il risultato del processo di raccolta e organizzazione dei dati in modo da stabilire le corrette relazioni tra i diversi elementi dei dati, fornendo così un contesto e un significato.
Knowledge: l'interpretazione delle Informazioni basandosi sul riconoscimento di pattern in modo da ottenere insight ("intuizioni").
DATI:
I dati grezzi ("raw") nella loro forma primordiale sono inutili se non vengono organizzati e gestiti nel modo corretto. Quando i dati vengono processati, organizzati, strutturati e presentati in un determinato contesto, otteniamo Informazioni.
Vedremo come le nuove tecnologie supportano la corretta gestione del dato, che include:
• Raccolta dei dati (ingestion)
• Storage
• Elaborazione
Abbiamo a disposizione i Big Data, ma abbiamo bisogno degli Small Data!
Le infrastrutture IT
moderne consentono di eseguire algoritmi e tecniche di data mining su grandi moli dati, per ottenere Small Data, mediante:
- Analisi descrittive
- Modelli predittivi
- Analytics prescrittive
DATA BASE RELAZIONALI:
Il modello del database relazionale fu introdotto per la prima volta da Edgar Codd nel 1970 (paper: "A Relational Model of Data for Large Shared Data Banks"). Nel modello relazionale, i dati sono strutturati in tabelle (i.e. "Relazioni") composte da righe e colonne. Ogni riga contiene un singolo record formato da elementi individuali ("Attributi") organizzati in colonne contenenti elementi dello stesso tipo, seguendo le regole definite per ogni colonna.
I database relazionali (SQL) sono tra le tecnologie più diffuse nel mercato fin dalla loro nascita. Alcune caratteristiche:
- ACID (Atomicity, Consistency, Isolation, Durability)
- Supporto per le transazioni
- Integrità dei dati
- Query complesse