Um framework para a gerência de cache de Banco de Dados Móvel: Design and Avaliação Yuri A. Lacerda Cronograma Introdução Mecanismo de Caching Caching Convencional Caching Móvel Conclusão Referências Introdução Em um ambiente móvel os servidores de banco de dados enviam informações via wireless para diversos clientes. Clientes móveis podem possuir perfis variados: notebooks, palmtops, celulares, etc. Introdução Database Server Mobile Client Mobile Client Mobile Client Rede Wireless Introdução Canal de transmissão wireless: – – Baixa largura de banda; Instabilidade na conexão; Motivam: – Armazenar itens mais acessados do banco de dados em um cache no cliente móvel: Aumentar o desempenho ao realizar consultas Prover disponibilidade mesmo desconectado Mecanismo de Caching Granularidade Estratégia de Coerência Políticas de Substituição Mecanismo de Caching Granularidade: – Unidade que será armazenada no cache: Página Objeto Atributo Ex: Mobile Client Cache: Cliente c_a; Cliente c_c; Mecanismo de Caching Estratégia de Coerência – – Invalidar os itens que estão incoerentes no cache Atualizar os itens inválidos Mecanismo de Caching Estratégia de Coerência Client A Database Server: Query q1 Client B Database: Cliente = { c1 ( ‘João’, ‘Rua a’); c2 ( ‘Maria’, ‘Rua b’); } Mecanismo de Caching Estratégia de Coerência Client A Database Server: Cache: c_c1 ( ‘João’, ‘Rua a’); Client B return q1; Database: Cliente = { c1 ( ‘João’, ‘Rua a’); c2 ( ‘Maria’, ‘Rua b’); } Mecanismo de Caching Estratégia de Coerência Client A Database Server: Cache: c_c1 ( ‘João’, ‘Rua a’); Client B Update c1 Database: Cliente = { c1 ( ‘João’, ‘Rua C’); c2 ( ‘Maria’, ‘Rua b’); } Mecanismo de Caching Estratégia de Coerência INCOERENTE! Client A Database Server: Cache: c_c1 ( ‘João’, ‘Rua a’); Client B Database: Cliente = { c1 ( ‘João’, ‘Rua C’); c2 ( ‘Maria’, ‘Rua b’); } - Que estratégia usar para corrigir este problema? Mecanismo de Caching Políticas de Substituição – O tamanho do cache é limitado Client A Database Server: Cache: c_c1 ( ‘João’, ‘Rua a’); c_c3 ( ‘Maria’, ‘Rua m’); c_c4 ( ‘José’, ‘Rua j’); Query q Mecanismo de Caching Políticas de Substituição – O tamanho do cache é limitado Client A Database Server: Cache: c5 ( ‘Francisco’, ‘Rua f’); c_c1 ( ‘João’, ‘Rua a’); c_c3 ( ‘Maria’, ‘Rua m’); c_c4 ( ‘José’, ‘Rua j’); ESTÁ CHEIO! Mecanismo de Caching Políticas de Substituição – O tamanho do cache é limitado Client A Database Server: Cache: c5 ( ‘Francisco’, ‘Rua f’); c_c1 ( ‘João’, ‘Rua a’); c_c3 ( ‘Maria’, ‘Rua m’); c_c4 ( ‘José’, ‘Rua j’); ESTÁ CHEIO! - Qual item substituir? Caching Convencional Banco de Dados Cliente / Servidor – – Tráfego é comparado ao acesso ao disco Diminuir latência da rede Granularidade – – – Mecanismo de cache é baseado em Páginas Servidor também é baseado em Páginas Princípio da Localidade – Vizinhos serão acessados num futuro próximo Overhead compensa se vizinhos forem acessados num futuro próximo Caching Convencional Por que não aplicar a MDS? – – – Alta perda de energia (Baterias) Overhead devido a pequena largura banda Espaço de armazenamento pequeno Caching Convencional Estratégia de Coerência – – O servidor possui conhecimento do cache de cada cliente e envia mensagem quando um item base é atualizado Atualização do cache em cada cliente Caching Convencional Estratégia de Coerência Local Network Client A Database Server: Cache: c_c1 ( ‘João’, ‘Rua C’); Database: Cliente = { c1 ( ‘João’, ‘Rua C’); c2 ( ‘Maria’, ‘Rua b’); } Client B Update c1 Caching Convencional Estratégia de Coerência Local Network Client A Database Server: Cache: c_c1 ( ‘João’, ‘Rua C’); Client B Refresh Database: Cliente = { c1 ( ‘João’, ‘Rua C’); c2 ( ‘Maria’, ‘Rua b’); } Caching Convencional Por que não aplicar a MDS? – – Clientes trafegam livremente Servidor pode não estar capaz de enviar mensagem para todos Database Server: MC 2 Cache: c_c1 ( ‘João’, ‘Rua a’); Database: Cliente = { c1 ( ‘João’, ‘Rua C’); c2 ( ‘Maria’, ‘Rua b’); } wireless Cache: c_c1 ( ‘João’, ‘Rua a’); Caching Convencional Estratégia de Coerência – Solução Leases [2] Cada item no cache possui um refresh-time préestabelecido Ao expirar o item é atualizado Que valor utilizar? – Muito Alto: Pode ter itens desatualizados – Muito Baixo: Atualizações e muito tráfego desnecessários Deveria ser adaptado automaticamente. Caching Convencional Políticas de Substituição – Algumas soluções existentes Least Recently Used (LRU); – LRU-k Least Reference Density (LRD); Optimal; CLOCK; WORST; Entre outras Caching Móvel - Modelo Sequência Database server (S) Identificados todos os itens qualificados (I) Avaliação da Query Envio de Q para o servidor Mobile client (S) Envio de i para o servidor (I – i) Itens qualificados para serem enviados para o cliente Avaliação da Query Início da Query (Q) Identificados itens locais qualificados (i) Identificados todos os itens qualificados Políticas de Substituição Caching Móvel - Modelo Paradigma ponto-a-ponto Banco de Dados Orientado a Objetos – Não impede que se use para Relacional Caching Móvel - Modelo Cache Table – É um mini banco de dados que pode ser manipulado pelo servidor. – Estrutura: Database server X attribute a attribute b attribute c Mobile client Remote (R_oid,R_host) Cache X C_X attribute c_a method a() method b() method c() attribute c_b attribute c_c substituto x Caching Móvel - Modelo Granularidade – – – Caching de Atributo Caching de Objeto Caching Híbrido Caching Móvel - Modelo Caching de Atributo – – O servidor só retorna para o cliente aqueles atributos que foram requisitados Exemplo: Select x.name, x.city from x in Places to Stay where x.vacancy > 0 Consulta retorna dois objetos: x e y Caching Móvel - Modelo CACHE c_vacancy Places To Stay Substituto x Caching Móvel - Modelo Server CACHE c_vacancy Places To Stay Substituto x x.name x.city y.name y.city y.vacancy Caching Móvel - Modelo Server CACHE c_vacancy Places To Stay Substituto x x.name x.city y.name y.city y.vacancy Caching Móvel - Modelo Server CACHE c_name c_city c_vacancy Places To Stay Substituto x Substituto y Caching Móvel - Modelo Caching de Objeto – – Clientes móveis tendem a ter os objetos acessados mais frequentemente Possuir todo o objeto pode evitar futuros acessos no servidor Caching Móvel - Modelo Caching Híbrido – – Armazena apenas os atributos de um objeto qualificado com uma grande probabilidade de ser acessado futuramente; Probabilidade de Acesso Futuro ao Objeto > Threshold E Caching Móvel Coerência de Cache – – – Cada cliente é responsável por se invalidar Mesma estratégia de Leases, Refresh Time (RT), unido a heurísticas Cada item tem seu RT baseado na probabilidade de ser atualizado: Caching de Atributo e Caching Híbrido: Atributos com RT. Caching de Objeto: Objeto com R.T. Caching Móvel Estimativa do RT – – – – – X: item do cache dx: duração da inter-chegada entre escritas dx: média de Dx Sx: desvio padrão βx: frequência de atualização de x RT = dx + βx.Sx W(x) W(x) W(x) W(x) W(x) t 0 5 10 15 20 25 30 35 W(X) = Write (X) Caching Móvel Erro W(x) Servidor t Refresh(x) t Cliente False Alarm t Servidor Refresh(x) Cliente Não houve escrita! Refresh(x) t Caching Móvel Políticas de Substituição – Mean Armazena a média de acesso de cada item Problema: Não descobre a mudança rapidamente A(x) A(x) A(x) A(x) A(x) t 0 5 10 15 20 25 30 35 A(X) =Acessa (X) Média de todos os acesso de cada item Caching Móvel – Window Armazena uma janela dos valores inter-operações Problema: Necessita armazenar uma janela para cada objeto ou atributo A(x) A(x) A(x) A(x) A(x) t 0 5 Janela: 10 15 10 5 10 5 20 25 30 35 A(X) =Acessa (X) Média dos últimos acessos Caching Móvel – Exponentially Weighted Moving Average Resolve o problema da janela Adiciona pesos aos valores inter-operações Simulações Não foram exaustivos Perfil do comportamento: – Granularidade Caching Híbrido possuiu desempenho superior: – Alta taxa de acertos – Baixo tempo de resposta – Baixa taxa de erros – Baixo taxa de alarmes falsos Caching Móvel – Políticas de Substituição EWMA-0.5 desempenho bastante estável em diversos cenários; LRU, LRU-3 e LRD também possuíram um desempenho satisfatório para alguns cenários. Conclusões Proposto um mecanismo para prover desempenho Caching baseado em paginas não é adequado Foi proposto um caching baseado em atributos, objetos ou híbrido. Estratégias de coerências e políticas de substituição que se adaptam a forma de acesso Referências [1] B. Y. Chan, A. Si, H. V. Leong, “A Framework for Cache Management for Mobile Databases: Design and Evaluation. 2001. [2] C.G. Gray and D.R. Cheriton, “Leases: An efficient fault-tolerant mechanism for distributed file cache consistency,” in Proceedings of SOSP, 1989, pp. 202–210.