Apache Cassandra NoSQL, uma tecnologia emergente

Neste documento veremos, sem mistério, um pouco da tecnologia emergente NoSQL (Apache Cassandra), que tomou o lugar do banco MySQL no projeto Twitter, segundo as notícias publicadas em toda internet, como também colocou em evidência o assunto.

[ Hits: 41.414 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 17/03/2010 | Blog: http://assuntonerd.com.br


Introdução



Desenvolvido inicialmente pelo Facebook como open source em 2008, cujo objetivo foi ampliar o universo de instalação MySQL, o Cassandra exerce com excelência a função de repositório de dados. Leve e desenvolvido na plataforma Java, ele não apresenta a sobrecarga de recurso do banco de dados convencionais. Atualmente o projeto é baseado na tecnologia emergente NoSQL e encontra-se incubado pela Fundação Apache.

Com poucos minutos de pesquisa na internet, é possível encontrar testes realizados por diversos segmentos demonstrando confiabilidade, escalabilidade e fácil gerenciamento. Atualmente o Twitter apresenta uma massa crítica e pesada baseada no seu monstruoso crescimento atrelado a escala temporal, sendo assim, este cenário é um excelente "caso de sucesso" para o Apache Cassandra.
Linux: Apache Cassandra NoSQL , uma tecnologia emergente.
Instalei o projeto Apache Cassandra e veremos na próxima página, passo-a-passo como fazê-lo sem trauma algum. NoSQL conta com sua maior aplicação atual: 100 terabytes de dados e 150 servidores (uma base consideravelmente grande). Diversas APIs de acesso proporcionam o seu uso de forma muito simples (Ruby, Perl, Scala, Python, PHP e Java).

O Digg usa o Cassandra, o Facebook (desenvolvedor original) e agora o Twitter. Isto demonstra que a desnormalização de dados não é um problema onde geralmente leva-se em conta ao custo do espaço em disco. O vasto campo do NoSQL está gerando grandes interesses, e as sua técnicas estão colocando em evidências os bancos de dados NoSQL.

O texto a seguir foi extraído do post do blog globalcoder e ilustra bem o atual polêmico cenário:

"Escalabilidade é um tema bastante complexo e armazenamento e processamento de grandes volumes de dados são focos de pesquisas que estão bem aquecidas hoje em dia. Um dos mais ativos movimentos nesta linha está tomando forma, encorpando e sendo batizado. Chama-se NoSQL. Em um livro recém lançado intitulado 'Hadoop: The Definitive Guide' (escrito por Tom White) há uma passagem digna de nota (em uma tradução livre):

Este é o resumo de como a história acerca de escalabilidade no uso de um banco de dados relacional se desenrola. A seguinte lista assume uma aplicação de sucesso, de demanda crescente.


Lançamento ao público inicial:

Cópia da instância MySQL de desenvolvimento para o ambiente de produção, compartilhado e remoto, tendo um esquema de dados bem definido.

A aplicação se torna mais popular; requisições demasiadas de leitura atingindo o banco de dados:

Adiciona-se "memcached" ao sistema para que as requisições mais comuns se mantenham em memória. As leituras ao banco de dados não são mais estritamente ACID; dados armazenados em memória devem ser invalidados por algum mecanismo.

A aplicação continua com crescente demanda; requisições demasiadas de escrita atingindo o banco de dados:

Escala-se verticalmente o MySQL através da atualização de hardware do servidor com 16 núcleos, 128 GB de RAM e bancos de discos rígidos com 15000 RPMs. Oneroso.

Novos recursos implementados no sistema aumentam a complexidade das consultas SQL; agora temos muitos "joins":

Desnormalização dos dados para reduzir "joins" (isto não é o que eles ensinam na escola para DBA).

Demanda da aplicação cresce e derruba o servidor; tudo está muito lento:

Para-se com qualquer processamento no lado do servidor.

Algumas consultas ainda estão lentas:

Cria-se periodicamente "views" materializadas das consultas mais complexas, tenta-se eliminar "joins" na maioria dos casos.

Leituras estão aceitáveis mas escritas estão cada vez mais lentas e lentas:

Elimina-se índices secundários e "triggers"! Sem índices? ...

Quantos de nós estamos envolvidos com sistemas que estão nesta rota? Será mesmo que nossas aplicações nunca atingirão tais níveis?"

Texto extraído de: http://blog.globalcode.com.br/

Bom, agora chega de blá, blá, blá e partiremos para o que realmente interessa, a mão na massa...

    Próxima página

Páginas do artigo
   1. Introdução
   2. Jogo rápido, download e instalação
Outros artigos deste autor

Visão Computacional - Reconhecendo objetos na plataforma Linux via Webcam

ePub - O MP3 dos livros

Utilize qualquer Tablet/Smartphone como monitor estendido sem fio no GNU/Linux

UZIX - O Linux do MSX (Z80)

HairCAPTURE – Utilizando captura de vídeo em C++ (sem segredos)

Leitura recomendada

Instalando Interbase 2007 Developer em Linux OpenSuSE 10.2

Desafios da Segurança de Informação

Desenvolvimento de uma interface WEB com PHP para gerenciamento de banco de dados CouchDB

Consultas SQL pelo Terminal no Postgres, Mysql, SQL Server, etc

Uma vulnerabilidade chamada de SQL Injection

  
Comentários
[1] Comentário enviado por jborda em 18/03/2010 - 08:49h

"Boa Cabelo!", tenho "ouvido" falar muito no Cassandra(NoSQL) ultimamente(essa semana), e agora com "ela" bombando no Twitter vai chamar muito a atenção! Pretendo testa-lo logo-logo.

[2] Comentário enviado por newwave em 19/03/2010 - 18:28h

Ainda não entendi uma coisa: NoSQL, significa que ele não usa o padrão SQL e sim um padrão próprio?
Outra coisa: não serve pra ser usado em C/C++?

[3] Comentário enviado por baza em 20/03/2010 - 13:11h

A gente que era acostumada a instalar o metapacote LAMP teria grandes dificuldades em substituir o Mysql pelo NoSQL?

[4] Comentário enviado por junior em 09/01/2013 - 00:11h

Trabalho com Cassandra em um ambiente com cerca de 2 bilhões de requisições por mês e tem sido simplesmente fenomenal a performance do Cassandra. O casamento com o MEMCACHE deixa tudo mais melhor de bom da conta.
-
@newwave: "Esqueça" o padrão SQL. Não foreign key e etc. O conceito é muito semelhante ao hash que o Ruby implementa, é básicamente chave, coluna, valor. Exemplo

Carros { //chave
cor //coluna => "branco" // valor
}

(Usei a estrutura do hash do Ruby pra exemplificar)

Sendo assim é muito performático para big data e operações com map reduce.

Um abraço.

Parabéns Cabelo, ótima documentação.

[5] Comentário enviado por gibroh@hotmail.c em 07/05/2013 - 15:52h

Desde 2008 eu havia iniciado a criar um SGBD em csv chamado CSV Comp.
Esse Banco de dados tem caracteristicas como este tal cassandra,porem tem controle de concorrencia e relacional (inclusive).
Desde o inicio de 2008,havia uma linguagem no meu banco que eu chamei de CQL (Comma Query Language).
Em 2011 o Cassandra adotou o nome CQL como sendo o nome da linguagem de manipulação de dados. (4 anos depois).
Fico pensando.Como ficará minha aplicação ?Devo mudar meus códigos?
Veja meu BANCO COM CQL desde 2008
http://www.youtube.com/results?search_query=csv+comp

veja sintaxe:
{
Tabela;
@tabela;
0;0;0;
query=0;
destino=0
}

Veja o Cassandra que usa desde 2011:
http://cassandra.apache.org/download/

Observação:Não vou mudar meu nome.Meu funciona em CGI e desktop.

Nós Brasileiros temos mania de engrandecer tudo que é estrangeiro e desprezar os nossos "Tabajaras".

[6] Comentário enviado por gibroh@hotmail.c em 07/05/2013 - 16:03h

vou mostrar exemplo com cgi

<html>
<form action='http://servidor/cgi-bin/executa.exe/default'>
Digite nome:<br>
<input type='text' name='id_nome'></a><p>

Digite nome:<br>
<input type='submit' name='script_cql_original.cql' value='CQL original'></a><p>

</form>
</html>

//script que cadastra um item na tabela csv usando script cql (Comma Query Language)

{
Sua_tabela;
@adicionar;
(id_nome);
0;0;0;
query=0;
destino=0
}

//Salva script no cgi-bin

//Agora exemplo com aplicações usando pascal

var meu_cql:tstringlist;
begin
meu_cql:=tstringlist.create;
//adiciona comando CQL
meu_cql.add('{Sua_tabela;@adicionar;('+ edit1.text +');0;0;0;query=0;destino=0}');

//Salva para entrada do banco
meu_cql.savetofile(c:\caminho\inpout_comp.exe)
shellexec(bla,bla,bla);//executa o parser

meu_cql.free;
end;


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts