O protótipo tem por fim gerenciar bancos de dados CouchDB, bem como criar o controle para acesso por usuário sobre estes bancos, além de suprir algumas deficiências encontradas em sua interface de administração original, o Futon.
Preparação do ambiente
Para a preparação do ambiente foram utilizados os seguintes equipamentos:
- 1 Computador Pentium 4, 3.4 ,com sistema operacional Ubuntu 9.10;
- 1 Notebook Acer Aspire 5920 Core 2 Duo, com sistema operacional Windows Xp Pro.
Também foram usados os seguintes softwares:
- Software Geany 0.18, este usado para programação PHP, Java Script e edição de arquivos;
- Software Xampp 1.7.3, neste software foram utilizados as ferramentas PhpMyAdmin e o Servidor Apache;
- Software DBDesigner, este usado para modelagem relacional do protótipo;
- Sofware Apache CouchDB 0.10, este instalado no microcomputador Ubuntu 9.10 com objetivos de testes para o protótipo da interface.
Pré-requisitos para o funcionamento do protótipo
É necessário observar alguns itens para o pleno funcionamento da interface, antes de usá-la. São eles:
- O firewall do servidor deve estar desativado, ou deve conter regras para liberação de leitura e escrita para os clientes;
- O servidor deve conter o Apache CouchDB 0.10 ou superior instalado para funcionamento, uma vez que o protótipo foi construído para uso nestas versões;
- É necessário que o bind_adress do servidor CouchDB esteja setado com o ip "0.0.0.0", isso fará com que o banco de dados libere acessos a conexões externas;
- É necessário que as duas pontas estejam conectadas minimamente a uma rede;
- A porta deve estar configurada como 5984/tcp no momento de cadastros de novos bancos.
Interface
Abaixo uma das telas correspondentes a interface produzida.
Figura 1: Tela para adicionar documento e atributos
Nesta Figura 1, o administrador pode cadastrar um documento passando um nome para o documento, um atributo e um valor; as validações são feitas com javascript, codificação pode ser vista na continuidade.
$curl = curl_init();//Inicia a seção
$aux_conect = "http://".$ip_v.":".$porta_v."/".$bde_v."/".$documento["_id"];
// Remove a chave _id do documento, necessário quando se vai adicionar mais um //atributo ao documento, caso isso não seja feito o banco retorna um erro de //conflito
$documento["_id"] = false;
$documento = array_filter($documento);
curl_setopt($curl, CURLOPT_URL, $url);
//Define o tipo do conteúdo das mensagens a serem criadas, no caso text/json
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: text/json"));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//Definindo a entrada dos dados ao documento
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($documento));
$retorno = curl_exec($curl);
curl_close($curl);
$retorno = json_decode($retorno);
//Quando um documento é criado com sucesso ele retorno a mensagem {ok ,true}
//sendo assim faço a verificação abaixo
if(isset($retorno->ok) && $retorno->ok == "true") {
//retorna menssagem
}
O Quadro 1 acima corresponde à codificação da criação de documentos e atributos.
Vantagens da interface produzida
Abaixo algumas vantagens correspondentes a nova interface produzida:
- Gerenciamento multiplataforma;
- Gerenciamento distribuído;
- Controle de acesso;
- Segurança;
- Flexibilidade;
- Controle de usuários;
- Controle sob os dados com maior facilidade;
- Controle de níveis de acesso sobre os bancos aos usuários;
- Com adaptações no código pode ser usada para gerenciar outros bancos de dados SGBD NoSQL.