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: copie che servono le richieste dei clienti, ma coordinano la cooperazione con gli edge server. Possono dare indicazioni su come fare la replicazione.
- Edge server: Sono i server primari con i contenuti dell’utente interessato, alcuni sono “primari” che si coordinano con l’origin server.
_____
Riduce il tempo di risposta e anche la varianza.
I componenti CDN:
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 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
Per le CDN quali algoritmi di routing usa per garantire l’instradamento dei contenuti più corto?
URL Rewriting: la mappatura si può basare sulla riscrittura di delle pagine HTML, l’utente richiede la pagina e la CDN riscrive l’embedded object con quello in cache
DNS Outsourcing: Con questa tecnica possiamo decidere se risolvere con l’ip del cdn o origin server. Così possiamo cachare la pagina ed embedded object.
Alla fine possiamo mixare le soluzioni tramite URL rewriting all’orgining e al primary CDN server, mentre per bilanciare il carico tra primary/secondary/origin usiamo DNS.