Persistência

35
Persistê ncia

Transcript of Persistência

Page 1: Persistência

Persistência

Page 2: Persistência

O que é persistência de dados?

Page 3: Persistência

Entendendo as variáveis dos dados

Page 4: Persistência

Tempo de duração

Page 5: Persistência

Escopo

Page 6: Persistência

Alterações

Page 7: Persistência

Leitura

Page 8: Persistência

Números que todos deviam saber• L1 cache reference 0.5 ns• Branch mispredict 5 ns• L2 cache reference 7 ns•Mutex lock/unlock 100 ns•Main memory reference 100 ns• Compress 1K bytes with Zippy 10,000 ns• Send 2K bytes over 1 Gbps network 20,000 ns• Read 1 MB sequentially

from memory 250,000 ns• Round trip within same datacenter 500,000 ns•Disk seek 10,000,000 ns• Read 1 MB sequentially from network 10,000,000 ns• Read 1 MB sequentially from disk 30,000,000 ns• Send packet CA->Netherlands->CA 150,000,000 ns

Page 9: Persistência

Tipos de persistência

Page 10: Persistência

Memoria

Page 11: Persistência

• Fácil acesso a partir da implicação• Utilização intuitiva• Rápido• Muito rápido.

• Armazenamento local• Não resiste ao reinicio da

aplicação• Dependente da sessão• Facilmente corrompido

+ -

Page 12: Persistência

Quando utilizar?• Sempre que possível• Dados que não precisem ser persistido em caso de

reinicio da aplicação• Dados com um escopo pequeno de utilização• Dados pequenos

Page 13: Persistência

Cache

Page 14: Persistência

•Possibilidade de unificação de dados•Possível resistir ao reinicio da aplicação.•Configuração de durabilidade do dado.

• Extremamente configurável•De maior complexidade de implementação.•Não implementa a noção de transação• Possíveis problema de concorrência.• Exige drive.

+ -

Page 15: Persistência

Quando utilizar?• Dados que não são alterados com frequência mas muito

consultados• Dados que que seriam armazenados em memoria mas

que precisam estar distribuídos entre varias aplicações.• Dados que precisem de algum tipo de sobreviver ao

reinicio da aplicação mas que não sejam de longa duração.

Page 16: Persistência

Arquivo

Page 17: Persistência

•Fácil acesso a partir da aplicação•De alta granularidade de informação•Possibilidade de utilização de dados formatados

•Não validação de formato•Dependente do sistema de arquivos•Lento•Sistema de permissões

+ -

Page 18: Persistência

Quando utilizar?• Sempre que for possível. O sistema de arquivos é seu

amigo• Armazenamento de informações locais.• Informações relevantes apenas a aquela instancia da

aplicação.• Dados que precisem resistir a reinicialização da

aplicação

Page 19: Persistência

Arquivos de configuração

Page 20: Persistência

O que é diferente?• Dados pertinentes a aplicação• Configurações da aplicação que não sejam alteradas

com frequência.• Configurações que quando alteradas envolvam o

reinicio do serviço• Configurações que variem pela servidor no qual a

aplicação está instalada.

Page 21: Persistência

Convention over

configuration

Page 22: Persistência

Sample codepublic class PageAppearanceSection : ConfigurationSection {

// Create a "remoteOnly" attribute. [ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired =

false)] public Boolean RemoteOnly {

get { return (Boolean)this["remoteOnly"];

} set {

this["remoteOnly"] = value; }

}}

Page 23: Persistência

Rede

Page 24: Persistência

•Dados possíveis de se centralizar•Fácil alteração de esquema.• Inter-operavel.

•Baixo índice de confiança em disponibilidade•Baixa performance

+ -

Page 25: Persistência

Quando utilizar?• Dados com um nível de consulta alto!• Dados que exigem performance mas centralização• Consultas que podem ser distribuídas.• Dados não essenciais.

Page 26: Persistência

Bancos de dados

Page 27: Persistência

•Longo tempo de persistência•Facilidade de consulta•Dados estruturados•Ligação entre dados•Configuração centralizada

•Baixo nível de desempenho•Dependência de rede•Aumento de complexidade da aplicação•Manutenção de drivers

+ -

Page 28: Persistência

Bacos relacionai

s

Page 29: Persistência

Quando utilizar?• Dados que exijam proteção de transação• Dados que exijam centralização.• Esquemas relacionais de dados.

Page 30: Persistência

Bancos não

relacionais

Page 31: Persistência

Quando utilizar?• Dados com um nível de consulta alto!• Dados que exigem performance mas centralização• Consultas que podem ser distribuídas.• Dados não essenciais. (BETA)• MAP/REDUCE

Page 32: Persistência

Fita

Page 33: Persistência

•Longuíssimo tempo de persistência•Baixo custo de armazenamento

•Dificuldade de tempo de consulta•Escrita sequencial•Leitura sequencial

+ -

Page 34: Persistência

Quando utilizar?• Dados históricos• Dados com um volume muito grande que não precisem

de consultas frequentes.• Backups

Page 35: Persistência

Duvidas?