Cassandra ou MongoDB, qual a melhor escolha para o meu projeto?

Danielle Oliveira
Danielle Oliveira

Compartilhe

Ombros e mãos de uma pessoa sentada na frente de um computador, trabalhando.

Cada vez mais as empresas precisam lidar com uma quantidade enorme de dados não estruturados, ou seja, dados que não podem ser armazenados em tabelas, com linhas e colunas. Devido a grande quantidade de dados não estruturados e a grande necessidade das empresas trabalharem com esses dados, surgiram os bancos de dados não relacionais ou banco de dados NoSQL.

Os bancos de dados NoSQL não tem um esquema fixo, como tabelas, colunas ou linhas. Assim, as empresas podem trabalhar e armazenar os seus dados não estruturados sem grandes problemas, já que existem vários tipos de bancos de dados NoSQL, que trabalham de formas diferentes. Desse modo, as empresas têm uma variedade de opções, podendo escolher o que melhor se adequa a sua necessidade.

Neste artigo, escolhemos dois dos bancos de dados mais conhecidos do mundo NoSQL: o MongoDB, que é um banco de dados baseado em documentos, e o Cassandra, que é um banco de dados baseado em modelo de colunas. Vamos abordar sobre como cada banco de dados funciona e as vantagens e desvantagens de cada um.

Imagem com o símbolo do Cassandra, que é um olho azul com detalhes brancos, e o símbolo do MongoDB, que é uma folha verde. Ambos separados por uma linha preta e no meio pelas letras "VS".

MongoDB

O MongoDB é um banco de dados baseado em documentos e está disponível em duas edições, a Community e Enterprise e pode ser executado local ou na nuvem. A edição Community, é a edição gratuita do MongoDB, já a edição Enterprise, é a edição que está disponível como parte da assinatura do MongoDB Enterprise Advanced, nesta edição é disponibilizado alguns recursos, como suporte para os assinantes.

Sua estrutura é dividida em três partes importantes, coleções, campos e documentos. Segundo a sua documentação, um registro no MongoDB é um documento, que é uma estrutura de dados composta de pares de campo e valor, uma estrutura semelhante aos objetos JSON.

Estrutura de dados do MongoDB: Pares de chave e valor que é semelhante aos objetos JSON, está dentro de chaves e cada par de chave e valor, é separado por vírgula. Respectivamente, as chaves são nome, idade e interesses e os valores são Danielle, 24, Música e esporte.

Devido a sua estrutura, o MongoDB disponibiliza um grande recurso, que é a Flexibilidade em relação ao armazenamento dos dados, pois como não existe uma estrutura pré definida, cada documento de uma coleção pode ter quantidades e tipos de campos diferentes. Garante também uma Alta disponibilidade através dos conjuntos de réplicas, que é um recurso de replicação dos dados, ou seja, o MongoDB permite que haja cópias dos bancos de dados duplicados em mais servidores, assim, garantindo redundância e disponibilidade dos dados. Com esse recurso de replicar os seus dados o MongoDB garante uma rápida leitura dos seus dados, já que os(as) clientes podem realizar consultas no banco de dados principal e nas réplicas.

Mas, estas cópias dos bancos de dados, não podem ser utilizadas para as gravação dos dados devido a sua arquitetura escravo - mestre, então acaba se tornando uma pequena desvantagem para quem precisa de um rápido processo de gravação, pois existe um limite na capacidade de gravação, já que só podemos realizar a gravação dos dados no servidor primário e esses dados serão replicados para os servidores secundários.

Um ponto que também precisamos levar em consideração é a linguagem de consulta utilizada. Para realizar essas consultas o MongoDB desenvolveu uma linguagem de consulta própria, pois, ao contrário do SQL, não existe um padrão a ser seguido no NoSQL, então cada banco de dados pode criar e utilizar a sua linguagem, sem seguir um padrão definido.

Cassandra

Já o Cassandra é um banco de dados de código aberto que utiliza o modelo de colunas, e o seu armazenamento é feito em forma de tabela, mas diferente da modelagem de tabela utilizada nos bancos de dados relacionais, a modelagem de dados do Cassandra é orientada por consulta.

Segundo a documentação, no Cassandra não existe o conceito de relacionamento, ou seja, não existem chaves estrangeiras ou integridade relacional. Ao contrário dos bancos de dados relacionais que normalizam os dados, o Cassandra realiza a desnormalização dos seus dados que podem ser duplicados entre as várias tabelas e a sua estrutura é dividida da seguinte forma:

  • Keyspace: armazena os conjuntos de tabelas.
  • Tabela: armazena um conjunto de linhas.
  • Partição: parte obrigatória da chave primária que identifica o nó em um cluster onde a linha está armazenada.
  • Linha: armazena uma coleção de colunas identificadas por uma chave primária.
  • Coluna: valor único com um tipo que pertence a uma linha.

Estrutura de dados do Cassandra: Temos um quadro que representa a Keyspace, dentro deste quadro temos dois quadros que representam as tabelas, e dentro das tabelas, temos um outro quadro que representam as linhas e dentro deste quadro, temos vários quadrinhos que representam as colunas e seus valores.

Devido a sua estrutura de armazenamento em colunas, o Cassandra proporciona uma maior velocidade na recuperação dos dados. Além disso, como não realiza a normalização dos dados, garante também um alto desempenho de leitura. Ao contrário do MongoDB que tem uma arquitetura escravo - mestre, com um servidor principal e réplicas, o Cassandra tem uma arquitetura multi master, onde todos os nodes são principais e podem ser realizadas consultas e gravações de dados em todos os nodes, garantindo assim uma Alta disponibilidade.

Como mencionei anteriormente, a linguagem de consultas é um ponto muito importante. Assim como o MongoDB, o Cassandra também criou a sua própria linguagem de consulta, a CQL(Cassandra Query Language). Mas ao contrário do MongoDB, essa linguagem é bem parecida com a linguagem SQL(Structured Query Language). Logo, para quem já tem conhecimento em SQL, tem uma grande vantagem ao utilizar o Cassandra.

Porém, por ser de código aberto, o Cassandra não tem um suporte tão eficaz e nem uma documentação completa e detalhada como o MongoDB. O Cassandra também não tem todos os drives importantes disponibilizados e isso pode ser um problema para alguns projetos. Outro ponto que deve ser levado em consideração é que o Cassandra é um banco de dados distribuído que foi criado para trabalhar com grandes quantidades de dados, caso esse não seja o caso do seu projeto, não é interessante a utilização do Cassandra.

Qual banco de dados escolher?

A escolha pode e deve depender das necessidades do seu projeto, então vamos levantar alguns pontos que você pode levar em consideração.

  • Se você trabalha com uma grande quantidade de dados e precisa de velocidade para armazenar esses dados, você pode escolher o Cassandra.
  • Se você precisa de Flexibilidade em relação ao armazenamento dos dados, você pode escolher o MongoDB.
  • Se você precisa de uma rápida leitura dos dados, os dois bancos são ideais para você.
  • Se você já tem conhecimentos em SQL e quer continuar a utilizar uma linguagem bem semelhante, você pode escolher o Cassandra.
  • Se você já tem conhecimentos em objetos JSON e quer continuar a utilizar uma linguagem bem semelhante, você pode escolher o MongoDB.

Mas, se você precisa de um banco de dados que garanta alta disponibilidade, você tem duas boas opções e a escolha pode depender da quantidade de dados que irá trabalhar e do seu objetivo em relação ao tratamento dos dados.

  • Se você vai trabalhar com uma grande quantidade de dados e precisa de uma grande velocidade de gravação e leitura, você pode escolher o Cassandra.
  • Se você vai trabalhar com uma grande quantidade de dados e o seu foco for apenas uma rápida gravação dos dados, você pode escolher o MongoDB.

Conclusão

Independente da escolha do banco de dados que será utilizado no seu projeto, o importante é que no momento da escolha, seja levado em consideração as necessidades do seu projeto. O MongoDB e o Cassandra, são dois grandes bancos de dados NoSQL e que podem ser usados separadamente ou concomitantemente em um projeto.

Se interessou por esse assunto? Então veja também:

MongoDB: O banco baseado em documentos | Alura Cursos Online

Veja outros artigos sobre Data Science