Esse tema é útil em
casos onde se deseja armazenar e processar informações, e o tempo de resposta é
um fator crítico. Situações em que se planeja construir aplicações que
necessitam detectar mudanças de comportamento, realizar análises históricas e
sugerir mudanças, ajudando na tomada de decisões em tempo real.
Pesquisas realizadas recentemente estimam que grande parte dos dados que serão gerados nos próximos anos virá de áreas que produzem fluxos de informações constantes em nível de centenas a milhões de vezes por segundo, conhecidos como “Fast Data”: dados de logs, leitura de sensores, interações, jogos etc.
Em muitas dessas áreas as informações devem ser processadas e analisadas em um curto período de tempo. Áreas como a da Internet das coisas, sistemas de telecomunicações, sistemas financeiros, de antifraude, de análise de riscos, de interação de jogos, sistemas de recomendações etc., necessitam conseguir lidar com informações em tempo real para poder tomar decisões de forma eficaz e até mesmo poder predizer certos comportamentos.
Ferramentas analíticas e de data warehouse existentes são projetadas para executar consultas predefinidas em grandes bancos de dados, e que geralmente levam de minutos até horas para serem processadas.
No entanto, a análise de dados em tempo real deve ser tratada de forma diferente. É nesse cenário que entram os bancos de dados em memória. Conhecido como “in-memory database” (IMDB), esse tipo de banco de dados tem crescido muito ultimamente em resposta às novas necessidades de negócios, sistemas e operações.
Banco de dados in-memory
Um sistema de banco de dados in-memory é um gerenciador de banco de dados que, em contraste com os bancos de dados tradicionais, não guarda os dados em disco, mas na memória principal de uma máquina ou conjunto de máquinas.
Esse tipo de banco de dados é mais rápido que os tradicionais, que são otimizados para escrita em disco, visto que seus algoritmos de otimização são mais simples e executam menos instruções de CPU.
Acessando os dados diretamente na memória elimina-se o tempo de busca gasto pelo disco “procurando” os dados, fornecendo assim um desempenho maior.
Quando todos os dados são guardados em memória, não existe mais a necessidade de se guardar cache dos dados, podendo também ser comprimidos e descomprimidos mais facilmente, gerando menos espaço do que a mesma quantidade de dados armazenada em disco.
Apesar do uso de discos tradicionais ainda ser o padrão das empresas desse setor, o desenvolvimento de novas tecnologias de memória e o constante declínio de preços de memórias do tipo RAM vem facilitando bastante a adoção desse tipo de sistema de dados.
Muitos se perguntam nesse momento: por que não criar então um disco virtual de memória RAM e mover o banco de dados tradicional para esse volume, ou ainda, desabilitar configurações de bancos tradicionais para trabalharem nesses moldes?
O problema é que os bancos de dados tradicionais, pelo fato de serem projetados para lidar com discos rígidos, desempenham diversas tarefas que, executadas diretamente em memória RAM, resultariam em um desempenho pior e em mais uso de processador do que sistemas preparados e otimizados para lidar somente com esse tipo de memória.
Diversas empresas, dentre elas podemos citar IBM, Microsoft e Oracle, já trabalham em soluções de bancos de dados in-memory e buscam disputar o mercado com outras empresas, mais novas e menos conhecidas, que também oferecem interessantes soluções para lidar com Fast Data.
Características
Atualmente existem diversas soluções nesse padrão de banco de dados. Muitas utilizam formas híbridas, outras somente memórias RAM. Algumas trabalham com NoSQL, outras com dados relacionais.
Quando falamos em banco de dados em memória surge sempre a questão da durabilidade dos dados, uma das características do modelo ACID. Visto que o tipo de memória utilizado é volátil, como manter esses dados de forma permanente sem que os mesmos sejam perdidos durante uma falha de sistema?
Atualmente muitos destes bancos de dados possuem soluções para esse
tipo de problema como, por exemplo, estados de replicações dos dados através de
cluster e commits temporários dos dados em disco, fazendo com que funcionem
totalmente em conformidade com as características do modelo ACID. ACID
representa as quatro propriedades (atomicidade, consistência, isolamento e
durabilidade) nec ...