REDIS – UM BANCO DE DADOS NÃO RELACIONAL.

___






O NoSQL

NoSQL significa  ”Not only SQL” (Não somente SQL), e é uma alternativa aos tradicionais bancos de dados relacionais, mas que não oferecem as caracterizadas ACID(Atomicidade, Consistência, Isolamento e Durabilidade).

Quando os sistemas crescem surge a necessidade de escalabilidade e performance. A principal forma de escalar horizontalmente é criar diversas threads/processos de uma tarefa e distribui-las. Entretanto, um banco de dados relacional seria gargalo do projeto, já que diversos processos conectando simultaneamente causaria uma alta concorrência, aumentando o tempo de acesso à tabela.

E é por não utilizar estes bloqueios que o NoSQL tem um desempenho superior comparado aos Bancos Relacionais, alem de basicamente utilizarem o conceito chave-valor e serem memory-in, ou seja, o conteúdo do database fica alocado em memória, permitando acesso aos dados muito  mais rapidamente que os banco de dados relacionais, que, na maioria dos casos, utilizam acesso a disco.

Quanto não usar?

Se sua aplicação utiliza transações e seus dados são muito relacionais ou utiliza triggers, talvez seja melhor optar pelos databases tradicionais, como por exemplo, o MySQL, Postgree ou Oracle. Ou, criar todo este controle em camada de aplicação quando usar NoSQL. É por este motivo que o significado de NoSQL é “Not only SQL” :)

IMPORTANTE: Até a versão 2.4 do REDIS, era possivel trabalhar com memoria virtual. Ou seja,  você poderia configura-lo para não exceder um limite de memória RAM, e apartir daquele limite, armazenar os dados em disco. Ou tambem era possível configura-lo para manter apenas as chaves na memória e os valores em disco. Porem por diversos problemas, a comunidade de desenvolvedores descontinuou esta funcionalidade a partir da versão 2.4, não tendo mais suporte à memoria virtual.  Então perceba que se você pretende armazenar mais dados do que você tem de memória, o REDIS por só só não é uma boa solução! 

O Redis

O Redis usa o conceito NoSQL. É basicamente um dicionario chave-valor. Ou seja,  cada chave (ou endereço, ou CPF, ou qualquer outro termo que te faça sentido) está associada a um valor. O Redis armazena em memória RAM os dados, e de tempos em tempos transfere o conteúdo da memória para o disco se ocorreu uma determina quantidade mudanças nos dados. Falaremos sobre Persistência de dados do Redis em um próximo capitulo!



Mãos a Obra!

Eu pretendo sempre ser direto neste blog, mas eventualmente posso fazer uma micro explicação para quem for novo no assunto saber do que se trata.

Todos meus posts que de alguma maneira tratarem de programação, terão uma forte tendência de serem em plataforma Linux, e para inaugurar este blog, este primeiro post não poderia ser contraditório!

Sem maiores firulas, baixe (atente-se para a ultima versão) e descompacte o bichão:

$ wget http://redis.googlecode.com/files/redis-2.2.5.tar.gz 
$ tar xzf redis-2.2.5.tar.gz $ cd redis-2.2.5

….depois, compile

fdmartins@galactica:~/Desktop/redis-2.2.5$ make

Se nada de errado acontecer, você já poderá iniciar o servidor. (entre na pasta ./src)

$ fdmartins@galactica:~/Desktop/redis-2.2.5/src/redis-server

…E pronto; A este ponto, o Redis já está pronto para receber conexões de algum cliente.

Testando e fazendo algumas conexões com um cliente

Para brincar, utilizaremos o próprio cliente do Redis, para executa-lo basta digitar:

$ ./src/redis-cli

Agora vamos inserir alguns valores e tentar resgata-los:

redis> set post "Primeiro post sobre o Redis!" 
OK
redis> get post
"Primeiro post sobre o Redis!"
redis> exit

No exemplo acima, apenas setamos (set) uma chave chamada “post”  com o valor “Primeiro post sobre o Redis!”, neste ponto associamos uma chave a um valor, que é confirmado com o “OK”. Posteriormente, ao utilizarmos o get, resgatamos o valor associado àquela chave.

E fim.

Este post foi uma introdução sobre este mundo estranho de NoSQL. Mas não se assuste, não é apenas isso, mas tambem não é muito mais que isso!

Até a próxima







Veja tambem:

___

Wordpress REST API - Permitindo Visualização de Post Privados para Usuários do tipo Assinantes

A API REST do Wordpress trouxe novas possibilidades. No entanto, deparei com um problema para listar os Posts cadastrados como Privados para Usuários do tipo "Assinante".

Como deixar imagem redonda de um CANVAS com HTML 5

Como deixar imagem redonda de um CANVAS com HTML 5

Neste post mostro como deixar uma imagem dentro de um círculo com sombra usando canvas do HTML5 !

Como deixar uma imagem redonda e com sombra em CSS

Como deixar uma imagem redonda e com sombra em CSS

Fazendo uma imagem ficar dentro de um círculo em CSS

Resolvendo o problema No 'Access-Control-Allow-Origin' header is present on the requested resource.

Como permitir acesso a outra url - Cross Origin Resource Sharing (CORS)

Como instalar o Windows 10 IoT no Raspberry usando o Windows 7

Como instalar Windows 10 no Raspberry Pi 2

Lucene, Solr, Mysql e outras bruxarias

Uma breve explicação sobre fulltext search e onde usar.

Programando Python usando Eclipse com PyDev

Programando Python usando Eclipse com PyDev

Eclipse como EDE para programar em Python !

Como desenvolver em Python usando o Netbeans 7.4

Como desenvolver em Python usando o Netbeans 7.4

Programando em python usando o netbeans como IDE

Criatividade é saber esconder suas fontes

Criatividade, nada mais do que do que pegar idéias existentes, junta-las, e modifica-las.

Tudo é um Remix (Legendado)

Tudo é um Remix (Legendado)

O que é criatividade? Copiar, transformar e combinar.

Configurando um Servidor com Nginx e Django - Juntando Tudo - Parte Final

Integrar nginx e django. Ultima parte.

Veiculo Guiado a Laser - LGV (Laser Guided Vehicle)

Veiculo Guiado a Laser - LGV (Laser Guided Vehicle)

Desenvolvimento do algoritmo de controle de direção de LGV (um AGV guiado a laser)

Configurando um Servidor com Nginx e Django - Parte 2

Configurando um Servidor com Nginx e Django - Parte 2

Instalando o Django

Como User Experience pode melhorar seu produto?

Como User Experience pode melhorar seu produto?

User Experience (Design Centrado no Usuário, ou Experiência do Usuário) é um termo usado quando se desenvolve produtos, sistemas ou serviços focado em pessoas, envolvendo fatores humanos no projeto.

Configurando um Servidor com Nginx e Django

Configurando um Servidor com Nginx e Django

Este post é o inicio de uma série de como configurar um servidor usando o nginx como proxy reverso e o django como servidor de aplicação.

SISTEMA DE NAVEGAÇÃO CIRÚRGICA

SISTEMA DE NAVEGAÇÃO CIRÚRGICA

Também chamada de “Cirurgia Guiada por Computador”, a navegação cirúrgica consiste em um sistema que gera um modelo virtual 3D do paciente para guiamento de instrumentos cirúrgicos de maneira precisa e em tempo real, orientando o médico no momento da cirurgia.

O FACEBOOK VAI ACABAR… E VOCÊ?

O FACEBOOK VAI ACABAR… E VOCÊ?

Recentemente, uma onda de notícias surgiu na internet: O fim do Facebook até 2020.

E QUANDO DOIS CHATBOTS SÃO COLOCADOS PARA CONVERSAR?

Chatbot são programas de computadores que tentam manter o dialogo com pessoas reais utilizando linguagem natural. É um dos desafios da Inteligencia Artificial.

TRACKING POR COR COM WEBCAM

Utiliza segmentação de imagem para extrair da imagem o ponto de interesse, no caso o ponto vermelho do laser. Envia controle via porta paralela para os servos que controlam a posição webcam. Usa Video4Linux e foi desenvolvido em C na plataforma Linux.

RASTREIO DE MOVIMENTO DE PESSOAS EM TEMPO REAL

Protótipo criado para testar a viabilidade de implementação de rastreio de comportamento de consumidores em lojas de departamentos. Utiliza múltiplas câmeras posicionadas em pontos diferentes do espaço. Plataforma Linux, desenvolvido em C usando v4l2 e placa de captura de video geovision gv800.

PENDRIVE WIRELESS BLUETOOTH

Protótipo com memória SD que poderia ser conectada via USB (como um pendrive comum) ou via Bluetooth

GERENCIADOR DE TRÁFEGO DE AGV'S (AUTOMATED GUIDED VEHICLE)

GERENCIADOR DE TRÁFEGO DE AGV'S (AUTOMATED GUIDED VEHICLE)

O gerenciador consiste em um software responsável pela navegação de AGVs (Veiculos da foto ao lado)

MEDIDOR DE CONSUMO ELÉTRICO VIA BLUETOOTH

MEDIDOR DE CONSUMO ELÉTRICO VIA BLUETOOTH

Protótipo consiste em um verificador de consumo de energia elétrica de algum equipamento. A leitura da potencia consumida é feita utilizando a placa MCP3905A Energy Board Meter, da Microchip.

SISTEMA DE AUXILIO AO DEFICIENTE VISUAL NO TRANSPORTE PÚBLICO

SISTEMA DE AUXILIO AO DEFICIENTE VISUAL NO TRANSPORTE PÚBLICO

uma aplicação para um celular touch screen, o deficiente visual, ao passar por um ponto de ônibus, escuta um alerta sonoro de que se encontra no ponto de ônibus X

EXPANSÃO VISUAL DE PROJEÇÕES EM TELAS PLANAS

Projeto de TCC da FEI. Vencedor de 2 prêmios: “Melhor Trabalho Geral” e “Criatividade e Inovação”

REDIS – UM BANCO DE DADOS NÃO RELACIONAL.

REDIS – UM BANCO DE DADOS NÃO RELACIONAL.

NoSQL significa ”Not only SQL” (Não somente SQL), e é uma alternativa aos tradicionais bancos de dados relacionais, mas que não oferecem as caracterizadas ACID (Atomicidade, Consistência, Isolamento e Durabilidade).

Leitor de RSS

Leitor de RSS

Leitor Online de Noticias que desenvolvi em 2010.

CONTROLE SEM FIO COM FEEDBACK DE COMANDO

CONTROLE SEM FIO COM FEEDBACK DE COMANDO

Circuito eletrônico para controle de automação, com feedback de se o comando foi executado no circuito remoto.

Fábio Martins

Olá, eu sou o fábio. Clique em Continuar Lendo para saber mais.

Leitura Automática de Tacógrafo Analógico

Leitura Automática de Tacógrafo Analógico

Programa desenvolvido para analise automática de disco de tacógrafo analógico.