Академический Документы
Профессиональный Документы
Культура Документы
http://www.unifesp.br
19 de outubro de 2011
ICTUNIFESP 1/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Sumrio I a
1 NoSQL 2 Cassandra 3 Passo a Passo Para Instalar Cassandra 4 Hector 5 Projeto 6 Problemas Encontrados 7 Concluso a
ICTUNIFESP
2/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
NoSQL
Banco de dados no-relacionais; a Sem a preocupao de fornecer garantias ACID (Atomicidade, ca Consistncia, Isolamento e Durabilidade); e No exige esquema de tabela xa; a Geralmente no suporta instrues e operaes de juno SQL. a co co ca
ICTUNIFESP
3/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
NoSQL
Exemplos de Banco NoSQL
ICTUNIFESP
4/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
NoSQL
CouchDB
Banco de dados orientado a documentos Escrito em Erlang Protocolo HTTP/REST Licena: Apache c Replicao Bi-direcional com deteco de conitos ca ca MVCC (Multiversion concurrency control) - Operaes de escrita co no bloqueiam leituras a Autenticao nativa ca http://couchdb.apache.org/
ICTUNIFESP
5/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
NoSQL
Redis
Banco de dados chave/valor Escrito em C/C++ Protocolo Telnet-like Licena: BSD c Banco de dados em memria/disco o Possui os tipos conjunto, listas e hashes Valores podem expirar (como um cache) Operaes transacionadas co http://redis.io/
ICTUNIFESP
6/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
NoSQL
MongoDB
Banco de dados orientado a documentos Escrito em C++ Protocolo Binrio (BSON) a Licena: AGPL (Drivers: Apache) c Replicao mestre/escravo ca As consultas so expresses javascript a o Executa funes arbitrrias javascript do lado do servidor co a Journaling Em sistemas 32 bits limitado a e http://www.mongodb.org/ 2.5Gb Um banco de dados vazio ocupa 192MB
ICTUNIFESP
7/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
NoSQL
Riak
Banco de dados chave/valor Escrito em Erlang, C e javascript Protocolo HTTP/REST e binrio a Licena: Apache c Tolerncia a falhas e Links link walking: Parecido com um banco de dados baseado em grafos. Monitoramento SNMP (Licenciado comercial) http://wiki.basho.com/
ICTUNIFESP
8/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
NoSQL
Neo4j
Banco de dados do tipo grafo. Escrito em Java Protocolo HTTP/REST Licena: GPL, AGPL (algumas funcionalidades) c Execuo embarcada em aplicaes Java ca co Vrtices e arestas podem ter metadados e Multiplos algorithms de busca (path-nding ) Otimizado para leituras Operaes transacionadas co Execuo de script Groovy ca Backup on-line, monitoramento avanado e de alta disponibilidade. c http://neo4j.org/
ICTUNIFESP
9/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
NoSQL
HBase
Banco de dados do tipo BigTable Escrito em Java Protocolo HTTP/REST e Thrift Licena: Apache c Otimizado para consultas em tempo real Jruby-based (JIRB) shell Desempenho de acesso parecido com MySQL http://hbase.apache.org/
ICTUNIFESP
10/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
O que ? e
Desenvolvido inicialmente pelo Facebook Liberado como open source em 2008 para ampliar sua instalao de ca MySQL Repositrio de dados leve feito em Java o Dispensa a sobrecarga de recursos dos bancos de dados relacionais convencionais (NoSQL) Protocolo de acesso: Thrift Rene a arquitetura do Dynamo, da Amazon e modelo de dados u baseado no Bigtable, do Google Atualmente mantido por desenvolvedores da fundao Apache e e ca colaboradores de muitas empresas.
ICTUNIFESP
11/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Quem usa?
Empresas que usam o banco de dados distribu Cassandra: do Digg Facebook Twitter Reddit Rackspace Cloudkick Cisco SimpleGeo Ooyala OpenX
ICTUNIFESP
12/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Quem usa?
O maior cluster em produo tem aproximadamente 100TB de dados ca rodando em 150 mquinas. a
ICTUNIFESP
13/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Clusterizao ca
Quando um Cluster criado, um ponto importante selecionar o e e particionador certo, existem dois: Random Partitioner (RP): Distribui aleatriamente os pares o chave-valor atravs da rede, resultando em um bom balanceamento e de carga. Comparado a OPP, mais ns tem que ser acessado para se o obter um nmero de chaves. u Order Preserving Partitioner (OPP): Distribui os pares chave-valor de uma forma natural para que as chaves similares no quem longe. a A vantagem que menos ns tem que ser acessado. A desvantagem e o a distribuio desigual dos pares chave-valor. e ca
ICTUNIFESP
14/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Caracter stica
Descentralizada: Cada n do cluster tem o mesmo papel. Dados o so distribu a dos em todo o cluster (ento cada n contm diferentes a o e tipos de dados), como no h mestre cada n pode atender qualquer a a o pedido.
ICTUNIFESP
15/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Caracter stica
Elasticidade: quando mquinas so adicionadas o tempo de escrita a a e leitura se comportam de forma linear, evitando inatividade ou interrupo. ca
ICTUNIFESP
16/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Caracter stica
Tolerncia a Falhas: Os dados so automaticamente replicados a a para vrios ns. a o Ns falhos podem ser substitu o dos sem inatividade do Cluster.
ICTUNIFESP
17/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Hardware
Memria o Os dados recentemente salvos so escritos em tabelas na memria a o (aka memtables) Dados antigos so salvos em disco, mas os mais acessados so a a mantidos no cache do sistema arquivos (Mquina virtual Java). a Quanto mais memria melhor. o Em ambientes virtualizados recomendado no m e nimo 4GB.
ICTUNIFESP
18/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Hardware
CPU Cassandra tem uma arquitetura de alta concorrncia. e Faz bom uso de mltiplos ncleos. u u Se voc estiver rodando em uma mquina virtual, considere usar um e a Rackspace Cloud Server.
ICTUNIFESP
19/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Hardware
ICTUNIFESP
20/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Hardware
Nuvem (Cloud) A maioria das instalaes do cassandra feita em ambientes em co e nuvem. Rackspace Cloud Server e Amazon EC2.
ICTUNIFESP
21/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Linguagens suportadas
ICTUNIFESP
22/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Limitaoes c
Todos os dados para uma unica linha deve caber (no disco) em uma unica mquina no cluster. a Uma coluna de valor (column value) no pode ser maior que 2GB. a Uma linha pode ter no mximo 2 bilhes de colunas. a o Os campos chaves e os nomes da colunas podem ter no mximo a 64K bytes.
ICTUNIFESP
23/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Tuning
Manter o diretrio de commit log e dados em diferentes discos. o Parmetros da mquina virtual Java: a a
-XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Dcassandra.compaction.priority=1 - Diminui a prioridade da compactao. ca -XX:+UseCompressedOops - Habilita compresso de referncias, a e reduz overhead em JVMs 64bit.
ICTUNIFESP
24/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Passo a Passo Para Instalar Cassandra
Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a
ICTUNIFESP
25/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Passo a Passo Para Instalar Cassandra
Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a
ICTUNIFESP
25/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Passo a Passo Para Instalar Cassandra
Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a
ICTUNIFESP
25/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Passo a Passo Para Instalar Cassandra
Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a
ICTUNIFESP
25/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Passo a Passo Para Instalar Cassandra
Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a
ICTUNIFESP
25/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
DEMONSTRACAO...
ICTUNIFESP
26/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Script Inicial
create keyspace u ni f e sp A p re s e nt a c ao ; use un if e s pA p r es e n ta c a o ; create column family User with comparator = UTF8Type and column_metadata =[ { column_name : first , validation_class : UTF8Type , index_type : KEYS } , { column_name : last , validation_class : UTF8Type } , { column_name : age , validation_class : UTF8Type , index_type : KEYS }];
ICTUNIFESP
27/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Insero ca
connect localhost /9160; use un if e s pA p r es e n ta c a o ; # inserir set User [ pfonseca ][ first ] = Paulo ; set User [ pfonseca ][ last ] = Fonseca ; set User [ pfonseca ][ age ] = 25 ; get User [ pfonseca ];
ICTUNIFESP
28/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Atualizao ca
connect localhost /9160; use un if e s pA p r es e n ta c a o ; # atualizar set User [ pfonseca ][ age ] = 25 ; set User [ pfonseca ][ first ] = Paulo2 ;
ICTUNIFESP
29/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Cassandra
Excluso a
connect localhost /9160; use un if e s pA p r es e n ta c a o ; # deletar uma coluna del User [ pfonseca ][ last ]; # deletar uma linha del User [ pfonseca ];
ICTUNIFESP
30/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Hector
Cliente thrift de acesso para a linguagem Java. Licena MIT. c Interface orientada a objetos de acesso ao Cassandra. Suporte a falhas. Pool de conexo. a Suporte a JMX (conexes dispon o veis, conexes ociosas, estat o sticas de erro, etc.).
ICTUNIFESP
31/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Hector
Insero ca
public void insert ( final String key , final String value ) throws Exception { execute ( new Command (){ public Void execute ( final Keyspace ks ) throws Exception { ks . insert ( key , createColumnPath ( COLUMN_NAME ) , bytes ( value )); return null ; } }); }
ICTUNIFESP
32/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Hector
Busca
public String get ( final String key ) throws Exception { return execute ( new Command (){ public String execute ( final Keyspace ks ) throws Exception { try { return string ( ks . getColumn ( key , createColumnPath ( COLUMN_NAME )). getValue ()); } catch ( NotFo undExc eption e ) { return null ; } } }); }
ICTUNIFESP
33/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Hector
Excluso a
/ D e l e t e a key from c a s s a n d r a / public void delete ( final String key ) throws Exception { execute ( new Command (){ public Void execute ( final Keyspace ks ) throws Exception { ks . remove ( key , createColumnPath ( COLUMN_NAME )); return null ; } }); }
ICTUNIFESP
34/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Objetivos
Levantar um servidor de persistncia No-SQL; e Integrar com Tomcat; Servio tem que formar um cluster e os dados sejam armazenados c replicados; Se novo servidor instanciado deve haver balano de carga e c automtico na replicao dos dados; a ca Salva XML da pesquisa; Salva uma pesquisa, retorna uma chave; Recupera uma pesquisa baseada na chave; Recupera todas as chaves armazenadas.
ICTUNIFESP
35/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Modelo
ICTUNIFESP
36/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Projeto
Congurao para criar cluster em Cassandra ca
Congurar o arquivo cassandra/conf/cassandra.yaml Server: -Alterar os campos seeds e listen address para o ip de rede da mquina a - Alterar o campo rpc address para 0.0.0.0
ICTUNIFESP
37/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Projeto
Congurao para criar cluster em Cassandra ca
Congurar o arquivo cassandra/conf/cassandra.yaml Clientes: - Alterar o campo seeds: para o ip do servidor - Alterar o campo listen address para o ip de rede da mquina a - Alterar o campo rpc address para 0.0.0.0 Aps realizar a congurao basta reiniciar o servidor e os clientes o ca para que o cluster entre em funcionamento.
ICTUNIFESP
38/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Problemas Encontrados
Biblioteca para uso do Thrift -> Soluo: uso do Hector; ca Melhoria no uso do Hector; Colocando o Cassandra como background ele pra de responder; a Pouca documentao sobre o Cassandra. ca
ICTUNIFESP
39/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Problemas Encontrados
Biblioteca para uso do Thrift -> Soluo: uso do Hector; ca Melhoria no uso do Hector; Colocando o Cassandra como background ele pra de responder; a Pouca documentao sobre o Cassandra. ca
ICTUNIFESP
39/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Problemas Encontrados
Biblioteca para uso do Thrift -> Soluo: uso do Hector; ca Melhoria no uso do Hector; Colocando o Cassandra como background ele pra de responder; a Pouca documentao sobre o Cassandra. ca
ICTUNIFESP
39/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Problemas Encontrados
Biblioteca para uso do Thrift -> Soluo: uso do Hector; ca Melhoria no uso do Hector; Colocando o Cassandra como background ele pra de responder; a Pouca documentao sobre o Cassandra. ca
ICTUNIFESP
39/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Problemas Encontrados
Nenhuma instancia do cluster responde quando um dos clientes no a est em execuo; a ca Melhorias no pool de conexo do hector. a
ICTUNIFESP
40/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Problemas Encontrados
Nenhuma instancia do cluster responde quando um dos clientes no a est em execuo; a ca Melhorias no pool de conexo do hector. a
ICTUNIFESP
40/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Concluso a
Banco de dados do tipo NoSQL um assunto muito amplo e ainda h e a muito mais a ser explorado, os tpicos abordados nesta apresentao so o ca a uma pequena parte de uma diferente forma de se pensar na construo ca de sistemas.
ICTUNIFESP
41/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Dvidas u
ICTUNIFESP
42/43
NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Concluso a
Referencias
http://cassandra.apache.org/ http://wiki.apache.org/cassandra/CassandraHardware http://wiki.apache.org/cassandra/ClientOptions http://wiki.apache.org/cassandra/CassandraLimitations http://wiki.apache.org/cassandra/PerformanceTuning http://github.com/pycassa/pycassa http://github.com/driftx/Telephus http://aquiles.codeplex.com/ http://github.com/rantav/hector http://github.com/fauna/cassandra http://github.com/s7/scale7-pelops http://demoiselle.sf.net/component/demoiselle-cassandra/ https://github.com/kallaspriit/Cassandra- PHP-Client-Library/
ICTUNIFESP 43/43