SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Estou seguro com NoSQL?
Rafael Redondo
O que falaremos
ACID(Atomicity, Consistency, Isolation, Durability)
+ backup
O que não falaremos
SQL
X
NoSQL
O que não falaremos
BASE
(Basically Available, Soft state, Eventual consistency)
CAP
(Consistency, Availability, Partition tolerance)
Programação
• Durabilidade
• Redis
• Cassandra
• Comparativo: Redis, Cassandra,
PostgreSQL
Durabilidade
“Garantir que os dados estarão disponíveis
em definitivo.”
O SO e o Disco
CLIENT
MÍDIA FÍSICA
CACHES
BUFFERS
CACHES
BUFFERS
CONTROLADOR DE DISCO
BANCO DE DADOS
SOWRITE
FSYNC
Quando o dado está seguro?
CLIENT
MÍDIA FÍSICA
CACHES
BUFFERS
CACHES
BUFFERS
CONTROLADOR DE DISCO
BANCO DE DADOS
SOFALHA DE BD
QUEDA DE
ENERGIA
WRITE vs FSYNC
Desempenho
Usa Cache
Garantia
Usa Recursos
LINUX: 30 Segundos
Qual o requisito não-funcional mais importante?
Redis
Modos de persistência
• RDB (Redis Database), faz um snapshot da base em
intervalos pré-determinados.
• AOF (Append of file), log com todas as operações.
• Nenhum, caso você queira que os dados estejam
disponíveis apenas enquanto durar o processo.
• Ambos. Nesse caso, o Redis vai utilizar o AOF quando
iniciar o processo para garantir que os dados estejam
completos.
Vantagens do RDB
• Perfeito para back-up: arquivo único com
representação completa da base.
• Ótima para recuperação de desastres: pode
ser armazenado em datacenters externos.
• Maximiza a performance: roda em um
processo filho, evitando que o processo
principal faça I/O.
• Restart mais rápido em comparação com o
AOF.
Desvantagens do RDB
• Se o seu snapshot por feito a cada 5 minutos e
o Redis parar sem um shutdown normal,
haverá perdas.
• Ainda que o snapshot rode em um processo
filho, pode interferir no processo pai caso a
base seja muito grande ou o CPU e o disco não
sejam performáticos.
Vantagens do AOF
• Configurações: nunca, a cada segundo ou a
cada query.
• Thread paralela ajuda a performance.
• Log simples: não há problemas com arquivo
corrompido nem gravações randômicas.
• Mesmo que o logs termine com um comando
pela metade por alguma razão (disco cheio,
queda de energia), a ferramenta redis-check-
aof permite fácil correção.
Vantagens do AOF
• Dados que surgem após o início da reescrita
do AOF são gravados no arquivo antigo e
também em uma fila na memória, para que
esses dados sejam gravados no novo arquivo.
• O AOF contém o log de todas as operações,
uma depois da outra, em um formato legível e
editável.
• As reescritas são geradas usando operações
de I/O sequenciais, tornando o processo
eficiente mesmo em discos tradicionais.
Desvantagens do AOF
• São maiores que o RDB.
• Dependendo da configuração da escrita do
AOF, pode interferir na performance do Redis.
• Os comandos gerados não são imunes a bugs,
embora estes sejam raros.
RDB ou AOF?
• Ambos. caso você deseje que a segurança dos
dados fique em um nível de um banco
tradicional.
• Se você pode viver com a perda de alguns
minutos de dados, use apenas o RDB.
• O Redis não deixa uma execução interferir na
outra.
• Há planos a longo prazo para que AOF e RDB
sejam unificados.
Backup
• Crie um job para criar snapshots RDB de hora
em hora
• Renomeie os snapshots com data e hora.
• Transfira o snapshot para um local fora do seu
data center.
• Certifique-se que o tamanho do arquivo
transferido é igual ao do arquivo copiado.
• Crie algum tipo de alerta caso o arquivo não
esteja sendo transferido.
Cassandra
Modos de persistência
• Replicação do mesmo dado em diversos nós.
• Nós podem estar em datacenters ou regiões
diferentes.
• Escolha do tipo de consistência para cada
operação.
• Commitlog.
• SSTable.
• HintedHandoff
Commitlog
• A cada operação, primeiramente o commitlog
é escrito de forma sequencial
• É similar ao AOF do Redis
• A escrita sequencial é rápida, já que não perde
tempo varrendo o disco
• Age como um log de ​​recuperação de crash
para os dados
• A escrita nunca será considerada se não tiver
ao menos gravada no commitlog
fsync
• periodic: joga o cache para o commitlog a
cada periodo configurado no
commitlog_sync_period_in_ms (default:
10000ms), sem travar novos writes
• batch: o Cassandra não aceita outras escritas
para o cache até que seja feito o flush, dentro
do período limite configurado em
commitlog_sync_batch_window_in_ms.
fsync
• coloque o commitlog em outro drive para não
disputar recursos de I/O com SSTable
• o dado não será perdido uma vez que esteja
no arquivo do commitlog
• o Cassandra roda o commitlog após o restart
do sistema para recuperar dados que possam
ter sido perdidos
memtable
• Depois do commitlog, o Cassandra escreve o
dado na memtable
• Memtable é um cache na memória com os
dados no formato chave/coluna
• É classificada por chave
• Cada ColumnFamily tem sua própria
Memtable e recupera os dados da chave
SSTables
• Sorted String Table
• Memtables são descarregadas quando esta
fica sem espaço, ou quando o número de
chaves excede o limite (default de 128), ou
quando atinge um determinado tempo
• uma SSTable é imutável e não pode ser
alterada
SSTables
• Inúmeras SSTables serão criadas no disco para
cada CF
• Ler uma linha requer ler todos os SSTables de
uma CF para obter o valor mais atual
• Em algum momento é feito um merge das
SStables para reduzir o tempo de leitura
HintedHandoff
• Técnica otimizada de escrever dados em
réplicas
• Quando uma escrita é feita e um nó está fora:
1. O coordenador envia uma mensagem para
outro nó vivo
2. Esse nó vai lembrar o nó caído das mudanças
assim que ele voltar a funcionar
HintedHandoff
• HH reduz a latência da escrita quando uma
réplica está fora do ar
• HH provê alta disponibilidade de escrita
• Se não houve outros nós vivos, dependendo
do nível de consistência, o coordenador envia
a mensagem para si mesmo
Backup
• A maneira mais simples de fazer backup é
usando o Opscenter.
• Selecione a keyspace, frequência de backup e
frequência com que backups antigos são
apagados.
• Também é possível configurar o percentual
mínimo de espaço em disco para que os
backups não encham o disco.
PostgreSql
Modos de persistência
• fsync: desligado, deixa ao SO a tarefa de fazer
fsync. Em caso de crash, se desligado pode
deixar a base inconsistente.
• synchronous_commit: desligado, faz o fsync
em até wal_writer_delay (default 200ms) * 3.
• Se crashar, dados dos últimos 600ms sofrerão
rollback, mantendo a base consistente.
• Se ambos estiverem ligados, só retornam ok
quando o dado estiver no disco.
Backup
• Use a ferramenta pg_dump
• É gerado um arquivo que pode ser enviado
para outro datacenter.
Comparativo
fsync em config default
Até 600ms
Até 10000ms
Até 1000ms
Estratégia de backup
Automatizável via job
Automatizável via OPSC
Automático por default
Outras características
Master/Slave
Commitlog, HintedHandoff,
Replicação em nós
Master/Slave, AOF
Partindo para o HW
Ephemeral
Rotacional
ESB
SSD
DISCOS
Ephemeral x ESB
Rotacional x SSD
Bibliografia
• http://redis.io/topics/persistence
• http://oldblog.antirez.com/post/redis-
persistence-demystified.html
• https://sites.google.com/site/developertips/H
ome/java/how-cassandra-writes-and-reads-
data
• http://www.datastax.com/documentation/ops
center/3.2/webhelp/index.html
Bibliografia
• http://stackoverflow.com/questions/1037101
7/fsync-vs-write-system-call
• http://www.postgresql.org/docs/9.0/static/ru
ntime-config-wal.html
• http://dba.stackexchange.com/questions/185
09/difference-between-fsync-and-
synchronous-commit-postgresql
• http://jasonirwin.ca/2011/08/17/ec2-raid-
comparison-ephemeral-vs-ebs-volumes/
Bibliografia
• http://www.samsung.com/global/business/se
miconductor/minisite/SSD/de/html/about/wh
itepaper01.html

Weitere ähnliche Inhalte

Was ist angesagt?

Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linuxelliando dias
 
Alta Disponibilidade
Alta DisponibilidadeAlta Disponibilidade
Alta Disponibilidadeelliando dias
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidadeMarcelo Garcia
 
ZFS – Zettabyte File System
ZFS – Zettabyte File SystemZFS – Zettabyte File System
ZFS – Zettabyte File Systemflisolmaringa
 
Valdir Adorni - Infra and S.A.N Assessment Integration Sample
Valdir Adorni - Infra and S.A.N Assessment Integration SampleValdir Adorni - Infra and S.A.N Assessment Integration Sample
Valdir Adorni - Infra and S.A.N Assessment Integration SampleValdir Adorni
 
Open Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreOpen Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreFrederico Madeira
 
[24HOP] SQL Server em maquinas virtuais do Windows Azure
[24HOP] SQL Server em maquinas virtuais do Windows Azure[24HOP] SQL Server em maquinas virtuais do Windows Azure
[24HOP] SQL Server em maquinas virtuais do Windows AzureVitor Tomaz
 
Análise comparativa entre as versões 3 e 4 do protocolo nfs em arquiteturas n...
Análise comparativa entre as versões 3 e 4 do protocolo nfs em arquiteturas n...Análise comparativa entre as versões 3 e 4 do protocolo nfs em arquiteturas n...
Análise comparativa entre as versões 3 e 4 do protocolo nfs em arquiteturas n...Joao Galdino Mello de Souza
 
Análise comparativa entre as versões 3 e 4 do protocolo NFS em arquiteturas NAS
Análise comparativa entre as versões 3 e 4 do protocolo NFS em arquiteturas NASAnálise comparativa entre as versões 3 e 4 do protocolo NFS em arquiteturas NAS
Análise comparativa entre as versões 3 e 4 do protocolo NFS em arquiteturas NASKleber Silva
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...tdc-globalcode
 
O docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiO docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiFrancisco Gonçalves
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaLucas Brasilino
 
Containers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteContainers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteRoberto Mello
 

Was ist angesagt? (20)

Performance HyperV
Performance HyperVPerformance HyperV
Performance HyperV
 
Gfs slides
Gfs slidesGfs slides
Gfs slides
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linux
 
Alta Disponibilidade
Alta DisponibilidadeAlta Disponibilidade
Alta Disponibilidade
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidade
 
ZFS – Zettabyte File System
ZFS – Zettabyte File SystemZFS – Zettabyte File System
ZFS – Zettabyte File System
 
Valdir Adorni - Infra and S.A.N Assessment Integration Sample
Valdir Adorni - Infra and S.A.N Assessment Integration SampleValdir Adorni - Infra and S.A.N Assessment Integration Sample
Valdir Adorni - Infra and S.A.N Assessment Integration Sample
 
Open Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreOpen Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software Livre
 
[24HOP] SQL Server em maquinas virtuais do Windows Azure
[24HOP] SQL Server em maquinas virtuais do Windows Azure[24HOP] SQL Server em maquinas virtuais do Windows Azure
[24HOP] SQL Server em maquinas virtuais do Windows Azure
 
Análise comparativa entre as versões 3 e 4 do protocolo nfs em arquiteturas n...
Análise comparativa entre as versões 3 e 4 do protocolo nfs em arquiteturas n...Análise comparativa entre as versões 3 e 4 do protocolo nfs em arquiteturas n...
Análise comparativa entre as versões 3 e 4 do protocolo nfs em arquiteturas n...
 
Análise comparativa entre as versões 3 e 4 do protocolo NFS em arquiteturas NAS
Análise comparativa entre as versões 3 e 4 do protocolo NFS em arquiteturas NASAnálise comparativa entre as versões 3 e 4 do protocolo NFS em arquiteturas NAS
Análise comparativa entre as versões 3 e 4 do protocolo NFS em arquiteturas NAS
 
Livro cisco
Livro ciscoLivro cisco
Livro cisco
 
Clusters
ClustersClusters
Clusters
 
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUXARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
 
O docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiO docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-ti
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
 
Virtualização com Xen
Virtualização com XenVirtualização com Xen
Virtualização com Xen
 
Containers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteContainers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container Suite
 
Terminal server
Terminal serverTerminal server
Terminal server
 

Ähnlich wie Estou seguro com no sql

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Sistemas operativos servidor
Sistemas operativos servidorSistemas operativos servidor
Sistemas operativos servidorAndré bogas
 
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Lucas A. Romão
 
Redes de computadores módulo 3
Redes de computadores módulo 3Redes de computadores módulo 3
Redes de computadores módulo 3ruitavares998
 
Tcvb2 diogo mendes_sistemas operativos servidor_v1
Tcvb2 diogo mendes_sistemas operativos servidor_v1Tcvb2 diogo mendes_sistemas operativos servidor_v1
Tcvb2 diogo mendes_sistemas operativos servidor_v1diogomendes99
 
Sistemas operativos servidor
Sistemas operativos servidorSistemas operativos servidor
Sistemas operativos servidorsimoesflavio
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoFabio Telles Rodriguez
 
Resumos sobre tecnologias de informação e conceitos basicos
Resumos sobre tecnologias de informação e conceitos basicosResumos sobre tecnologias de informação e conceitos basicos
Resumos sobre tecnologias de informação e conceitos basicosJoo200
 
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaGerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaAlexandre Duarte
 
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAsRonaldo Leite Martins
 
Performance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MXPerformance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MXAlex Hübner
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpCampus Party Brasil
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLJohnes Castro
 
Memoria do computador
Memoria do computadorMemoria do computador
Memoria do computadorMarcos Amauri
 
Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário...
Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário...Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário...
Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário...Leonardo Santos
 

Ähnlich wie Estou seguro com no sql (20)

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Sistemas operativos servidor
Sistemas operativos servidorSistemas operativos servidor
Sistemas operativos servidor
 
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
 
Redes de computadores módulo 3
Redes de computadores módulo 3Redes de computadores módulo 3
Redes de computadores módulo 3
 
Tcvb2 diogo mendes_sistemas operativos servidor_v1
Tcvb2 diogo mendes_sistemas operativos servidor_v1Tcvb2 diogo mendes_sistemas operativos servidor_v1
Tcvb2 diogo mendes_sistemas operativos servidor_v1
 
Redes e Servidores
Redes e ServidoresRedes e Servidores
Redes e Servidores
 
Sistemas operativos servidor
Sistemas operativos servidorSistemas operativos servidor
Sistemas operativos servidor
 
Hd’s e armazenamento
Hd’s e armazenamentoHd’s e armazenamento
Hd’s e armazenamento
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Resumos sobre tecnologias de informação e conceitos basicos
Resumos sobre tecnologias de informação e conceitos basicosResumos sobre tecnologias de informação e conceitos basicos
Resumos sobre tecnologias de informação e conceitos basicos
 
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaGerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
 
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
 
Introducao ao Amazon Redshift
Introducao ao Amazon RedshiftIntroducao ao Amazon Redshift
Introducao ao Amazon Redshift
 
Performance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MXPerformance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MX
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs Php
 
Clusterização de Aplicações PHP
Clusterização de Aplicações PHPClusterização de Aplicações PHP
Clusterização de Aplicações PHP
 
PostgreSQL Conceitos e aplicações
PostgreSQL  Conceitos e aplicaçõesPostgreSQL  Conceitos e aplicações
PostgreSQL Conceitos e aplicações
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
 
Memoria do computador
Memoria do computadorMemoria do computador
Memoria do computador
 
Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário...
Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário...Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário...
Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário...
 

Estou seguro com no sql

  • 1. Estou seguro com NoSQL? Rafael Redondo
  • 2. O que falaremos ACID(Atomicity, Consistency, Isolation, Durability) + backup
  • 3. O que não falaremos SQL X NoSQL
  • 4. O que não falaremos BASE (Basically Available, Soft state, Eventual consistency) CAP (Consistency, Availability, Partition tolerance)
  • 5. Programação • Durabilidade • Redis • Cassandra • Comparativo: Redis, Cassandra, PostgreSQL
  • 6. Durabilidade “Garantir que os dados estarão disponíveis em definitivo.”
  • 7. O SO e o Disco CLIENT MÍDIA FÍSICA CACHES BUFFERS CACHES BUFFERS CONTROLADOR DE DISCO BANCO DE DADOS SOWRITE FSYNC
  • 8. Quando o dado está seguro? CLIENT MÍDIA FÍSICA CACHES BUFFERS CACHES BUFFERS CONTROLADOR DE DISCO BANCO DE DADOS SOFALHA DE BD QUEDA DE ENERGIA
  • 9. WRITE vs FSYNC Desempenho Usa Cache Garantia Usa Recursos LINUX: 30 Segundos Qual o requisito não-funcional mais importante?
  • 10. Redis
  • 11. Modos de persistência • RDB (Redis Database), faz um snapshot da base em intervalos pré-determinados. • AOF (Append of file), log com todas as operações. • Nenhum, caso você queira que os dados estejam disponíveis apenas enquanto durar o processo. • Ambos. Nesse caso, o Redis vai utilizar o AOF quando iniciar o processo para garantir que os dados estejam completos.
  • 12. Vantagens do RDB • Perfeito para back-up: arquivo único com representação completa da base. • Ótima para recuperação de desastres: pode ser armazenado em datacenters externos. • Maximiza a performance: roda em um processo filho, evitando que o processo principal faça I/O. • Restart mais rápido em comparação com o AOF.
  • 13. Desvantagens do RDB • Se o seu snapshot por feito a cada 5 minutos e o Redis parar sem um shutdown normal, haverá perdas. • Ainda que o snapshot rode em um processo filho, pode interferir no processo pai caso a base seja muito grande ou o CPU e o disco não sejam performáticos.
  • 14. Vantagens do AOF • Configurações: nunca, a cada segundo ou a cada query. • Thread paralela ajuda a performance. • Log simples: não há problemas com arquivo corrompido nem gravações randômicas. • Mesmo que o logs termine com um comando pela metade por alguma razão (disco cheio, queda de energia), a ferramenta redis-check- aof permite fácil correção.
  • 15. Vantagens do AOF • Dados que surgem após o início da reescrita do AOF são gravados no arquivo antigo e também em uma fila na memória, para que esses dados sejam gravados no novo arquivo. • O AOF contém o log de todas as operações, uma depois da outra, em um formato legível e editável. • As reescritas são geradas usando operações de I/O sequenciais, tornando o processo eficiente mesmo em discos tradicionais.
  • 16. Desvantagens do AOF • São maiores que o RDB. • Dependendo da configuração da escrita do AOF, pode interferir na performance do Redis. • Os comandos gerados não são imunes a bugs, embora estes sejam raros.
  • 17. RDB ou AOF? • Ambos. caso você deseje que a segurança dos dados fique em um nível de um banco tradicional. • Se você pode viver com a perda de alguns minutos de dados, use apenas o RDB. • O Redis não deixa uma execução interferir na outra. • Há planos a longo prazo para que AOF e RDB sejam unificados.
  • 18. Backup • Crie um job para criar snapshots RDB de hora em hora • Renomeie os snapshots com data e hora. • Transfira o snapshot para um local fora do seu data center. • Certifique-se que o tamanho do arquivo transferido é igual ao do arquivo copiado. • Crie algum tipo de alerta caso o arquivo não esteja sendo transferido.
  • 20. Modos de persistência • Replicação do mesmo dado em diversos nós. • Nós podem estar em datacenters ou regiões diferentes. • Escolha do tipo de consistência para cada operação. • Commitlog. • SSTable. • HintedHandoff
  • 21. Commitlog • A cada operação, primeiramente o commitlog é escrito de forma sequencial • É similar ao AOF do Redis • A escrita sequencial é rápida, já que não perde tempo varrendo o disco • Age como um log de ​​recuperação de crash para os dados • A escrita nunca será considerada se não tiver ao menos gravada no commitlog
  • 22. fsync • periodic: joga o cache para o commitlog a cada periodo configurado no commitlog_sync_period_in_ms (default: 10000ms), sem travar novos writes • batch: o Cassandra não aceita outras escritas para o cache até que seja feito o flush, dentro do período limite configurado em commitlog_sync_batch_window_in_ms.
  • 23. fsync • coloque o commitlog em outro drive para não disputar recursos de I/O com SSTable • o dado não será perdido uma vez que esteja no arquivo do commitlog • o Cassandra roda o commitlog após o restart do sistema para recuperar dados que possam ter sido perdidos
  • 24. memtable • Depois do commitlog, o Cassandra escreve o dado na memtable • Memtable é um cache na memória com os dados no formato chave/coluna • É classificada por chave • Cada ColumnFamily tem sua própria Memtable e recupera os dados da chave
  • 25. SSTables • Sorted String Table • Memtables são descarregadas quando esta fica sem espaço, ou quando o número de chaves excede o limite (default de 128), ou quando atinge um determinado tempo • uma SSTable é imutável e não pode ser alterada
  • 26. SSTables • Inúmeras SSTables serão criadas no disco para cada CF • Ler uma linha requer ler todos os SSTables de uma CF para obter o valor mais atual • Em algum momento é feito um merge das SStables para reduzir o tempo de leitura
  • 27. HintedHandoff • Técnica otimizada de escrever dados em réplicas • Quando uma escrita é feita e um nó está fora: 1. O coordenador envia uma mensagem para outro nó vivo 2. Esse nó vai lembrar o nó caído das mudanças assim que ele voltar a funcionar
  • 28. HintedHandoff • HH reduz a latência da escrita quando uma réplica está fora do ar • HH provê alta disponibilidade de escrita • Se não houve outros nós vivos, dependendo do nível de consistência, o coordenador envia a mensagem para si mesmo
  • 29. Backup • A maneira mais simples de fazer backup é usando o Opscenter. • Selecione a keyspace, frequência de backup e frequência com que backups antigos são apagados. • Também é possível configurar o percentual mínimo de espaço em disco para que os backups não encham o disco.
  • 31. Modos de persistência • fsync: desligado, deixa ao SO a tarefa de fazer fsync. Em caso de crash, se desligado pode deixar a base inconsistente. • synchronous_commit: desligado, faz o fsync em até wal_writer_delay (default 200ms) * 3. • Se crashar, dados dos últimos 600ms sofrerão rollback, mantendo a base consistente. • Se ambos estiverem ligados, só retornam ok quando o dado estiver no disco.
  • 32. Backup • Use a ferramenta pg_dump • É gerado um arquivo que pode ser enviado para outro datacenter.
  • 34. fsync em config default Até 600ms Até 10000ms Até 1000ms
  • 35. Estratégia de backup Automatizável via job Automatizável via OPSC Automático por default
  • 37. Partindo para o HW Ephemeral Rotacional ESB SSD DISCOS
  • 40. Bibliografia • http://redis.io/topics/persistence • http://oldblog.antirez.com/post/redis- persistence-demystified.html • https://sites.google.com/site/developertips/H ome/java/how-cassandra-writes-and-reads- data • http://www.datastax.com/documentation/ops center/3.2/webhelp/index.html
  • 41. Bibliografia • http://stackoverflow.com/questions/1037101 7/fsync-vs-write-system-call • http://www.postgresql.org/docs/9.0/static/ru ntime-config-wal.html • http://dba.stackexchange.com/questions/185 09/difference-between-fsync-and- synchronous-commit-postgresql • http://jasonirwin.ca/2011/08/17/ec2-raid- comparison-ephemeral-vs-ebs-volumes/