Um banco de dados na memória corresponde a um banco de dados com propósito específico que depende principalmente da memória interna para realizar o armazenamento de dados. Ele possibilita tempos de resposta mínimos ao eliminar a necessidade de acessar unidades de disco padrão (SSDs). Os bancos de dados na memória são ideais para aplicações que requerem tempos de resposta de microssegundos ou que apresentam grandes picos de tráfego, como tabelas de classificação de jogos, armazenamento de sessões e análise de dados em tempo real. Os termos banco de dados de memória principal (MMDB, na sigla em inglês), sistema de banco de dados na memória (IMDS, na sigla em inglês) e sistema de banco de dados em tempo real (RTDB, sigla em inglês) também se referem aos bancos de dados na memória.

Quais são as vantagens dos bancos de dados na memória?

Um banco de dados na memória traz diversas vantagens que exploraremos detalhadamente a seguir.

Baixa latência e fornecimento de respostas em tempo real

A latência é o atraso entre a solicitação de acesso aos dados e a resposta da aplicação. Os bancos de dados na memória oferecem baixas latências previsíveis, independentemente da escala. Eles oferecem latência de leitura de microssegundos, latência de gravação abaixo de dez milissegundos e alto throughput.

Como resultado, o armazenamento na memória permite que as empresas tomem decisões baseadas em dados em tempo real. Você pode projetar aplicações que processem dados e respondam às alterações antes que seja tarde demais. Por exemplo, a computação na memória para dados de sensores de veículos autônomos pode fornecer o tempo de resposta desejado em frações de segundo para frenagens de emergência.

Alto throughput

Os bancos de dados na memória são conhecidos por seu alto throughput. O throughput se refere ao número de operações de leitura (throughput de leitura) ou de gravação (throughput de gravação) em um determinado período. Os exemplos incluem bytes por minuto ou transações por segundo.

Alta escalabilidade

É possível escalar seu banco de dados na memória para atender às demandas flutuantes das aplicações. A escalabilidade de gravação e de leitura pode ser realizada sem afetar negativamente a performance. O banco de dados permanece on-line e oferece suporte a operações de leitura e de gravação durante o redimensionamento.

Quais são os casos de uso dos bancos de dados na memória?

Os bancos de dados na memória são uma boa opção para os setores bancário, de telecomunicações, de jogos e de publicidade móvel. Abaixo, apresentamos alguns exemplos de casos de uso para bancos de dados na memória.

Armazenamento em cache

Um cache é uma camada de armazenamento de dados de alta velocidade que armazena um subconjunto de dados, que são normalmente transitórios. O objetivo principal de um cache é aumentar a performance da recuperação de dados ao reduzir a necessidade de acesso à camada de armazenamento subjacente, que é mais lenta. Isso significa que as solicitações futuras para esses dados serão atendidas com mais rapidez do que seria possível ao acessar o local de armazenamento primário dos dados.

O armazenamento em cache permite reutilizar dados recuperados ou computados anteriormente com eficiência. O armazenamento de dados na memória funciona bem para acesso mais rápido aos dados armazenados em cache. O armazenamento em cache troca durabilidade por tempo de resposta. O tempo de resposta é mais rápido porque os dados são recuperados da memória, mas o armazenamento em cache não protege contra a perda de dados na memória. Por causa disso, o armazenamento em cache é frequentemente usado em combinação com um banco de dados durável baseado em disco.

Ofertas em tempo real

As ofertas em tempo real se referem à aquisição e à venda de impressões de anúncios on-line. Normalmente, a oferta deve ser feita enquanto o usuário carrega uma página da Web em 100 a 120 milissegundos e, às vezes, em até 50 milissegundos. Durante esse período, as aplicações de ofertas em tempo real solicitam ofertas de todos os compradores para o espaço de anúncio, selecionam uma oferta vencedora com base em vários critérios, exibem a oferta e coletam informações após a exibição do anúncio. Os bancos de dados na memória são opções ideais para ingestão, processamento e análise de dados em tempo real com latência inferior a um milissegundo.

Tabelas de classificação de jogos

Uma tabela de classificação de jogos relativa mostra a posição de um jogador em relação a outros jogadores em posições semelhantes. Essas tabelas de classificação podem ajudar a aumentar o engajamento entre os jogadores e evitar que fiquem desmotivados em comparação com os melhores jogadores. Os bancos de dados na memória podem fornecer resultados de classificação com rapidez e atualizar a tabela de classificação em tempo real para um jogo com milhões de jogadores.

Como funciona um cache na memória?

Um cache na memória depende da memória de acesso aleatório (RAM) para armazenar dados. A tecnologia armazena tabelas de dados diretamente na RAM, em vez de utilizar unidades externas. Estruturas de dados especializadas permitem a indexação de registros de dados. Os índices atuam como indicadores diretos para linhas e colunas específicas. No entanto, os dados físicos reais são compactados e têm um formato não relacional. Quando você realiza uma solicitação de acesso, o banco de dados navega até o valor exato dos dados usando o índice. Os dados armazenados estão sempre disponíveis em um formato diretamente utilizável.

Coisas como a computação de 64 bits, os preços mais baixos de RAM e os servidores com vários núcleos tornaram o armazenamento na memória mais comum. Além disso, os armazenamentos de dados baseados em nuvem permitem aumentar ou reduzir a escala verticalmente para recursos de RAM, conforme necessário, tornando a tecnologia na memória mais flexível e acessível.

Diferença entre o cache na memória e os bancos de dados tradicionais baseados em disco

Um banco de dados tradicional mantém todos os dados em unidades de disco externas ou unidades de estado sólido. Cada operação de leitura e de gravação requer acesso ao disco. Por outro lado, o cache na memória não prioriza a persistência dos dados. Por exemplo, os caches podem somente salvar dados periodicamente em mídias de armazenamento externas. Resumimos abaixo as diferenças entre caches na memória e bancos de dados tradicionais.

Qual é a diferença entre um cache na memória e um banco de dados na memória?

Os caches na memória oferecem melhor performance porque as gravações não são persistentes. Isso elimina o tempo adicional necessário para a persistência dos dados. Um banco de dados na memória persiste as gravações, tornando as alterações de dados duráveis. Essa durabilidade ocorre às custas de uma performance inferior para as gravações. No entanto, os bancos de dados na memória ainda oferecem melhor performance quando comparados com um banco de dados baseado em disco. Do ponto de vista da performance, eles se encontram entre um cache na memória e um banco de dados baseado em disco.

Quais são as limitações dos caches na memória?

Como todos os dados são armazenados e gerenciados exclusivamente na memória, os caches na memória correm o risco de perder dados em caso de falha de um processo ou de um servidor. Para melhorar a durabilidade, um cache na memória pode persistir dados periodicamente em bancos de dados em disco. Abaixo, detalharemos alguns mecanismos que podem melhorar a durabilidade.

Arquivos de snapshot

Os arquivos de snapshot registram o estado do banco de dados em um determinado momento. O cache na memória gera snapshots periodicamente ou durante um desligamento controlado. Embora a captura de snapshots melhore a durabilidade até certo ponto, ainda pode ocorrer a perda de dados entre os snapshots.

Registro em log de transações

O registro em log de transações registra alterações no banco de dados em um arquivo de diário externo. O registro em log é independente da leitura e da gravação de dados e não afeta a performance. O arquivo de diário facilita a recuperação automática de um cache na memória.

Replicação

Alguns caches na memória dependem de redundância para fornecer alta disponibilidade. Eles mantêm múltiplas cópias dos mesmos dados em diferentes módulos de memória. A falha de um módulo resulta em failover automático para a cópia de backup duplicada. Isso mitiga o risco de perda de dados com um cache.

Como a AWS pode oferecer suporte aos requisitos de banco de dados e de cache na memória?

A AWS fornece vários serviços diferentes de bancos de dados e caches na memória totalmente gerenciados para atender suas necessidades específicas.

Banco de dados na memória

Amazon MemoryDB para Redis

O Amazon MemoryDB para Redis é um serviço de banco de dados na memória durável que oferece performance ultrarrápida. Ele é compatível com o Redis, um popular armazenamento de dados de código aberto. Isso possibilita que os clientes desenvolvam aplicações com rapidez usando as mesmas estruturas de dados, APIs e comandos flexíveis e fáceis de usar ​​do Redis que já usam. O MemoryDB também armazena seus dados de forma durável em várias zonas de disponibilidade (AZs, na sigla em inglês) usando um log transacional multi-AZ para possibilitar rapidez em failovers, recuperações de banco de dados e reinicializações de nós.

Caches na memória

Amazon ElastiCache para Redis

O Amazon ElastiCache para Redis é um serviço de armazenamento em cache na memória extremamente rápido que possibilita latência de microssegundos para potencializar aplicações na escala de Internet em tempo real. Os desenvolvedores podem usar o ElastiCache para Redis como um cache na memória ou utilizá-lo em casos de uso que não requerem alta durabilidade de dados. A configuração de cluster do ElastiCache para Redis oferece suporte para que os clientes executem workloads do Redis com até 6,1 TB de capacidade na memória em um único cluster. O ElastiCache para Redis também oferece a capacidade de adicionar e remover fragmentos de um cluster em execução. Você pode aumentar e reduzir a escala horizontalmente de forma dinâmica para workloads do cluster do Redis com a finalidade de se adaptar às alterações na demanda.

Amazon ElastiCache para Memcached

O Amazon ElastiCache para Memcached é um serviço de armazenamento em cache de chave-valor compatível com Memcached. Ele oferece alta performance, facilidade de uso e simplicidade semelhantes ao Memcached. O ElastiCache para Memcached é totalmente gerenciado, escalável e seguro, o que o torna um candidato ideal para casos de uso em que os dados acessados ​​com frequência precisam estar na memória.

Comece a usar os bancos de dados ou os caches na memória na AWS criando uma conta gratuita hoje mesmo.

Introduction to Amazon MemoryDB for Redis
Introduction to Amazon ElastiCache for Redis