Persistência

Post on 18-Feb-2017

318 views 1 download

Transcript of Persistência

Persistência

O que é persistência de dados?

Entendendo as variáveis dos dados

Tempo de duração

Escopo

Alterações

Leitura

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

Tipos de persistência

Memoria

• 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

+ -

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

Cache

•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.

+ -

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.

Arquivo

•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

+ -

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

Arquivos de configuração

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.

Convention over

configuration

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; }

}}

Rede

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

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

+ -

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.

Bancos de dados

•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

+ -

Bacos relacionai

s

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

Bancos não

relacionais

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

Fita

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

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

+ -

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

de consultas frequentes.• Backups

Duvidas?