Dias atrás apresentei o serviço S3 da Amazon e como ele serve como uma boa ferramenta de backup usando o S3Fox.
Agora vou apresentar como brincar com o SimpleDB da Amazon que nada mais é que um banco de dados distribuído rodando na Internet.
Como faz muito tempo que não brinco com php, vou usar o php com uma biblioteca de acesso aos serviços da Amazon chamado de Tarzan.
Feito o download, basta configurar no diretório de trabalho suas permissões de acesso ao serviço da Amazon (variáveis AWS_KEY e AWS_SECRET_KEY, as mesmas usadas para o S3Fox). Não esquecer que o serviço SimpleDB precisa ser assinado na Amazon antes de poder usá-lo.
Teste simples para ver os domínios (equivalentes a tabelas no caso de SQL):
O resultado no caso de não existir nenhum domínio seria:$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB();print_r($sdb->list_domains()->body->ListDomainsResult);'
SimpleXMLElement ObjectSeguindo as documentações do SimpleDB do Tarzan, toda a API do SimpleDB está disponível. Vamos criar um domínio novo:
(
)
O resultado do último comando mostra:$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB();print_r($sdb->create_domain("dominio1"));'
$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB(); print_r($sdb->list_domains()->body->ListDomainsResult);'
SimpleXMLElement ObjectLegal! O dominio1 apareceu. Colocando dados de Santa Catarina, São Paulo e Ceará:
(
[DomainName] => dominio1
)
$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB();print_r($sdb->put_attributes("dominio1", "Santa Catarina", Array("capital"=>"Florianopolis", "populacao"=>"0005866568")));'
$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB();print_r($sdb->put_attributes("dominio1", "Sao Paulo",Array("capital"=>"Sao Paulo","populacao"=>"0040442795")));'
Aí, com uma pesquisa simples do tipo SQL dá para procurar estados com mais de 10 milhões de habitantes:$ php -r 'require_once "tarzan.class.php"; $sdb = new AmazonSDB(); print_r($sdb->put_attributes("dominio1","Ceara", Array("capital"=>"Fortaleza","populacao"=>"0008097276")));'
O que reporta o estado esperado e sua população:$ php -r 'require_once "tarzan.class.php"; $sdb = new AmazonSDB();print_r($sdb->select("select populacao from dominio1 where populacao>\"0010000000\"")->body->SelectResult);
SimpleXMLElement Object
(
[Item] => SimpleXMLElement Object
(
[Name] => Sao Paulo
[Attribute] => SimpleXMLElement Object
(
[Name] => populacao
[Value] => 0040442795
)
)
)