No post anterior eu expliquei sobre o funcionamento do Cassandra. Agora vamos colocar a mao na massa e vamos configurar o nosso servidor Debian para criar aplicacoes em PHP que interajam com o Cassandra.O PHP precisa de uma biblioteca chamada Thrift para se comunicar com o Cassandra. Temos duas formas de trabalhar com ela, a primeira e usando a biblioteca dentro do diretorio da nossa aplicacao e a segunda e compilar um modulo nativo para o PHP. O modulo nativo proporciona muito mais velocidade. Vamos mostrar abaixo como configurar as duas formas.1- Configuracao do servidorPassos para instalar o Thrift no servidor sem o modulo nativo do PHP:- apt-get install libboost-dev automake libtool flex bison pkg-config g++- wget http://ftp.unicamp.br/pub/apache/incubator/thrift/0.2.0-incubating/thrift-0.2.0-incubating.tar.gz- tar -xzvf thrift-0.2.0-incubating.tar.gz- cd thrift-0.2.0- ./configure- make- ./compiler/cpp/thrift -gen php ../PATH-TO-CASSANDRA/interface/cassandra.thrift- mkdir -p /usr/share/php5/Thrift- cp -R gen-php/ /usr/share/php5/Thrift/packages/- cp -R lib/php/src/* /usr/share/5php/Thrift/Passos para instalar o modulo nativo do PHP:- cd PATH-TO-THRIFT/lib/php/src/ext/thrift_protocol- apt-get install php5-dev- phpize- ./configure --enable-thrift_protocol- make- cp modules/thrift_protocol.so /usr/lib/php5/20060613/(A pasta lib do PHP vai depender da versao instalada no seu servidor)- vi /etc/php5/cli/conf.d/thrift_protocol.iniextension=thrift_protocol.so- Verificar instalacao:php -i | grep -v "PWD" | grep "thrift_protocol"- /etc/init.d/apache2 restart 2- Inserindo dados no Cassandra com o PHPAgora que ja temos o servidor configurado e pronto para funcionar, vamos fazer alguns testes inserindo dados no cassandra. Vamos usar como base o exemplo do post anterior.Re-lembrando os dados:ColumnFamily: Usuarios['junior']['login'] = ['junior']['junior']['nome'] = ['Nivaldo']['junior']['sobrenome'] = ['Montenegro']['junior']['email'] = ['nivaldomjunior@gmail.com']['usuario2']['login'] = ['usuario2']['usuario2']['nome'] = ['Fulano']['usuario2']['sobrenome'] = ['de tal']['usuario2']['email'] = ['fulano@gmail.com']['usuario2']['fone'] = ['(83)1234-1234'] SuperColumn: Agenda['junior']['amigo1']['nome'] = ['Amigo 1']['junior']['amigo1']['telefone'] = ['(88)1234-1234']['junior']['amigo2']['nome'] = ['Amigo 2']['junior']['amigo2']['telefone'] = ['(99)4312-4312']['usuario2']['amigox']['nome'] = ['amigox']['usuario2']['amigox']['telefone'] = ['(77)9987-0987']['usuario2']['amigoy']['nome'] = ['Amigo y']['usuario2']['amigoy']['email'] = ['fulano@gmail.com']['usuario2']['amigoy']['fone'] = ['(83)1234-1234']O codigo do arquivo php esta em um arquivo de imagem, mas vou disponibilizar posteriormente o arquivo php para download.Codigo do arquivo criar.php:Clique aqui para baixar o arquivo criar.php.3- Consultando dados no CassandraAs consultas sao realizadas em cima dos indices, ou seja, nao da para consultarmos diretamente os valores das chaves como estamos acostumados a fazer em um banco de dados SQL.Por exemplo, vamos consulta os dados da Agenda do usuario junior:4- Mais informacoesBom, este foi um exemplo rapido sobre como podemos usar o Cassandra com PHP. Espero que sirva como base para que voce inicie no desenvolvimento com PHP e Cassandra.Alguns links de referencia:- Using Cassandra with PHP- ThriftExamples- Site do projeto CassandraAte a proxima! :) No post passado eu falei um pouco sobre o VisualVM mas nao falei sobre como fazer o dump do heap do Java em uma maquina monitorada remotamente.Nao da para fazer isso usando o VisualVM. Voce precisa acessar a maquina remota e executar o seguinte comando:jmap -F -dump:live,format=b,file=dump-heap-java.hprof PIDPID e o numero do processo do Java. Para saber o numero do processo do Java no Linux, execute o seguinte comando:ps ax|grep javaEste comando demora um pouco para ser executado, tenha paciencia, pois vai depender do seu Heap Size atual. Ele vai gerar um arquivo do tamanho do heap atual. No meu caso, gerou um arquivo de 778 Mb.Agora que ja temos o arquivo de dump, e necessario copia-lo para a maquina aonde tenha o VisualVM rodando.Carregue o arquivo no VisualVM usando o