Você está na página 1de 8

Banco de dados NOSQL orientado a colunas

Resumo

Bancos de dados são amplamente utilizados em diversas áreas da sociedade, com a


intenção e finalidade de armazenar e manipular dados, a cada dia mais as exigências de
melhor desempenho, torna-se necessário, para que sejam atendidas as demandas do
mercado. Com isso, desenvolvedores apresentam soluções de acordo com a necessidade
de cada empresa, e usuário do mundo tecnológico. Citaremos então neste trabalho o
banco de dados NOSQL, comparado ao Relacional, em ênfase ao modo orientado a
colunas. Que vem sendo muito utilizado em grandes empresas do cenário no qual hoje
vivemos.

Banco de dados NOSQL

Para identificar bancos de dados de código aberto que não possuíam interface
SQL, foi criado em 1998 o termo NOSQL. Este novo conceito é totalmente distinto do
modelo relacional, e seria mais apropriadamente chamado de NoRelacional, porém o
nome NoSQL, adotado, possui um efeito melhor. Bancos de dados não relacionais,
incluindo hierárquicos, gráficos e orientados a objetos estão em uso desde os anos 60.
Entretanto, novos tipos de bancos de dados não relacionais estão sendo desenvolvidos,
como os bancos colunares. Os bancos de dados NoSQL tem diferentes abordagens,
porém o que todos eles possuem em comum é que não são relacionais. A principal
vantagem de um tipo de dados não relacional é que, diferente da abordagem tradicional,
eles lidam bem com dados desestruturados, tais como e-mails, dados multimídia e dados
provenientes de mídias sociais.
Além disso, a necessidade de melhorar o desempenho dos bancos de dados, e
diminuir os custos de armazenamento e processamento de informações impulsionaram o
desenvolvimento desta nova metodologia de banco de dados. O NoSQL lida bem com
distribuição horizontal, ou seja, consegue ser distribuído entre várias estações para
armazenamento de maiores quantidades de dados, e estes novos servidores não precisam
ser de alto desempenho.A grande motivação para NoSQL é resolver o problema de
escalabildade dos bancos tradicionais. Pode ser muito caro ou/e complexo escalar um
banco SQL.

Bancos de dados Orientados a coluna

Em uma arquitetura orientada a colunas, o valor de cada coluna (atributo) é


armazenado em sequência, aumentando a performance da leitura de uma única coluna.
Com este modelo de armazenamento, o banco de dados carrega em memória apenas os
valores das colunas que serão utilizados, evitando preencher a memória com dados que
não serão utilizados.
Há duas formas que os bancos de dados colunares podem utilizar CPU para
diminuir a utilização do disco rígido. Primeiro, eles podem codificar os dados para uma
forma mais compacta (transformar os dados em bytes, ao invés de armazena-los em sua
forma nativa). Em segundo lugar, em um armazenamento colunar, é mais simples para
comprimir N valores, cada um de um tamanho K bits, em um espaço N * K bits
A ideia é não salvar os dados em linhas como estamos acostumados pelos bancos
relacionais. Os dados serão salvos através de colunas. Veja a diferença:

Banco relacional (3 linhas presentes – Nome, Salário, Data):

João,1432.00,15/10/2009

Maria,1511.00,13/10/2009
Pedro,1721.00,01/10/2009

Orientado a Coluna (mesmo exemplo):

João,Maria,Pedro

1432.00,1511.00,1721.00

15/10/2009,13/10/2009,01/10/2009

Características do Banco de Dados modo Colunar

Usando o banco de dados colunar podemos empacotar os dados melhor já que os


dados semelhantes, de mesmo formato, estão próximos um do outro. Gravando
dados empacotados em BDs traz grandes vantagens, porque podemos recuperar e
armazenar mais informações em menos tempo. Adota – se o uso do modelo de
banco de dados orientado a colunas com o intuito de atender as demandas de
escalabilidade, alta disponibilidade e alto grau de performance.

Principais produtos de software para o banco de dados orientado a


colunas

BigTable = Desenvolvido e utilizado pela Google


Cassandra = Desenvolvido e utilizado pelo Facebook e também hoje utilizado pela
Cisco, Digg e Twiter, por conta da sua eficiência.
NOSQL

Modelo de persistência: Com a necessidade de se ganhar mais performance


principalmente no trabalho com grandes blocos de dados foi criado os bancos que usam o
princípio do BASE.

Basicamente Avaliado (disponível)

Soft-state

Eventualmente persistente (em um momento será persistido)

A ideia desse modelo é estar dando prioridade há uma alta disponibilidade e


escalabilidade além de um alto grau de performance.

Armazenamento: com o objetivo da disponibilidade boa parte desse modelo usam


memória principal e durante um período de tempo são jogados no disco rígido, alguns
modelos trabalham 100% com memória principal.

Acesso da informação: No nosql, não existe semelhança nenhum entre os bancos de


dados, atualmente pode-se dividir os grupos de bancos de dados em quatro que são:
grande tabela, chave-valor, grafos, documentos ( serão explicados melhor no decorrer do
artigo) cada um com características específicas e objetivos específicos. Para se conectar
ou acessar um desses bancos de dados é usado uma API, então mudanças de bancos de
dados causará bastante impacto para a aplicação, mesmo que os bancos de dados sejam
do mesmo tipo, por exemplo,de Big Table da Google para cassandra apesar de ambos
possuírem o mesmo modelo de banco de dados que é o de grande tabela a mudança de
código mesmo que apenas em uma camada (DAO) será relativamente alta, mas a
tendência é que daqui a alguns anos cada um dos tipos de banco de dados existem uma
implementação de referência semelhante ao JPA. Outra informação importante é que
você boa parte dos bancos você recupera a informação apenas a partir de uma chave

No primeiro e segundo artigo foi introduzido com o conceito de banco dedados NOSQL
suas semelhanças com o banco relacional além de sua classificação na terceira parte
finalmente será falado sobre o Cassandra . O cassandra é um banco de dados nosql de
arquitetura distribuída, seu armazenamento é configurável (híbrido) e usa o modelo de
família de colunas, o seu projeto foi iniciado pela equipe do facebook e atualmente é
mantido pelo apache, foi desenvolvido na plataforma java. Seu principal case de sucesso
é o twitter, facebook e o Digg. Possui api para as linguagens Ruby, Perl, Scala,Python,
PHP e Java.
Como o cassandra usa o modelo família de colunas, ele é composto porkeysotre,
supercoluna e coluna.

Os tipos de valores que possam ser inseridos nas colunas são:

 BytesType: tipo simples pelo valor de byte. Nenhuma validação é executada.


 AsciiType: Como BytesType, mas confirma que a entrada pode ser analisado
como US-ASCII.
 UTF8Type: Uma string codificada como UTF8
 LongType: Um longo 64bit
 LexicalUUIDType: Um UUID de 128 bits, em comparação léxica (por valor byte)
 TimeUUIDType: a versão 1 UUID de 128 bits, comparados por timestamp

Nível de Consistência do Casssandra

Para garantir tolerância a falhas, os dados no Cassandra precisam ser replicados. O


campo timestamp funciona como uma bússola verificando o campo mais atual entre as
replicas. De uma maneira geral o comportamento de leitura e escrita no cassandra pode
ser definida por apenas três itens:

ONE(1) - Na escrita, garante que o dado foi escrito em um commit loge uma tabela de
memória de ao menos uma réplica antes de responderão cliente. Na leitura, o dado será
retornado a partir do primeironó onde a chave buscada foi encontrada. Essa prática pode
resultarem dados antigos sendo retornados, porém, como cada leitura gera uma
verificação de consistência em background, consultas subsequentes retornarão o valor
correto do dado;

QUORUM(Q) - Na escrita garante que o dado foi escrito em N/2+1réplicas. Na escrita


retorna o valor mais recente lido de N/2+1réplicas. As réplicas restantes são
sincronizadas em background;

ALL(N) - Garante que operações de leitura e escrita envolverão todas as réplicas. Assim,
qualquer nó que não responda às consultas fará as operações falharem.

A tabela 1 e 2 demonstra os níveis de consistência de escrita e leitura respectivamente.

ESCREVER
Nível Comportamento
ANY Garantir que a gravação foi escrito para
pelo menos 1 nó, incluindo destinatários .
ONE Garantir que a gravação foi escrita a pelo
menos 1 log réplica cometer e tabela de
memória antes de responder ao cliente.
QUORUM Garantir que a gravação foi escrito para N /
2 + 1 réplicas antes de responder ao cliente
LOCAL_QUORUM Garantir que a gravação foi escrito para / 2
+ 1 nós, dentro do datacenter local (requer
NetworkTopologyStrategy)
EACH_QUORUM Garantir que a gravação foi escrito para / 2
+ 1 nós em cada datacenter (requer
NetworkTopologyStrategy)
ALL Garantir que a escrita é escrita para todas as
réplicas N antes de responder ao cliente.
Quaisquer réplicas responder irá falhar a
operação.

Ler
Nível Comportamento
ANY Não suportado. Você provavelmente vai
querer uma vez.
ONE Retornará o registro retornado pela primeira
réplica para responder. A verificação de
consistência é sempre feito em um thread
em segundo plano para corrigir os
problemas de consistência quando
ConsistencyLevel.ONE é usado. Isto
significa chamadas subsequentes terão
dados corretos mesmo que a leitura inicial é
um antigo valor. (Isso é chamado
ReadRepair)
QUORUM Irá consultar todas as réplicas e retornar o
registro com o timestamp mais recente,
desde que tenha pelo menos a maioria de
réplicas (N / 2 + 1) relatados. Novamente,
as réplicas restantes serão verificadas em
segundo plano.
LOCAL_QUORUM Retorna o registro com o timestamp mais
recente, desde a maioria das réplicas dentro
do datacenter locais têm respondido.
EACH_QUORUM Retorna o registro com o timestamp mais
recente, desde a maioria das réplicas dentro
de cada datacenter ter respondido.
ALL Irá consultar todas as réplicas e retornar o
registro com o timestamp mais recente, uma
vez todas as réplicas ter respondido.
Quaisquer réplicas responder irá falhar a
operação.

Colunas Essemodelo se tornou popular através do paper BigTable do Google, com o


objetivo de montar um sistema de armazenamento de dados distribuído, projetado para
ter um alto grau de escalabilidade e de volume de dados é composto por três
componentes
Keyspace tem como função agrupar um conjunto de Famílias de Colunas. Semelhante a
um banco de dados relacional.

Família de Colunas organizas as colunas. faz o uso de uma chave única, que traz
flexibilidade ao modelo sem poluir as linhas com colunas nulas. Semelhante a uma tabela
no modelo relacional.

Coluna, que é uma tupla composta por nome,timestamp e valor, onde os dados são
realmente armazenados.

Duas características adicionais e importantes deste modelo são a forma de consulta, que
pode ser executada apenas através da chave das linhas de uma família de colunas, e a
necessidade de definir previamente o conjunto de colunas que podem ser armazenadas
em cada família.

· Cassandra

· GoogleBigTable

· HBase

· Hyperbase

http://fatecsjc.edu.br/trabalhos-de-graduacao/wp-
content/uploads/2012/03/Trabalho-de-Gradua%C3%A7%C3%A3o-Felipe-G.-S.-
Issa.pdf

http://www.devmedia.com.br/persistindo-informacoes-no-cassandra-com-
java/23445

Você também pode gostar