Conheça a geração de banco de dados NoSQL e NewSQL

Veja neste artigo o conceito e comparativos dos bancos de dados tradicionais e a nova geração com os NoSQL e NewSQL. Serão descritos os problemas enfrentados pelos atuais bancos e por que da criação dessas novas tecnologias.

Hoje as informações são vitais para as organizações, que possuem várias fontes de dados e sistemas para armazená-los. Porém, com a utilização de bancos de dados relacionais e a normalização, que tem como princípio a consistência dos dados, há um grande problema que retarda a gravação e recuperação, pois a cada dia que passa o número de dados inseridos nesses bancos é cada vez maior, deixando a análise dos dados cada vez pior.

Com a evolução da Web 2.0, a proliferação das redes sociais e a intensa interação com os usuários, a cada dia mais e mais dados são inseridos e, recuperá-los para análise em alta velocidade é quase impossível, já que os mesmos não dão esse suporte. Por isso, o NoSQL foi projetado especialmente para arquiteturas distribuídas e com os conceitos da não normalização e a não utilização de uma uma linguagem de consulta, como o SQL. Mas com a sua utilização desenfreada alguns problemas foram enfrentados, tais como falta do uso de transações, a falta das consultas SQL e a estrutura complexa por falta de uma boa modelagem. Isso deu abertura a nova proposta: o NewSQL. Esse foi projetado para estender os benefícios do modelo relacional para arquiteturas distribuídas e melhorar o desempenho dos bancos de dados SQL, não sendo mais necessário aumentar a capacidade dos servidores, fazendo o uso da escalabilidade horizontal. Nesse artigo serão apresentadas as principais características dos bancos de dados NoSQL e NewSQL e o uso no atual cenário.

NoSQL

As principais características dos bancos de dados NoSQL é a escalabilidade horizontal baseada em uma arquitetura do tipo memória distribuída com replicação e fragmentação dos dados em diferentes servidores (CATTELL, 2010), permitindo suportar um grande número de operações de I/O (Input /Output) por segundo. A maioria desses bancos não fornecem suporte às propriedades transacionais ACID para conseguirem um desempenho e uma escalabilidade maior. Os SGBD NoSQL operam sobre a relação desempenho e complexidade do modelo, tendendo sempre a aumentar a primeira. CATTELL (2010) defini seis das características mais importantes dos bancos de dados NoSQL:

Os bancos de dados NoSQL chegaram ao mercado como uma alternativa para atender às necessidades das aplicações que os SGBD tradicionais tinham dificuldade em suprir, devido aos problemas de escalabilidade e disponibilidade. No entanto, estas soluções já enfrentam alguns problemas (LEAVITT, 2010), pois não possuem uma linguagem unificada de consulta, como o SQL, e necessitam de uma programação manual das consultas, o que pode não ser uma tarefa viável para aqueles que não sabem codificar essas soluções. Além disso, ao longo dos anos foi investido muito em algoritmos e formas de aprimorar compiladores SQL para gerar planos de execução de consultas otimizadas, assim, ao desenvolver novos métodos de acesso, perde-se esta experiência. E como o NoSQL dá suporte apenas a consistência tardia de dados para aplicações cuja exatidão dos dados é crítica, não ter garantias de consistência pode ser um grande problema. Os bancos de dados NoSQL podem ser classificados em diferentes tipos, de acordo com o uso apropriado do banco para uma determinada tarefa. Eles podem ser classificados como:

NewSQL

Os bancos de dados NewSQL buscam promover a mesma melhoria de desempenho e escalabilidade dos sistemas NoSQL, não abrindo mão dos benefícios dos bancos de dados tradicionais, da linguagem SQL e das propriedades ACID. Mike Stonebreaker, fundador do VoltDB (um dos bancos de dados desse novo modelo), destacou a vantagem dos bancos de dados NewSQL por proporcionarem consultas em tempo real, além de maior capacidade de processamento. Segundo Mike, há um custo grande em não usar SQL, sendo exigido trabalho excessivo dos desenvolvedores para compensar sua ausência.

Diferente dos SGBD tradicionais, que eram considerados soluções para qualquer tipo de aplicação, os NewSQL utilizam uma estratégia diferente, onde cada novo sistema desenvolvido visa atender a uma necessidade específica do mercado e busca alcançá-lo de forma separada, terminando com o antigo conceito de ter um único sistema que sirva para qualquer tipo de aplicação, fazendo com que os bancos de dados sejam especialistas para um propósito, não gerando mais um número absurdo de funções e comportamentos desnecessários para uma determinada aplicação. STONEBRAKER e CATTEL (2011) definem cinco características de um SGBD NewSQL:

Na Tabela 1 temos um comparativo das características dos bancos de dados relacionais (RDBMS), NoSQL, e NewSQL, com suas capacidades e pontos fortes.

Característica RDBMS NoSQL NewSQL
Cumprimento ACID (dados, integridade de transações) Sim Não Sim
OLAP / OLTP Sim Não Sim
A análise dos dados (agregados, transformar, etc.) Sim Não Sim
Rigidez do esquema (mapeamento rigoroso da modelo) Sim Não Talvez
Flexibilidade formato de dados

Não

Sim Talvez
A computação distribuída Sim Sim

Sim

Escala para cima (vertical) / Dimensionar (horizontal) Sim Sim Sim
Desempenho com crescimento de dados Rápido Rápido Muito Rápido
Sobrecarga de desempenho Enorme Moderado Mínimo
Popularidade / Suporte comunidade Enorme Crescente Crescendo lentamente

Tabela 1. Comparativo entre RDBMS, NoSQL e NewSQL

A partir dessa tabela podemos observar que o NewSQL é um aprimoramento do RDBMS utilizando o melhor dos dois mundos. Ele manteve totalmente as características dos bancos de dados padrões, implementando as inovações do NoSQL. Nos itens em que se encontram "Talvez" é porque depende do Banco NewSQL que estamos utilizando, pois como vimos, cada banco tem um propósito específico. Existem alguns bancos NoSQL especialistas com o poder do NewSQL, como é o caso do MariaDB (Desenvolvido pelo criador do MySQL).

Big Data e sua relação com os bancos de dados NoSQL e NewSQL

As aplicações Big Data originaram-se com a chegada da Web 2.0, evoluindo com grande velocidade, e tem como proposta dar ao usuário informações úteis de forma rápida ou permitindo que a empresa tome boas decisões no nível de negócios.

Com a utilização dessas aplicações por gigantes da internet, como Google, Facebook e Youtube, tornou ainda mais popular o conceito de BigData, sendo considerada pela equipe da Gartner umas das tecnologias que terão maior importância na modernização da gestão da informação com fortes impactos na infraestrutura da informação e governança das empresas. Segundo a Gartner, o Big Data suporta soluções de processamento para uma variedade de dados novos e já existentes, trazendo benefícios reais para os negócios. Ainda assim, o processamento do volume e variedade de dados continuam sendo soluções técnicas, a menos que sejam parte das metas de negócio.

O aspecto essencial do Big Data não é a habilidade técnica de processamento de dados, mas os benefícios que podem ser alcançados por uma organização utilizando suas análises.

O problema que os dados hoje são gerados de várias maneiras, gerando uma grande massa de dados para análise, dando origem ao problema com os bancos de dados relacionais pela não capacidade de processar tanta informação com alta disponibilidade, otimização e escalabilidade. Com isso, a necessidade de sistemas de bancos de dados mais eficientes para estas tarefas, motivando a utilização dos bancos de dados NoSQL e NewSQL.

A velocidade da disponibilização das informações é essencial para a tomada de decisões, já que uma informação tardia não tem utilidade, por isso os cinco "Vs" do Big Data (Volume, Velocidade, Variedade, Veracidade e Valor).

A necessidade de sistemas de bancos de dados mais eficientes para estas tarefas motivou a utilização dos bancos de dados NoSQL e NewSQL. Os bancos NoSQL tiveram um crescente aumento com à difusão dos Big Data, chegando algumas empresas a desenvolverem bancos internos para atender inicialmente demandas da própria empresa, onde acabaram se tornando um produto, como o caso do Big Table e Dynamo, desenvolvidos para solucionar problemas com larga escala que sofriam no momento.

Outra coisa interessante é que os bancos NoSQL e os NewSQL são concebidos e evoluídos como soluções para os problemas enfrentados pelo Big Data. Como são poucas as empresas que sofrem com problemas de larga escala como as gigantes, o que impulsiona de fato as melhorias nos bancos de dados é o uso de soluções analíticas como BI, Data Warehouse, ferramentas de ETL e de cubos.

Alguns bancos de dados NoSQL e NewSQL

NoSQL

NewSQL

Algumas Comparações entre bancos

Em um recente Benchmark foi visto que não só a velocidade na recuperação dos dados é sentida ao utilizar um banco de dados NewSQL ou NoSQL comparado ao um banco de dados tradicional, mas outros fatores como espaço de armazenamento em disco.

Um Benchmark publicado em blog.altoros.com, mostra um situação onde um número maior de registros foi inserido em uma base NewSQL e o espaço utilizado veio a ser menor que em um sistema tradicional: ao utilizar um banco de dados MySQL com a inserção de 234.238.440 registros, o espaço em disco utilizado foi de 210 GB com uma transferência de aproximadamente 28.000 a 18.000 transações por segundo, contra 276.934.863 registros inseridos no TokuDB com um espaço em disco de apenas 50 GB e uma transferência de 14.000 transações por segundos.

Se formos analisar veremos que o número de operações feitas pelo MySQL é maior, mas elas foram caindo com o tempo já o TokuDB se manteve estável, operando por mais de cinco horas contra apenas três do MySQL que, por problemas, derrubou o servidor. Em uma segunda comparação entre os bancos de dados MemSQL e o PostgreSQL foi visto que a recuperação de dados é mais rápida, onde o PostgreSQL demorou 14,312 milissegundos para processar 6.850 consultas contra 6,635 milissegundos por 6.850 consultas do MemSQL. Em uma terceira comparação entre MySQL e MonetDB em uma estrutura de Data Warehouse com um fator contendo 150.970 registros e três dimensões, o MySQL demorou 5.647 sec para retornar 42 registros na primeira execução antes da montagem do plano, e 1.529 sec em média nas demais execuções após o plano de acesso. Já o MonoNet recuperou essas mesmas informações com 0.341 sec em todas as consultas efetuadas.

Com esse pequeno comparativo podemos observar o quão poderoso são essas novas gerações de banco de dados.

O negócio também deve estar modelado para as novas tecnologias, caso contrário, não tem como a mesma fazer milagre e otimizar uma consulta se a estrutura dos dados não funciona. Precisamos conhecer o banco e o seu propósito: listamos vários bancos e cada qual com uma característica distinta.

Um exemplo de adaptação de projeto é o Twitter, onde após o grande aumento do número de dados, trocou seu banco de dados do MySQL para um NoSQL e no final teve que retornar para o MySQL devido ao NoSQL não atender suas necessidades.

Referencias

Stonebraker, M. (2010). SQL databases v. NoSQL databases. Communications of the ACM

NoSQL vs. NewSQL: Escolhendo a ferramenta certa}
http://voltdb.com/blog/nosql-vs-newsql-choosing-right-tool

Prestando atenção no NoSQL e NewSQL Databases
http://www.informationweek.com/big-data/big-data-analytics/16-nosql-newsql-databases-to-watch/d/d-id/1269559

O que é realmente novo no NewSQL
http://nwds.cs.washington.edu/files/nwds/pdf/newsql2013-uw.pdf

Artigos relacionados