Cassandra, introdução

Thiago Lima
3 min readApr 13, 2023

--

É uma brincadeira com um antigo programa de TV, Sai de Baixo, que tinha uma personagem extravagante chamada Cassandra.

O Apache Cassandra é um Banco de dados distribuído, NoSQL e Opensource, confiado por milhares de empresas para escalabilidade e alta disponibilidade, sem comprometer a performance. Escalabilidade linear e comprovadamente tolerante a falhas nesses hardwares de varejo por aí ou mesmo em uma infraestrutura em nuvem, faz dele a plataforma perfeita para uma missão impossível
(CASSANDRA, apache, website, tradução minha)

Eu ouvi o professor da minha especialização, citando empolgadamente sobre esta ferramenta e ele falava o quão fantástica era, resolvi estudá-la para conferir o porquê de tanta alegria. Confesso que no primeiro momento, pensei que seria mais uma daquelas ferramentas enfadonhas, que resolvem problemas chatos com soluções chatas. Eu estava redondamente enganado. Cassandra é obra da engenharia humana, é a razão pela qual nos diferenciamos dos outros animais. É simplesmente fantástico.

Quero compartilhar com o leitor a alegria de conhecer o Cassandra. Longe de mim que este texto seja apenas uma apologética. Somos pessoas racionais e sabemos que os bancos de dados relacionais tem seu lugar de destaque e isso ninguém toma. Eu seria tendencioso a iniciar qualquer projeto já em no modelo relacional. Estou acostumado com relação de entidades, chaves estrangeiras, inner joins, outer joins, 1:N, N:N, tabelas auxiliares.

Aliás, o modelo relacional é da década de 70 e foi criado por Edgar Frank Codd. Ele substituiu os modelos pré relacionais e hoje são a grande maioria dos modelos que estão em produção. Porém, os relacionamentos, apesar de montarem uma estrutura organizada, causam lentidão em seu sistema. Os modelos não relacionais são conhecidos por serem altamente peformáticos.

Arquitetura

Ilustração criada por mim.

O grande trunfo do Cassandra é sua arquitetura distribuída. O cluster agrupa em seu conjunto, vários nós. Os nós são maquinas onde os dados são armazenados e replicados para outros nós. Essa redundância de dados vai garantir a disponibilidade, que é um dos focos do Cassandra. A possibilidade de separação dos nós, nos permite distribuir dados em outros data warehouse. Isso nos leva ao outro foco, que é a escalabilidade. Essa escalabilidade pode ser elástica, ou seja, a medida que necessito de mais recursos, posso escalar a minha infra para atender a alta demanda. Por exemplo, um caso de uma loja que vende X, mas na black friday tem um volume de vendas 10 vezes maior, durante esse período de sazonalidade, a infra pode ser esticada para garantir que o banco vai atender ao peso da demanda.

Em computação, cluster é o nome dado a um sistema que conecta uma série de computadores em uma rede para que eles trabalhem de maneira conjunta, seja no processamento de tarefas, resolução de problemas ou integridade de dados. Cada máquina conectada à rede ganha o nome de nó.
(PADUA apud PEDRO)

Uma ilustração de como é a arquitetura em cluster. Ilustração de MARLON 2016, Devmedia

É interessante que o Cassandra, apesar de usar uma linguagem própria, sua sintaxe identica ao SQL. Isso facilita muito o aprendizado. Mas não se engane, o CQL, que é nome da linguagem, não é uma linguagem relacional. Quem está acostumado com o SQL não terá nenhuma dificuldade em entender o CQL. É quase que um aprendizado por tabela, com pequenas diferenças e formas de trabalhar diferente.

O Cassandra não será uma boa opção, exceto quando for. Se você precisa de um banco de dados confiável, que tenha alta escalabilidade, disponibilidade, alto desempenho e que ainda seja open source, o Cassandra deveria estar no seu radar.

Apache, Apache Cassandra, 12 de abril de 2023, disponivel em: https://cassandra.apache.org/
PADUA, Vitor Tecnoblog apud PEDRO, Wagner Tecnoblog disponível em: https://tecnoblog.net/responde/o-que-e-um-cluster-em-computacao/
Hosch, W. L. (2022, August 19). Edgar Frank Codd. Encyclopedia Britannica. https://www.britannica.com/biography/Edgar-Frank-Codd

--

--

Thiago Lima
Thiago Lima

Written by Thiago Lima

Hello! I’m Thiago Lima, I’m maried, I have a son named Isaac. I’m software engineer and I programming in Ruby on Rails.

No responses yet