Existem muitas áreas de pesquisa, tanto na teoria quanto na prática de bancos de dados distribuídos.
Um dos principais desafios práticos é o da implementação de mecanismos eficientes de controle de simultaneidade para bancos de dados distribuídos e replicados geograficamente. Para executar transações com eficiência, esses mecanismos podem fornecer garantias mais fracas que a capacidade de serialis, o que exige que as transações pareçam ser executadas seqüencialmente. Uma alternativa à serialidade é a de se estabelecer para o isolamento de instantâneo [1], mas foi provado que essa escala não é adequada para sistemas distribuídos e georeplicados. No estado da arte atual, duas variantes diferentes de Isolamento de instantâneo (SI) foram definidas para lidar com o controle de simultaneidade em sistemas replicados geograficamente: Isolamento de instantâneo paralelo (PSI) [2] e Isolamento de instantâneo não monotônico (NMSI) [ 3,4] Quanto ao que diz respeito aos bancos de dados distribuídos (ou seja, onde os dados são compartilhados entre sites diferentes),
Tendo noções diferentes de níveis de isolamento que fornecem garantias mais fracas do que a serialização, outra questão importante é a de escrever programas de uma maneira que as execuções ainda pareçam ser serializáveis. Um critério sólido para o isolamento de instantâneo foi desenvolvido em [1]. Algumas pessoas do meu grupo estão atualmente trabalhando na elaboração de um critério razoável para o PSI.
Outra questão relevante, tanto do ponto de vista teórico quanto prático, é a do corte de transações. Basicamente, o chopping é uma técnica de análise estática na qual as transações de granulação grossa são divididas em transações menores e de granulação fina. Para serialização, esta questão foi abordada em [6], e a teoria resultante foi aplicada para fornecer uma implementação prática em [7].
Do ponto de vista dos fundamentos teóricos dos bancos de dados distribuídos, houve alguma proposta para usar técnicas da comunidade de modelos de memória fraca [8] para definir formalmente o comportamento das transações. Em [9], os autores dão uma noção formal de comportamento para transações; a mesma abordagem foi usada em [10] para especificar o comportamento dos tipos de dados replicados.
Recentemente, eu e alguns colegas meus (Alexey Gotsman e Hongseok Yang) construímos, a partir das técnicas desenvolvidas em [8,9,10], uma estrutura teórica para especificar o comportamento observável dos níveis de consistência para bancos de dados replicados geograficamente. Empregamos a estrutura com sucesso para fornecer uma axiomatização de SI, PSI e NMSI, cada uma das quais provamos estar corretas com relação a uma implementação simples. Também exploramos a teoria resultante para elaborar um critério de corte para PSI. Esperamos que esses resultados sejam publicados no futuro próximo.
Por favor, não hesite em me escrever se você tiver outras perguntas. Espero que isto ajude,
Andrea Cerone.
Referências:
[1] Fekete et al., Tornando o isolamento de instantâneo serializável (2005)
[2] Sovran et al., Armazenamento transacional para sistemas replicados geograficamente (2011)
[3] Arkedani et al, Isolamento de instantâneo não monotônico: consistência escalável e forte para sistemas transacionais com replicação geográfica (2013)
[4] Arkedani et al., Sobre a escalabilidade do isolamento de instantâneos (2013)
[5] Binnig et al., Isolamento distribuído de instantâneos: transações globais pagam globalmente, transações locais pagam localmente
[6] Shasha et al., Transaction chopping: algoritmos e estudos de desempenho (1995)
[7] Zhang et al., Cadeias de transação: alcançando serialização com baixa latência em sistemas de armazenamento distribuído geograficamente (2013)
[8] Alglave, uma hierarquia formal de modelos de memória fraca (2012)
[9] Buckhardt et al., Entendendo a consistência eventual (2013)
[10] Buckhardt et al., Tipos de dados replicados: especificação, verificação, otimização (2014).