Redis

Os principais SGBDs NoSQL

No artigo anterior, falamos sobre os principais SGBDs relacionais. Neste, abordaremos os principais SGBDs não-relacionais ou, simplesmente, NoSQL.

Antes de prosseguirmos…

Data Base Management System ou Sistema de Gerenciamento de Banco de Dados (SGBD) são um conjunto de softwares utilizados para o gerenciamento de uma base de dados, tendo como principal objetivo gerenciar as bases de dados utilizadas por aplicações clientes e remover esta responsabilidade das mesmas.

São responsáveis por controlar, acessar, organizar e proteger as informações de uma aplicação. Os SGBDs são divididos em dois grupos: Relacionais e não relacionais. Aqui em nosso blog também já possuímos um artigo sobre SQL vs NoSQL.

SGBDS relacionais são banco de dados que modelam os dados no formato de tabelas, que podem se relacionar entre si. Cada tabela pode possuir diversos atributos, com diversos tipos de dados.

Já os SGBDs NoSQL (Not Only SQL) é o termo utilizado para banco de dados não-relacionais de alto desempenho, onde geralmente não é utilizado o SQL como linguagem de consulta. Estes bancos utilizam diversos modelos de dados incluindo documentos, gráficos, chave-valor e colunares. São amplamente reconhecidos pela facilidade em seu desenvolvimento, desempenho escalável, alta disponibilidade e resiliência.

E são justamente sobre os SGBDs não-relacionais que falaremos neste artigo, trazendo alguns deles e suas principais características.

MongoDB

De código aberto, multiplataforma e lançado em 2009, o MongoDB é considerado um “líder” no quesito SGBD NoSQL.

É um banco de dados orientado a documentos, baseado no formato JSON (JavaScript Object Notation) e possui uma curva de aprendizagem baixíssima.

Dentre suas principais características, podemos citar:

  • Totalmente gratuito;
  • Possui uma baixa curva de aprendizagem, como dito acima;
  • Fácil escalabilidade horizontal;
  • Multiplataforma;
  • Suporte para transações ACID multi-documento;
  • Consultas suportam funções JavaScript personalizadas, entre outros.

É um SGBD muito utilizado tanto por pequenas quanto por grandes empresas, como mostra em seu site, como: Facebook, Ebay, Google, Adobe, entre outras.

Para realizar seu download, basta clicar aqui, onde é possível encontrar toda sua documentação e suporte.

MongoDB - Desenvolvedor
Curso de MongoDB - Desenvolvedor
CONHEÇA O CURSO

Redis

Redis é o banco de dados de valores-chave mais popular do mundo, ou seja, seus dados são armazenados em forma de chave valor, que armazenam objetos indexados por chaves e possibilitam a busca por estes objetos a parte das mesmas.

É escrito utilizando a linguagem de programação C, porém, compatível com várias outras linguagens de programação como: Java, Python, PHP, C++, entre outras. Extremamente rápido, tanto para escrita como para leitura de dados, pois seus dados são armazenados na memória, seus comandos são executados anatomicamente e possui modelo cliente-servidor.

Criado por Salvatore Sanfiippo, foi liberado de forma open-source em 2009 (um acrônimo de REmote DIctionary Server (servidor de dicionário remoto)).

Seu download pode ser feito acessando o seu site onde é possível também acessar toda documentação, comunidade, comandos, suporte, entre outras funções.

De suas principais características, podemos citar:

  • Desempenho muito rápido;
  • Multiplataforma;
  • Estruturas de dados na memória;
  • Versatilidade e facilidade de uso;
  • Replicação e persistência;
  • Compatibilidade com a sua linguagem de desenvolvimento preferencial, entre outros.

Cassandra

Desenvolvido em Java, gratuito e multiplataforma, o Cassandra originalmente foi desenvolvido no Facebook, que em 2008 compartilhou seu código-fonte para a comunidade e, agora, é um projeto de sistema de banco de dados mantido pelos desenvolvedores da fundação Apache e por muitas outras empresas que se tornaram colaboradores (Apache Cassandra).

Dentre suas características, podemos destacar:

  • Altamente escalável;
  • Fornece acesso de baixa latência a clientes;
  • Gratuito;
  • Orientado por colunas (o que torna um banco de dados mais rápido);
  • Possui um modelo distribuído otimizado e descentralizado, entre outros.

No site, é possível realizar seu download, visualizar sua documentação, acompanhar as novidades em seu blog, etc.

Projeto de Banco de dados - Fundamentos
Curso de Projeto de Banco de dados - Fundamentos
CONHEÇA O CURSO

Para finalizar

Com o objetivo de gerenciar informações, em especial, recuperar informações diluídas em um grande volume de dados, a escolha de um SGBD é de suma importância dentro de uma organização, onde tarefas podem ser simplificadas e automatizadas, auxiliando assim em soluções impostas no dia a dia de uma empresa.

Desta forma, dentre as diversas são as opções de SGDS presentes no mercado, tanto open source quanto pagas de alto nível, conhecer o negócio e entender qual sua real necessidade é um fator de extrema importância na escolha de um SGBD, visando sempre o futuro de uma organização para que este, atenda tanto às necessidades atuais quanto futuras.

Utilizando o Redis como Cache em um projeto Django

A performance de um projeto é de vital importância para o sucesso de uma aplicação. Dificilmente um site que demore um tempo considerável para responder uma solicitação de um usuário, não sucumbirá ao fracasso. Pensando nisso, há diversas maneiras de tentar melhorar o desempenho de uma aplicação, dentre elas, utilizar o Cache para armazenar dados que são frequentemente utilizados, é uma ótima alternativa.

Como funciona o Cache

O Cache é um recurso que possibilita o acesso às informações de forma mais rápida. Basicamente, é uma forma de armazenar determinadas informações que são consumidas com mais frequência para que elas sejam disponibilizadas no menor tempo possível.

O funcionamento do Cache pode ser entendido da seguinte forma:

  1. A aplicação verifica se os dados solicitados estão em cache;

  2. Se sim, o cache devolve para a aplicação, que os exibe;

  3. Se não, os dados são obtidos do banco de dados, salvos no cache e retornados para aplicação;

  4. Da próxima vez, o cache já possuirá os dados armazenados e, assim, retornados em um tempo menor.

Instalando o Redis

A instalação do Redis varia conforme o sistema operacional utilizado, abaixo veremos como instalar o Redis no Windows, Linux e macOS.

Windows

A instalação do Redis no Windows é bem simples. Primeiro, precisamos baixar o arquivo .zip do diretório oficial do Redis ():

Após realizar o download, descompactamos e executamos o arquivo redis-server, localizado no diretório 32bits ou 64bits, dependendo do sistema operacional.

Linux

A instalação do Redis no Linux também é bem simples. Primeiro, abrimos o terminal e digitamos os seguintes comandos:

sudo apt-get install redis-server
sudo systemctl enable redis-server.service

Com isso, o Redis será instalado e executado no Linux.

macOS

Para instalar o Redis no macOS também é super simples. Com o Homebrew instalado, podemos abrir o terminal e digitar o seguinte comando:

brew install redis
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents

Com isso, o Redis será instalado e configurado para iniciar sempre que ligarmos o computador.

Configurando o Redis no Django

Com o Redis instalado, precisamos configurar a comunicação entre as tecnologias (Django e Redis). Para isso, o primeiro passo é instalar o pacote django-redis na virtualenv do projeto seguindo os seguintes passos:

No PyCharm, vamos até a aba “Project Interpreter” e clicamos no “+” localizado no canto inferior esquerdo:

Após isso, buscamos pelo pacote “django-redis” e o instalamos em nossa virtualenv:


Com isso, o Redis já está pronto para ser utilizado em nosso projeto Django 🙂

Utilizando o Redis como Cache

Após instalar e configurar o Redis em nosso projeto Django, precisamos configurar o projeto para utilizar o Redis como Cache das informações. Para isso, no arquivo settings.py, adicionamos a seguinte configuração:

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/1',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient'
        },
        'KEY_PREFIX': 'django_orm'
    }
}

A configuração acima permitirá que o Django se comunique com o servidor do Redis que está sendo executado localmente.

Agora precisamos indicar quais páginas utilizarão o Cache para armazenar suas informações. Para isso, no nosso arquivo de views do projeto, adicionamos a anotação @cache_page(tempo_de_vida_cache) nos métodos que queremos utilizar o cache (normalmente, nas páginas com mais acessos):

@cache_page(60)
def listar_clientes(request):
    clientes = cliente_service.listar_clientes()
    return render(request, 'clientes/lista_clientes.html', {'clientes': clientes})

Com isso, sempre que um usuário solicitar o método para listagem de todos os clientes, o Django, primeiro, verificará se estas informações existem no Redis. Se sim, é de lá que as informações serão listadas, caso contrário, o Django fará uma consulta no banco de dados, obterá a lista de clientes, inserirá no cache e retornará ao usuário.

Comparando performances

A quantidade de requisições por segundo pode variar um pouco, mas é bem nítido o ganho de performance do uso do Redis como Cache em nossa aplicação. Na imagem abaixo podemos ver a diferença entre a quantidade de requisições utilizando o Redis e o uso do banco de dados:

Conclusão

O uso do Cache é uma ótima alternativa quando precisamos garantir o retorno dos dados em um tempo menor em páginas que são frequentemente acessadas. Vale lembrar que não devemos (e nem precisamos) usá-lo em todas as páginas, apenas nas mais acessadas.