O que é Apache Cassandra | Introdução a Cassandra
Neste artigo, aprenderemos sobre os conceitos do NoSQL em alto nível, pois sua família desempenha um papel vital no mercado de BigData. Também discutiremos o que é Cassandra, que é o banco de dados NoSQL líder de mercado, a arquitetura Cassandra, os principais componentes e seus casos de uso em detalhes.
1. Introdução aos bancos de dados NoSQL
O termo "NoSQL" refere-se a um método de banco de dados que difere dos sistemas típicos de gerenciamento de banco de dados relacional (RDBMS). Para entender o NoSQL, é necessário primeiro entender o SQL, que é uma linguagem de consulta usada por bancos de dados relacionais.
Tabelas, colunas, linhas e esquemas são usados para organizar e recuperar dados em bancos de dados relacionais. Os bancos de dados NoSQL, por outro lado, não dependem dessas estruturas e, em vez disso, utilizam modelos de dados mais flexíveis.
Os bancos de dados NoSQL foram adotados pelas principais organizações à medida que os RDBMS falharam progressivamente em atender aos requisitos de desempenho, escalabilidade e flexibilidade dos aplicativos de próxima geração com uso intensivo de dados.
"Não SQL" ou "não apenas SQL" são dois termos que podem ser usados para descrever o NoSQL.
Os dados não estruturados aumentam a uma taxa muito mais rápida do que os dados estruturados e não se ajustam às estruturas relacionais do RDBMS, portanto, o NoSQL é particularmente útil para armazenar dados não estruturados.
Dados do usuário e da sessão; dados de bate-papo, mensagens e registro; dados de série temporal, como IoT e dados de dispositivos; e itens enormes, como vídeos e fotografias, são exemplos de dados não estruturados.
2. Tipos de bancos de dados NoSQL
2.1. Armazenamento de valor-chave
Muitas vezes é considerada a forma mais básica de banco de dados NoSQL. Este modelo de dados sem esquema é organizado como um dicionário de pares chave-valor, com uma chave e um valor para cada item.
É frequentemente usado para armazenar em cache e armazenar dados de sessão do usuário, como carrinhos de compras. Porém, quando você precisa extrair vários registros de uma vez, isso não é o ideal.
Para fornecer escalabilidade e disponibilidade, os dados são particionados e replicados em um cluster. Como resultado, o armazenamento de valores-chave raramente suporta transações.
Eles são muito bons em dimensionar aplicativos que lidam com dados não transacionais de alta velocidade. Amazon DynamoDB, Redis e Riak são bancos de dados de armazenamento de valores-chave populares.
2.2. Documento
Os bancos de dados de documentos levam o conceito de banco de dados de valores-chave um passo adiante, agrupando documentos em coleções. Eles permitem consultas em qualquer atributo dentro de um documento e suportam pares de valores-chave aninhados.
Os dados são representados principalmente como um objeto ou documento semelhante a JSON no código do aplicativo porque são um paradigma de dados eficiente e intuitivo para desenvolvedores.
MongoDB e Amazon DocumentDB são exemplos de bancos de dados de documentos.
2.3. Orientado a colunas
Os bancos de dados orientados a colunas concentram-se em colunas e cada coluna é abordada separadamente. Ao consultar colunas específicas no banco de dados, os bancos de dados orientados a colunas são mais eficientes no armazenamento de dados e na consulta em linhas de dados esparsos. Eles funcionam bem em consultas agregadas como SUM, COUNT, AVG, MIN, pois os dados estão prontamente disponíveis em uma coluna.
HBase, Apache Cassandra são os melhores exemplos de banco de dados orientado a colunas.
2.4. Baseado em gráfico
Um banco de dados gráfico rastreia ambas as entidades e suas conexões. A entidade é representada como um nó, enquanto as conexões/relacionamentos são representadas como arestas.
Uma borda estabelece uma conexão entre nós. Um identificador exclusivo é alocado para cada nó e borda. O banco de dados gráfico é de natureza multi-relacional.
Neo4J, Infinite Graph, OrientDB são bancos de dados gráficos populares.
3. O que é Apache Cassandra?
Apache Cassandra é um sistema de gerenciamento de banco de dados distribuído e de código aberto, orientado a colunas, que pode lidar com grandes quantidades de dados em vários data centers e na nuvem.
Sua capacidade de gerenciar grandes volumes o torna especialmente útil para grandes empresas. Como resultado, várias grandes empresas, incluindo Apple, Instagram, Facebook, Uber, Twitter, Cisco, eBay e Netflix, estão agora a utilizá-lo.
Destaques de Cassandra:
- Código aberto
- Extremamente escalável
- Alta disponibilidade
- Nenhum ponto único de falha
- Alta performance
- Tolerante a falhas
4. Arquitetura Cassandra
O Apache Cassandra foi desenvolvido para gerenciar grandes cargas de trabalho de dados em vários nós sem nenhum ponto único de falha. Seu design baseia-se na suposição de que falhas de sistema e hardware são inevitáveis.
Cassandra resolve o problema de falhas implantando um sistema distribuído ponto a ponto entre nós homogêneos e distribuindo dados pelo cluster.
A arquitetura do Cassandra é baseada em anel e não possui nós mestres ou pontos únicos de falha.
- Usando o protocolo de comunicação de fofoca ponto a ponto, cada nó geralmente transmite informações de estado sobre si mesmo e sobre outros nós no cluster. Para garantir a durabilidade dos dados, cada nó possui um log de commit escrito sequencialmente que registra as atividades de gravação.
- Os dados são posteriormente indexados e gravados em uma memtable, uma estrutura na memória que imita um cache de write-back. Os dados são gravados em discos em um arquivo de dados SSTables sempre que a estrutura da memória estiver completa.
- Todas as gravações são particionadas e duplicadas/replicadas automaticamente em todo o cluster. Cassandra usa um processo chamado compactação para combinar SSTables regularmente, eliminando dados obsoletos marcados para exclusão usando uma marca de exclusão. Vários procedimentos de reparo são usados para garantir que todos os dados do cluster permaneçam consistentes.
- Cassandra é um banco de dados de armazenamento de linhas particionado no qual as linhas são agrupadas em tabelas e uma chave primária é necessária. Usando o CQL, qualquer usuário autorizado pode se conectar a qualquer nó em qualquer datacenter e acessar dados. CQL possui uma sintaxe comparável ao SQL e funciona com dados de tabela.
- Qualquer nó no cluster pode receber solicitações de leitura ou gravação do cliente. Quando um cliente envia uma solicitação a um nó, esse nó se torna o coordenador dessa operação específica do cliente. Entre a aplicação cliente e os nós proprietários dos dados solicitados, o coordenador funciona como um proxy. Com base em como o cluster foi projetado, o coordenador seleciona quais nós do anel devem receber a solicitação.
Cassandra Arquitetura
5. Componentes principais do Cassandra
- Nó: É o servidor onde os dados estão sendo armazenados, a infraestrutura do Cassandra é construída em torno dele.
- Data Center: Coleção dos servidores.
- Cluster: Um ou mais datacenters constituem um cluster.
- SSTable: A Tabela de Strings Classificadas é um arquivo que contém pares de strings de chave/valor que foram classificados por chaves. Para cada tabela Cassandra, as SSTables são anexadas exclusivamente e salvas sequencialmente no disco.
- Log de commit: Por uma questão de durabilidade, todos os dados são inicialmente gravados no log de commit. Depois que todos os seus dados forem drenados para SSTables, eles poderão ser arquivados, removidos ou reciclados.
- Mem-Table: Uma estrutura de dados residente na memória é conhecida como mem-table. Os dados seriam gravados na tabela mem após o log de confirmação. Às vezes, pode haver muitas tabelas mem para uma família de coluna única.
- Filtros Bloom: Os filtros Bloom são usados pelo Cassandra para determinar se alguma das SSTables tem probabilidade de ter a chave de partição desejada sem ter que ler seu conteúdo.
6. Onde usar Cassandra?
Cassandra demonstrou ser extremamente útil em diversas aplicações.
A seguir estão algumas das principais considerações ao lançar em Cassandra:
- Temos que preferir Cassandra quando a natureza do aplicativo é intensiva em 'gravação' em comparação com 'leitura'. A distribuição de dados entre nós é rápida e as gravações são baratas.
- Cassandra também é adequado para distribuição de dados em vários data centers e zonas de disponibilidade de nuvem.
- Cassandra pode ser uma “espinha dorsal” poderosa para análises em tempo real quando usada em conjunto com Apache Spark e outras ferramentas. Ele também é dimensionado de forma linear. Então, se você espera que seus dados em tempo real cresçam, Cassandra é sem dúvida a melhor opção.
7. Casos de uso ideais de Cassandra
- Mensagens: Como Cassandra pode lidar com uma enorme quantidade de dados, é a melhor opção de serviços de mensagens.
- Aplicações de sensores: Cassandra é adequado para lidar com dados provenientes de vários dispositivos de sensores com alta velocidade.
- Aplicações Ecom: Muitos varejistas confiam no Cassandra para segurança confiável do carrinho de compras e entrada e saída rápida do catálogo de produtos.
- Mecanismos de recomendação: Cassandra é especialmente adequado para análises e recomendações de consumidores, tornando-o uma escolha popular entre empresas on-line e plataformas de redes sociais.
8. Resumo
Neste artigo, examinamos a visão geral dos conceitos de banco de dados NoSQL e da arquitetura básica do Cassandra. Examinaremos a instalação do Cassandra nos próximos artigos.
Leia a seguir:
- Como instalar o Cassandra no CentOS
Recurso:
- https://aws.amazon.com/nosql/