2 min read

NoSQL com Cassandra e HBase [Estudo]

NoSQL com Cassandra e HBase [Estudo]
Photo by Caspar Camille Rubin / Unsplash

Olá pessoal. Passando aqui pra deixar mais um estudo que estou fazendo, esse é da plataforma DIO do Bootcamp Cognizant Cloud Data Engineer. 😁

Os módulos são:

  • Conceitos e Arquitetura NoSQL
  • Comandos Gerais

Módulo 1 - Conceitos e Arquitetura NoSQL

Introdução

Importante saber que o NoSQL é de Not Only SQL e não "NoSQL". O NoSQL é uma alternativa de BD evitando operações de "join". É distribuido, open-source, escalável e livre de modelagens ou schemas, suporta replicação e acesso via API.

Importante também saber que a necessidade do NoSQL é uma alternatva do SQL, com estrutura de dados mais flexíveis e dinâmicas.

Considerar NoSQL:

  • CArga de trabalho de alto volume
  • Carga de trabalho não garante ACID
  • Dados dinâmcos e frequentemente alterados
  • Alta velocidade de gravação e segurança de gravação não é crítica
  • Consulta de dados simples
  • Ampla distribuição

Considerar Relacional:

  • Carga de trabalho média para grande
  • Garantias de ACID necessárias
  • Dados altamente estruturados
  • Dados expressos de maneira relacional
  • Garantia de gravação é requisito
  • Consultas e relatórios complexos
  • Usuários são centralizados

Tipos de NoSQL

SQL:

  • Relacional
  • Analitico (OLAP)

NoSQL:

  • Key-Value
  • Graph
  • Document
  • Column-Family

Teorema de CAP

O teorema de CAP ou Brewer indica que o armazenamento de dados distribuídos só podem atender dois dos três atributos:

  • Consistência
  • Disponibilidade
  • Partição Tolerante a Falhas

Tanto Hadoop e HBase atendem CP.

CA - Consistency e Availabity

  • MySQL
  • PostgreSQL

AP - Availability & Partition tolerance

  • Riak
  • Cassandra
  • CouchDB
  • DynamoDB

CP - Consistency & Partition tolerante

  • HBase
  • MongoDB
  • Redis
  • Memcache

Apache Hbase

O HBase é bando de dados distribuíd e orientado a colunas.

  • Esparso
  • Distribuído
  • Persistente
  • Multidimensional
  • Ordenado Map

Desvantagem é não ter uma linguagem SQL.

O map é idnexado por uma linha chave (row key), coluna chave (column key) e uma coluna timestamp.

Uma vantagem é a facilidade e integração com ecosistemas Hadoop.

Apache Cassandra

O Cassandra é um banco de dados distribuído e orientado a colunas. Diferente do HBase, os dados armazenados são tipados e há conceitos mais complexos de modelagem.

Possui linguagem SQL (CQL) com semelhança ao SQL ANSI.

A principal caracteristica é armazenar dados em múltiplos nós sem nenhum ponto de falha, utilizando um potrocolo chamado Gossip.

Diferença do HBase é que o Cassandra suporta tabela secundárias de índices e permite filtros em colunas fora da primery key.

Componentes:

  • Node
  • Data Center
  • Cluster
  • Commit log
  • Mem-table
  • SSTable

Módulo 2 - Comandos Gerais

HBase - comandos para criação e manipulação de tabelas

Criar tabela:

create 'funcionario', 'pessoais', 'profissionais'

Inserir dados:

put 'funcionario', '1', 'pessoais:nome', 'Maria'

Mostra registros:

scan 'funcionario'

Inserir outro identificador:

put 'funcionario', '1', 'pessoais:cidade', 'Santa Catarina'

Inserir outro dado:

put 'funcionario', '2', 'pessoais:empresa', 'Uname'

Alteração:

disable 'funcionario'
alter 'funcionario', NAME=>'hobby', VERSIONS=>5
enable 'funcionario'
put 'funcionario', '1', 'hobby:nome', 'Ler livros'
put 'funcionario', '1', 'hobby:nome', 'Pescar'
scan 'funcionario'

Contagem/Leitura:

count 'funcionario'

Apagar  (apaga última versão do dado):

delete 'funcionario', '1', 'hobby:nome'

Cassandra - comandos para criação e manipulação de tabelas

Acesso ao Cassandra:

cqlsh

Criação Keyspace:

CREATE KEYSPACE empresa
WITH replication = {'class':'SimpleStrategy','replication_factor':3}:

Criação de tabela:

create tabela empresa.funcionario
	(
		empregadoid int primary key,
        empregadonome text,
        empregadocargo text,
	);

Criação de índice secunário para consulta:

CREATE INDEX empresacargo ON empresa.funcionario (empregadocargo)