Artigo no estilo: Curso

Por que eu devo ler este artigo:Este artigo será útil para profissionais que trabalham com aplicações Java EE e desejam incorporar ao seu pool de tecnologias um banco de dados NoSQL para lidar com as crescentes demandas por performance: o Apache Cassandra.

O artigo irá apresentar uma visão geral do Apache Cassandra incluindo conceitos chave, modelo de dados, constraints, ferramentas, boas práticas, entre outros. Além disso, irá demonstrar através da implementação de uma aplicação simples como combinar esse banco de dados com as tecnologias do Java EE, e para isso, será utilizado o driver da DataStax, WildFly 9, PrimeFaces 5.3, Cassandra 2.2, além de outras tecnologias.

Ao longo das últimas décadas muitas coisas aconteceram no mundo da tecnologia: mudanças em linguagens de programação, novas arquiteturas, diferentes metodologias de desenvolvimento, entre outros. No entanto, uma coisa permanecia intacta: bancos de dados relacionais eram a escolha padrão para armazenar dados. Com o crescimento acelerado da Internet e a necessidade cada vez mais comum de manipular altos volumes de dados, isso mudou um pouco. Uma nova tecnologia emergiu e vem se consolidando nos últimos anos: são os chamados bancos de dados NoSQL.

Um dos principais problemas dos bancos de dados relacionais para lidar com grandes massas de dados é o fato de que sua arquitetura cria dificuldades para que esses bancos rodem em cluster. Dessa forma, quando surge a necessidade de escalar as alternativas normalmente são:

· Escalabilidade Vertical: consiste em aumentar os recursos do servidor (memória, CPU, disco e etc.). Além de ter um limite máximo real, normalmente tem custos proibitivos;

· Sharding: essa técnica divide os dados da aplicação em mais de um servidor, distribuindo melhor a carga. O problema é que traz uma enorme complexidade para a aplicação, perde as melhores vantagens dos bancos relacionais, como integridade referencial, e continua tendo um ponto único de falha;

· Master-Slave: um servidor (Master) recebe todas as escritas e replica para as demais instâncias (Slaves), as quais podem atender apenas requisições de leitura. Apesar de poder distribuir melhor a carga entre vários servidores, continua tendo um ponto único de falha e não consegue ter escalabilidade nas operações de escrita por ter apenas um servidor atendendo esse tipo de requisição. Ademais, pode acarretar em custos que inviabilizam sua adoção.

Por esse motivo os bancos de dados NoSQL vêm se popularizando cada vez mais. Executar em cluster com naturalidade, ter alta disponibilidade, facilidade de rodar na nuvem são aspectos comuns nesses novos bancos, pois nasceram justamente para resolver esse tipo de problema. Nesse contexto, o Apache Cassandra se destaca por possuir um modelo arquitetural que proporciona todas essas funcionalidades de uma maneira que minimiza a complexidade existente nesse tipo de ambiente.

Assim, nas próximas seções este artigo irá apresentar o Apache Cassandra de maneira mais detalhada, com o intuito de proporcionar ao leitor um embasamento teórico para o melhor entendimento da tecnologia, bem como irá demonstrar por meio de um exemplo prático algumas das funcionalidades explicadas. Além disso, também será exposta uma abordagem para usá-lo em conjunto com a plataforma Java EE. E para tornar o exemplo mais próximo do nosso dia a dia, outras tecnologias serão usadas, como o PrimeFaces e seus novos recursos de responsividade, CDI e DeltaSpike.

Conhecendo o Apache Cassandra

O Cassandra é um banco de dados NoSQL orientado a colunas desenvolvido em Java. Criado pelo Facebook e depois doado para a Fundação Apache, hoje é reconhecido na indústria de software como um banco de dados massivamente escalável, de alta disponibilidade, distribuído, dentre outras características essenciais para suportar volumes de dados colossais, com crescimento exponencial e carga excessiva de requisições.

Antes de analisar outros detalhes, a seguir serão apresentados alguns conceitos importantes para facilitar o entendimento do restante do artigo:

· Cluster: consiste num grupo de máquinas (nós) onde os dados são distribuídos e armazenados. Pode ser composto de um único nó (single-node cluster) ou vários nós em diversos data centers. A Figura 1 apresenta um exemplo ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora