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:
- Aumento de desempenho de operações simples quando do aumento do número de nós;
- Replicação e distribuição de dados em diferentes nós;
- No lugar do SQL, um protocolo simples de comunicação com o SGBD;
- Um modelo de controle de concorrência mais “relaxado” do que os utilizados nos SGBDR tradicionais, chamados consistência tardia;
- Uma distribuição eficiente dos índices e utilização de memória RAM para armazenamento de dados;
- Adição dinâmica de atributos aos registros já existentes na base (pela não-obrigação de ter esquemas fixos).
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:
- Pares Chave-Valor: Sistema que armazena valores indexados para posterior recuperação através de chaves;
- Orientados à Coluna: Diferentemente dos SGBD que armazenam as informações em tabelas fortemente estruturadas em linhas e colunas, esse tipo de sistema contém uma tabela extensível de dados minimamente relacionados. Cada linha desta tabela pode possuir um conjunto próprio de colunas, que não precisa ser igual aos das demais. A escalabilidade é feita através da distribuição das linhas e colunas pelos nós, fragmentando inicialmente as colunas de uma tabela e depois fragmentando as linhas dessas tabelas resultantes pela chave primária, com fragmentação por intervalo;
- Bancos de dados de grafos: Estão diretamente relacionados a modelos de dados a grafos, tendo como ideia representar os dados como estruturas que generalizem a noção de grafos. Este modelo é proposto para quando a topologia dos dados é mais importante;
- Orientados a documentos: Segundo Anderson (2009), esses bancos de dados utilizam o conceito de dados e documentos autocontidos e autodescritivos. Isso implica que o documento em si já define como ele deve ser apresentado e sua estrutura define como devem ser armazenados.
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:
- Linguagem SQL como meio de interação entre o SGBD e a aplicação;
- Suporte para transações ACID;
- Controle de concorrência não bloqueante, para que as leituras e escritas não causem conflitos entre si;
- Arquitetura que forneça um maior desempenho por nó de processamento;
- Arquitetura escalável, com memória distribuída e com capacidade de funcionar em um aglomerado com um grande número de nós.
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
- Aerospike: Banco de dados NoSQL que oferece uma vantagem de velocidade de memória, atraindo empresas de anúncios de alta escala e aquelas que precisam de tempos de resposta em milissegundo. Aerospike está apostando em novas categorias, incluindo jogos, e-commerce e segurança, onde a baixa latência é tudo.
- Apache Cassandra: Os pontos fortes são a modelagem de dados NoSQL e escalabilidade linear flexível em hardware commoditypor conta do uso de cluster.
- Amazon DynamoDB: foi desenvolvido pela Amazon para incrementar o seu próprio negócio e-commerce em rápido crescimento, tendo seus serviços altamente escaláveis. Inspirou o Cassandra, Riak, e outros projetos NoSQL no processo.
- MongoDB: É o banco de dados mais popular NoSQL, com mais de sete milhões de downloads e centenas de milhares de implantações. Sua popularidade se deve à facilidade de desenvolvimento e manejo flexível dos dados. Muito utilizado em aplicações de redes sociais web e móvel.
- HBase: É o banco de dados que roda em cima do HDFS (Hadoop Distributed File System – sistema de arquivos distribuído projetado para rodar em hardware commodity), por isso dá aos usuários a capacidade única de trabalhar diretamente com os dados armazenados no Hadoop. As características incluem grande escalabilidade.
NewSQL
- MemSQL: Como o próprio nome sugere, é operado em memória, e é um sistema de banco de dados de alta escala por sua combinação de desempenho e compatibilidade com o SQL transacional e ACID na memória, adicionando uma interface relacional em uma camada de dados in-memory.
- VoltDB: Projetado por vários pesquisadores de sistema de banco de dados bem conhecidos, esse banco oferece a velocidade e a alta escalabilidade dos bancos de dados NoSQL, mas com garantias ACID, e sua latência em milissegundo e integração com Hadoop.
- SQLFire: Servidor de banco de dados NewSQL da VMware, desenvolvido para escalar em plataformas nas nuvens e tomar as vantagens de infraestrutura virtualizadas.
- MariaDB: foi desenvolvido pelo criador do MySQL e é totalmente compatível com o MySQL. Também pode interagir com os bancos de dados NoSQL, como Cassandra e LevelDB.
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