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: 46.995 ]

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

OAK: Câmera Open Source de Visão Computacional com AI

Detectando assalto na multidão com visão computacional

Interface Gráfica e Ambiente Integrado p/ Free Pascal

Criando um invejável serviço de backup em CD-R com gravação multi-sessão

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

Leitura recomendada

Uma vulnerabilidade chamada de SQL Injection

Instalando o tora (toolkit for oracle) no Slackware 10.2

Banco de dados orientados a documentos

Banco de dados e Cloud Computing, melhor opção?

Gambas2: Inserindo dados em tabela SQLite

  
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 RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts