Esistono molte aree di ricerca sia nella teoria che nella pratica dei database distribuiti.
Una delle principali sfide pratiche è quella di implementare meccanismi di controllo della concorrenza efficienti per database distribuiti e geo-replicati. Al fine di eseguire le transazioni in modo efficiente, tali meccanismi possono fornire garanzie più deboli rispetto alla serializzazione, il che richiede che le transazioni sembrino essere eseguite in sequenza. Un'alternativa alla serializzabilità è quella di accontentarsi di Snapshot Isolation [1], ma si è dimostrato che questo si ridimensiona male ai sistemi geo-replicati e distribuiti. Allo stato dell'arte, sono state definite due diverse varianti di Snapshot Isolation (SI) per gestire il controllo della concorrenza nei sistemi geo-replicati: Parallel Snapshot Isolation (PSI) [2] e Non Monotonic Snapshot Isolation (NMSI) [ 3,4]. Per quanto riguarda i database distribuiti (ovvero dove i dati sono suddivisi tra diversi siti),
Avendo diverse nozioni di livelli di isolamento che forniscono garanzie più deboli rispetto alla serializzabilità, un'altra questione importante è quella di scrivere programmi in modo tale che le esecuzioni sembrino comunque essere serializzabili. Un criterio sonoro per l'isolamento di istantanee è stato elaborato in [1]. Alcune persone del mio gruppo stanno attualmente lavorando per elaborare un criterio ragionevole per il PSI.
Un'altra domanda rilevante, sia dal punto di vista teorico che pratico, è quella del trinciamento delle transazioni. Fondamentalmente il chipping è una tecnica di analisi statica in cui le transazioni a grana grossa sono suddivise in transazioni più piccole, a grana fine. Per la serializzazione, questa domanda è stata affrontata in [6] e la teoria risultante è stata applicata per dare un'implementazione pratica in [7].
Dal punto di vista delle basi teoriche dei database distribuiti, è stata proposta la possibilità di utilizzare tecniche della comunità dei modelli di memoria debole [8] per definire formalmente il comportamento delle transazioni. In [9] gli autori forniscono una nozione formale di comportamento per le transazioni; lo stesso approccio è stato usato in [10] per specificare il comportamento dei tipi di dati replicati.
Di recente, io e alcuni miei colleghi (Alexey Gotsman e Hongseok Yang) abbiamo costruito, a partire dalle tecniche sviluppate in [8,9,10], un quadro teorico per specificare il comportamento osservabile dei livelli di coerenza per i database geo-replicati. Abbiamo impiegato con successo il framework per fornire un'assiomatizzazione di SI, PSI e NMSI, ognuna delle quali si è dimostrata corretta rispetto a una semplice implementazione. Abbiamo anche sfruttato la teoria risultante per escogitare un criterio di trinciatura per PSI. Speriamo che questi risultati vengano pubblicati nel prossimo futuro.
Non esitare a scrivermi se hai altre domande. Spero che sia di aiuto,
Andrea Cerone.
Riferimenti:
[1] Fekete et al, Making Serializable Isolation Snapshot (2005)
[2] Sovran et al, Transactional Storage for Geo-replicated Systems (2011)
[3] Arkedani et al, Isolamento di istantanee non monotone: coerenza scalabile e forte per sistemi transazionali geo-replicati (2013)
[4] Arkedani et al, On the Scalability of Snapshot Isolation (2013)
[5] Binnig et al, Isolamento distribuito di istantanee: le transazioni globali pagano globalmente, le transazioni locali pagano localmente
[6] Shasha et al, Transaction chopping: algoritmi e studi delle prestazioni (1995)
[7] Zhang et al, catene di transazioni: raggiungimento della serializzabilità con bassa latenza nei sistemi di archiviazione geo-distribuiti (2013)
[8] Alglave, una gerarchia formale di modelli di memoria debole (2012)
[9] Buckhardt et al, Understanding Eventual Coerency (2013)
[10] Buckhardt et al, tipi di dati replicati: specifica, verifica, ottimalità (2014)