Data management Flashcards
Quali sono gli approcci per ottenere la scalabilità?
Come può essere la replicazione?
Come possono essere le policy sulla consistenza? Qual’è il tradeoff sulla sincronizzazione?
Quali sono le tipologie di copie?
Abbiamo:
- Scale up: Migliorando le risorse hw del server, e presenta limiti fisici.
- Scale out(scaling orizzontale): Replica l’infrastruttura esistente per farla lavorare in parallelo aumentando la capacità in modo lineare.
____
La replicazione può essere:
- Piena
- Parziale: replichiamo solo una parte
____
Strong: contenuti sempre aggiornati
Weak: contenuti non sono aggiornati subito
Se non abbiamo sincronizzazione, abbiamo il massimo delle prestazioni e nessun overhead, e maggiore scalabilità.
__
Le copie possono essere:
- Primarie: copie autoritative
- Master: read/write
- il resto solo read
Quali sono i sistemi di concorrenza?
One copy system: Tutte le copie fisiche dei dati che si comportano come un unico elemento logico. I dati letti devono essere quelli dell’ultima transazione, le transazioni avvengono nella stessa copia e poi la coerenza viene garantita da un sistema di controllo che sincronizza il tutto.
Two phase commit: Questa strategia prevede un coordinatore, prende la decisione finale e interagisce con tutti i partecipanti abbiamo 2 fasi:
- Preparazione: il coordinatore prepara tutti i partecipanti ad eseguire la transazione e attende che tutti diano l’esito, aggiornano il loro log ma non ancora gli indici
- Scrittura: In base ai voti dei partecipanti il coordinatore decide se continuare con la transazione o interromperla e avvisa i partecipanti dell’esito (aggiorno gli indici o rollback)
[Soluzione costosa]
Gossip protocol: Abbiamo N nodi, che si scambiano informazioni sui diversi cambiamenti.
es. Cassandra dove ogni nodo replica l’elemento attraverso una Distributed Hash Table, quindi invia un aggiornamento della replica ai nodi trovati, praticamente un approccio lazy perchè prima o poi arriva a tutti.
Quando una scrittura viene propagata i vicini rispondono con un ACK e spargono anche loro il cambiamento. Quello che sparso il messaggio inizierà un quorum per stabilire se la scrittura è andata a buon fine, generalmente (N/2) +1
Primario e secondario: Il server primario è read/write, mentre i secondari sono read only, c’è un meccanismo di sincronizzazione periodico. La copia secondaria viene usata solo se la primaria non è disponibile.
Come avviene la data replication?
Quali sono i tradeoff tra reverse proxy e forward proxy.
- Proxy Server: Quando il proxy server riceve la richiesta per una risorsa, controlliamo prima nella cache locale, altrimenti ricaviamo e salviamo nella cache che avranno una validità dedotta dal tempo di creazione e ultima modifica.
I dati possono essere:
- Static: dato vecchio e modificato tempo fa
- Volatile: dato vecchio ma modificato da poco
Tipicamente presupponiamo che il dato nuovo sia volatile.
Questa solutizione non gestisce dati generati dinamicamente e non supporta connessioni HTTPS end to end.
- Reverse Proxy: Server virtuale posto al fronte del web server, in modo che possa imagazzinare risorse generate dinamicamente. Può replicato e/o diffuso geograficamente.
- Terze Parti: ISP o CDN
Sia Forward che Reverse proxy sono in grado di replicare i contenuti popolari, riducono i costi del server di origine, riducono il RTT per i client.
Solo il Reverse proxy può suddividere il carico intelligentemente tra i server di origine e modificare
dinamicamente i contenuti per conto dei server di origine, in quanto più vicino al server primario.
Di contro, il Forward proxy riduce i costi legati all’ISP per il client.
Come viene gestita la cache web?
Possiamo avere diversi proxy server che cooperano per aumentare la cache hit e ci sono diverse tipologie di strategie:
- Schema gerarchico: cooperazione verticale su più livelli, se abbiamo un miss locale chiediamo al nodo più in alto nella gerarchia. Che però aumenta la latenza, i livelli alti risolvono il problema di compulsory miss perchè hanno più dati in cache.
- Schema piatto: Coordinazione orizontale tra pari che possono essere query based o informed based
- query based: chiedo la risorsa ai miei vicini, e ho una global miss quando tutti rispondono, speed= nodo più lento
- Informed based: I vicini si scambiano periodicamente le informazioni sulla cache, regigendo un indice della cache che però può diventare capiente e difficile da scambiare per ovviare possiamo fare:
- Partitioning: con funzione di hash prendo l’url e punto sui nodi responsabili della risorsa.- Cache digest: Usiamo un bloom filter per rappresentare l'indice della cache, abbiamo un vettore binario e tante funzioni hash, che prendono elemento e lo mappano sul vettore corrispondente ponendolo a 1. E' una soluzione probabilistica, ma più f hash più bontà.
- Schemi ibridi
In cosa consistono le CDN (Content Delivery Network)? Come avviiene il caching?
Com’è organizzata?
Quali sono i tradeoff?
Quali sono i componenti?
E’ un meccanismo che salva in cache solo determinate risorse rilevanti, usato per contenuti a pagamento. Praticamente si basa su un gruppo di server distribuiti geograficamente che collaborano per garantire la rapida trasmissione di contenuti selezionati dal content provider.
Usiamo il caching in maniera cooperativa e selettiva, meno pull e più push visto che i contenuti sono limitati.
Abbiamo 2 livelli:
- Core: Queste copie non servono le richieste di utenti, ma coordinano la replicazione di con
tenuti verso gli edge server. Possono dare indicazioni su come fare la replicazione. - Edge server: Sono i server che effettivamente rispondono con la risorsa all’utente interessato.
Vi sono alcuni edge-server “primari”, che sono in contatto con l’origin server che regolano la
replicazione nel proprio cluster
_____
Riduce il tempo di risposta e anche la varianza del tempo di risposta ma la risoluzione del del DNS è complessa e richiede tempo.
________
Le CDN utilizzano degli algoritmi di routing molto sofisticati per garantire al cliente che venga instradato alla copia della risorsa più vicina.
- URL rewriting: Possiamo mapare i contenuti tramite la riscrittura di codice HTML, l’utente riceve la pagina dall’origin e il CDN intercetta e sovrascrive gli embedded object con quelli in cache.
- DNS outsourcing: ci permette di evitare totalmente l’origin server grazie ai server DNS delle CDN, che ci permmette di decidere se risolvere con l’ip dell’origin o CDN, cachando sia la pagina che l’embedded. Si potrebbe usare per bilanciare il carico tra origin, primary e secondary.
Cos’è il caching e su cosa si basa?
Quali sono i meccanismi di memorizzazione?
Il caching consiste nel replicare parte del contenuto originale in posizioni prossime allo user si basa su due concetti:
- località spaziale: se un dato è stato acceduto da poco è probabile che venga acceduto nelle vicinanze
- località temporale: i dati acceduti da poco sono più probabili ad essere acceduti nel futuro immediato e non remoto
____
Pull: il contenuto viene fornito dal server primario a quello secondario quando vie richiesto dall’utente dopo una miss (ISP e proxy server)
Push: I contenuti spesso richiesti vengono inviati attivamente al server secondario (reverse proxy e CDN)
Quali sono i rapporti tra primari e secondari?
Quali sono gli approcci di consistenza nel DB(lamport)?
Prim-prim const forte
Prim-Sec const debole
Prima o poi convergono alla stessa versione.
ACID: approach dei db relazionali, sempre coerenti dopo una transizione, isolato e indipendente da essi, robusto alla perdita e cambiamenti (le transazioni vengono scritte nei log)
BASE :
Basic Availabilty: La replica riduce il rischio di non disponibilità, quindi il sistema risulta essere sempre consultabile
Soft State: I dati possono essere incoerenti e i servizi devono tenerne conto
Eventual Consistency: consistenza eventuale ma non immediata