Quem sou eu

quarta-feira, 28 de julho de 2010

Cassandra + PHP

No post anterior eu expliquei sobre o funcionamento do Cassandra. Agora vamos colocar a mão na massa e vamos configurar o nosso servidor Debian para criar aplicações em PHP que interajam com o Cassandra.

O PHP precisa de uma biblioteca chamada Thrift para se comu

nicar com o Cassandra. Temos duas formas de trabalhar com ela, a primeira é usando a biblioteca dentro do diretório da nossa aplicação e a segunda é compilar um módulo nativo para o PHP. O módulo nativo proporciona muito mais velocidade. Vamos mostrar abaixo como configurar as duas formas.

1- Configuração do servidor

Passos para instalar o Thrift no servidor sem o módulo 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 módulo 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 versão instalada no seu servidor)- vi /etc/php5/cli/conf.d/thrift_protocol.ini
extension=thrift_protocol.so
- Verificar instalação:
php -i | grep -v "PWD" | grep "thrift_protocol"
- /etc/init.d/apache2 restart

2- Inserindo dados no Cassandra com o PHP

Agora que já 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 código do arquivo php está em um arquivo de imagem, mas vou disponibilizar posteriormente o arquivo php para download.

Código do arquivo criar.php:

Clique aqui para baixar o arquivo criar.php.

3- Consultando dados no Cassandra

As consultas são realizadas em cima dos índices, ou seja, não dá 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 usuário junior:

4- Mais informações

Bom, este foi um exemplo rápido sobre como podemos usar o Cassandra com PHP. Espero que sirva como base para que você inicie no desenvolvimento com PHP e Cassandra.

Alguns links de referência:

- Using Cassandra with PHP

- ThriftExamples

- Site do projeto Cassandra

Até a próxima! :)