A maioria dos programadores e DBA’s está familiarizada com RDBMSs, como o MySQL ou o PostgreSQL. Por volta de 2009, surgiram as soluções NoSQL, como o MongoDB ou o Cassandra, desenvolvidas para necessidades de dados distribuídos e escalonáveis.
Mas, nos últimos anos, tem havido um “novo” tipo de produto na concorrência: NewSQL.
O termo NewSQL se dá a uma nova abordagem para bancos de dados relacionais que combinam as garantias transacionais de ACID (atomicidade, consistência, isolamento, durabilidade) de bons RDBMSs e a escalabilidade horizontal do NoSQL. Parece uma solução perfeita, o melhor dos dois mundos.
A arquitetura tradicional do RDMBS não foi projetada com um sistema distribuído em mente. Em vez disso, quando surgiu a necessidade, o suporte a designs distribuídos foi construído como uma reflexão tardia sobre o design original. Devido à sua estrutura normalizada, em vez da forma agregada do NoSQL, o RDBMS teve que introduzir conceitos complicados ( e com altíssimo custo de implementação ) para dimensionar e conservar seus requisitos de consistência.
No novo ecossistema de bancos de dados, onde a escalabilidade é uma métrica importante, e alta disponibilidade é essencial para gerar bons resultados, os bancos de dados NoSQL foram oferecidos como uma solução para alcançar escalabilidade mais fácil e melhor desempenho, optando por um projeto de AP do teorema CAP. No entanto, isso significava uma consistência forte e as propriedades ACID transacionais oferecidas pelos RDMBS em favor da consistência eventual na maioria dos projetos NoSQL.
Os bancos de dados NoSQL usam um modelo diferente do relacional, como key-value, document, wide-column ou graph. Com esses modelos, os bancos de dados NoSQL não são normalizados e são inerentemente sem esquema por design. A maioria dos bancos de dados NoSQL oferece suporte a fragmentação automática, permitindo fácil dimensionamento horizontal sem intervenção do desenvolvedor. Os sistemas NewSQL nascem do desejo de combinar a escalabilidade e a alta disponibilidade do NoSQL com o modelo relacional, o suporte a transações e o SQL dos RDBMSs tradicionais. A maioria dos bancos de dados NewSQL nasceu de uma reformulação completa, concentrada principalmente em cargas de trabalho OLTP ou híbridas.
Tá, beleza, mas e aí? Hoje disponível no mercado temos soluções NewSQL? Sim! Hoje já contamos com algumas ferramentas que foram totalmente construídas do zero para entregar todo o poder ACID de um relacional e o AP (do teorema de CAP) do NoSQL.
Veja alguma delas:
VoltDB
VoltDB é um banco de dados relacional compatível com ACID porém voltado à trabalhar em memória. A arquitetura do VoltDB é baseada no H-Store um banco de dados in-memory projetado para cargas de trabalho de OLTP. Mais informações no site oficial. VoltDB é um dos NewSQL mais famosos.
TiDB
Uma solução de código aberto para sair da China, o TiDB é um banco de dados HTAP compatível com MySQL escalável distribuído e consistente. O que permite que o TiDB seja poderoso em situações OLTP e OLAP é sua arquitetura desacoplada: a camada de manipulação é diferente da camada de armazenamento, permitindo assim alta performance e escalabilidade.
Cosmos DB
O Azure Cosmos DB da Microsoft é uma solução altamente flexível e eu já falei várias vezes aqui no blog, por meio de vários recursos ajustáveis que podem ser ajustados para vários casos de uso, pode ser considerado como um banco de dados NewSQL e também como um NoSQL multi-model.
Citus
Um exemplo de sucesso que se baseia no PostgreSQL é o Citus. A Citus Data , recentemente adquirida pela Microsoft , desenvolve e mantém o Citus : uma extensão PostgreSQL de código aberto que permite distribuir o PostgreSQL distribuindo transparentemente tabelas e consultas para suportar o dimensionamento horizontal. Acredito que logo iremos ver soluções da Citus dentro do Azure ou ainda dentro do PostgreSQL as a Service da Microsoft.
MariaDB
Foi desenvolvido pelo criador do MySQL (em meio a um rumor polêmico, onde o criador gerou um fork do MySQL logo antes de vender o MySQL para a Sun/Oracle) e é totalmente compatível com o MySQL. Também pode interagir com os bancos de dados NoSQL, como Cassandra e LevelDB. Mais informações no site oficial.
Vitess
Enquanto o Citus se baseia no PostgreSQL, o Vitess é desenvolvido para aprimorar o MySQL e torná-lo adequado aos requisitos atuais da era da nuvem. O Vitess foi criado primeiro no Youtube por suas necessidades de dimensionamento em 2011.
O ecossistema NewSQL está em constante crescimento e evolução. Embora seja quase impossível fazer uma definição geral ou apresentar características gerais que possam encapsular todos os bancos de dados NewSQL. As arquiteturas de tamanho único não são mais desejáveis e o NewSQL é o movimento em direção à inovação e aos projetos baseados em nuvem, onde escalabilidade é uma premissa.
Informações e referências:
http://voltdb.com/blog/nosql-vs-newsql-choosing-right-tool
http://nwds.cs.washington.edu/files/nwds/pdf/newsql2013-uw.pdf