BANCO DE DADOS NOSQL COM APACHE CASSANDRA

Os bancos de dados são o assunto principal quando se fala em armazenamento com persistência e permanência de informações dentro de uma ou mais aplicações ou sistemas de informática integrados. Possuem importância inquestionável, uma vez que eles são a base do armazenamento e manipulação de dados em sistemas.

Nos dias atuais, diversas soluções de bancos de dados estão disponíveis no mercado, sejam elas de código aberto ou de licença privada. Seus modelos podem variar dos relacionais até os mais recentes não relacionais. Em termos gerais, são descritos em dois tipos:

SQL (Structured Query Language): em tradução literal, significa “linguagem de consulta estruturada”. É uma linguagem de consulta de bancos de dados relacionais que por muitos anos foi adotada como solução para estruturação de registros em tabelas, onde há o conceito de linhas e colunas. Com comandos em SQL, é possível realizar alterações de informações, tais como: criar, alterar, consultar, deletar, entre outras especificidades. É popularmente conhecido por utilizar modelagem relacional, ou seja, armazenar dados em tabelas. O MySQL, por exemplo, é um dos modelos de banco de dados relacionais com licença livre mais conhecidos no mercado.

NoSQL (Not Only SQL): terminologia usada para a adoção de sistemas de bancos de dados não relacionais de alto desempenho e que, geralmente, não utiliza o SQL como linguagem de consulta. O NoSQL foi desenvolvido para suprir as necessidades de performance e a escalabilidade nas ocasiões em que os bancos de dados relacionais geralmente têm dificuldade em lidar com um grande fluxo de informações, como a Black Friday. Com seu uso, não é mais preciso aumentar proporcionalmente a estrutura disponível com modelagem complexa. Sua adesão cresce há mais de uma década, quando grandes companhias como Google e Amazon divulgaram o NoSQL como uma das soluções mais eficientes para reduzir a complexidade de seus numerosos sistemas de bancos dados relacionais.

Confira uma lista com os tipos de bancos de dados não relacionais mais conhecidos e utilizados atualmente:

  • Documento: os dados são armazenados como documentos, que podem ser descritos no formato de chave-valor, como o padrão JSON. Exemplo: MongoDB;
  • Grafos: os dados são armazenados na forma de vértices e arestas. Exemplo: Neo4j;
  • Chave-valor: é a família de bancos de dados NoSQL que suporta o maior fluxo de informações. Possui o conceito de que um determinado valor é acessado por uma única chave identificadora. Exemplo: Riak;
  • Coluna: os dados são armazenados em linhas de tabela no disco. Podem aguentar múltiplas linhas e colunas. Exemplo: Cassandra.

Bancos de dados não relacionais tem ganhado cada vez mais popularidade. Em setembro de 2016, o Apache Cassandra já aparecia entre as dez primeiras opções mais usadas.

O Cassandra foi inicialmente desenvolvido dentro dos laboratórios do Facebook, como tecnologia utilizada no motor de buscas de caixa de mensagens. Em 2008, tornou-se open source e passou a ser suportado e mantido pela Apache Foundation já no ano seguinte. Tem como características principais a escalabilidade e a orientação por colunas.

Cassandra é um projeto de sistema gerenciador de banco de dados não relacional que possui arquitetura baseada na distribuição e escalabilidade do DynamoDB - da Amazon Web Services - e modelo de dados importado do BigTable, da Google.

O banco de dados utiliza uma variação do previamente citado SQL chamada CQL (Cassandra Query Language). É uma linguagem desenvolvida para a manipulação de dados em colunas. O Cassandra ainda possui nativamente a replicação distribuída em nós e em data centers diferentes. Em casos de falhas isoladas, a manutenção pode ocorrer de forma individual sem o comprometimento do anel de nós de armazenamento e processamento.

A arquitetura do Cassandra é composta pelos seguintes elementos:

  • Keyspaces: equivalente ao banco de dados no modelo relacional. Faz o agrupamento de tabelas no sistema;
  • Table: equivalente a uma tabela no modelo relacional, com a ressalva de que JOIN’s não são suportados;
  • Row: são compostas pela Primary Key e um conjunto de colunas;
  • Column: é composta por três campos: Column Key, Column Value e Timestamp.

O Cassandra foi desenhado para ser altamente tolerante a falhas. No entanto, cabe ao arquiteto de dados estudar os prós e contras da implementação, definir o que se precisa ser resolvido e de que forma o banco de dados pode ajudar.

Referências:

GUEDES, Marylene. SQL vs NoSQL, qual usar? Treinaweb, 2017. Disponível em: https://www.treinaweb.com.br/blog/sql-vs-nosql-qual-usar/

MAYCON. Introdução ao Cassandra. Devmedia, 2017. Disponível em: https://www.devmedia.com.br/introducao-ao-cassandra/38377

MONTEIRO, Danielle. SQL or NoSQL? Quem é essa tal de Cassandra? Db4Beginners, 2020. Disponível em: http://db4beginners.com/blog/cassandra/

Operações CRUD utilizando bancos de dados relacionais e não relacionais. SODEBRAS, 2020.