Introdução ao CouchDB

Introdução ao CouchDB

CouchDB é um banco de dados NoSQL orientado a documentos. Utiliza JSON como formato de dados e JavaScript como linguagem de consulta. Diferente da maioria dos outros bancos de dados, seu conteúdo é acessado e modificado através de uma API REST.

Visão Geral

O CouchDB pode ser utilizado como um banco de único node, mas também pode ser facilmente escalado para um cluster sem modificações em sua API.

O objetivo deste post não é entrar em detalhes a respeito da estrutura do CouchDB, mas sim, mostrar a sua facilidade de uso.

Um dos grandes casos de uso do CouchDB vem da recente tecnologia de blockchain chamada Hyperledger Fabric.

Instalando CouchDB pelo Docker

O CouchDB tem uma pequena imagem, facilmente instalada através do Docker:

docker run -dti --name couchdb -p 5984:5984 couchdb

É possível verificar se o banco está funcionando acessando o endereço local do seu computador na porta 5984: http://127.0.0.1:5984/.

Acessando a interface gráfica

Uma das características mais interessantes do CouchDB para quem quer conhecê-lo é a sua interface web nativa chamada de Project Fauxton, ela pode ser acessada através do link http://127.0.0.1:5984/_utils/:

Para criar uma nova base de dados, clique em Create Database na parte superior da tela, bastante apenas digitar o nome da base:

Clique em Create Document para poder escrever seu primeiro documento dentro do CouchDB:

Essa é a tela de cadastro de documentos, ou registros. É importante ressaltar que o _id é o campo único, identificador, de seu registro. Assim como o MongoDB, caso esse valor não seja informado, ou substituído, ele será criado automaticamente.

O documento criado foi baseado neste JSON:

{
"_id": "5aefc8514d0d6321e60c5a1447000103",
"curso": "Blockchain",
"periodo": "Manhã",
"dias": 10
}

Vamos cadastrar mais três registros, mas vamos fazer isso pela API do próprio CouchDB utilizando o binário curl. Você pode utilizar qualquer cliente REST como algum plugin para o seu navegador ou mesmo o Postman. Para interagir com a base de dados em questão, basta adicionar o nome da mesma ao final da URL e dizer que o tipo de dado enviado é application/json:

curl 127.0.0.1:5984/fourlinux -H 'Content-Type: application/json' -d '{"curso": "PHP", "periodo": "Noturno", "dias": 20}'
curl 127.0.0.1:5984/fourlinux -H 'Content-Type: application/json' -d '{"curso": "Linux", "periodo": "Sábado", "dias": 15}'
curl 127.0.0.1:5984/fourlinux -H 'Content-Type: application/json' -d '{"curso": "MariaDB", "periodo": "Domingo", "dias": 8}'

O parâmetro -H seta um novo cabeçalho, e o parâmetro -d define o corpo com os dados que serão enviados. Ao adicionar o parâmetro -d, o curl assume implicitamente o uso de POST. Caso você queira, também pode especificar o tipo de requisição com -X POST.

Podemos visualizar os dados de várias formas no CouchDB, uma delas é selecionar registro por registro através do curl, colocando o ID do registro ao final da url:

curl 127.0.0.1:5984/fourlinux/5aefc8514d0d6321e60c5a1447000103

Mas a forma mais cômoda é utilizar uma das várias visualizações do painel do Project Fauxton:

No menu principal, clicando no símbolo do banco de dados, temos uma opção chamada Run a Query With Mango, uma Mango Query é uma query capaz de filtrar os dados e limitar seu retorno, podemos fazer um paralelo entro o WHERE e o LIMIT da linguagem SQL.

Vamos fazer uma simples query para filtrar os registros em que os dias sejam maior que 10. Essa query precisa obrigatoriamente de uma propriedade dentro do JSON chamada selector. Dentro dela existe a propriedade pela qual você deseja filtrar. Essa propriedade pode ser uma {“chave” : “valor”} ou um objeto que contém filtros mais avançados, identificados pelo caractere de dólar ($):

{
   "selector": {
      "dias": {
         "$gt": 10
      }
   }
}

Para finalizar esta pequena introdução, vamos fazer a mesma query utilizando o curl no endereço terminado com _find:

curl http://127.0.0.1:5984/fourlinux/_find -H 'Content-Type: application/json' -d '{"selector": {"dias": {"$gt": 10}}}'

Com isso, finalizo esta pequena introdução ao CouchDB. Graças a API REST, você pode utilizar a sua linguagem de programação favorita para interagir com o banco. Poderia por exemplo, utilizar o requests do Python, o Guzzle do PHP ou até mesmo o curl junto do shell script, porque não?

Para saber mais sobre CouchDB você pode acessar a documentação oficial: http://docs.couchdb.org/en/stable/.

 

CURSOSCONSULTORIA    CONTATO

Anterior Como restaurar a senha de root do MySQL
Próxima IBM compra a RedHat por US$34 bilhões e o que isso muda na vida do SysAdmin?

About author

Hector Silva
Hector Silva 2 posts

Hector Vido Silva atua como Analista de Infraestrutura em Software Livre, formado em Análise e Desenvolvimento de Sistemas pela Cruzeiro do Sul. Possuí mais de 10 anos de experiência em desenvolvimento de sistemas web, principalmente com PHP e toda a infraestrutura ao redor, incluindo sistemas mobile. Atualmente ministra os cursos voltados a infraestrutura Linux, PHP e Python. Possuí certificação ZCE e LPIC-2.

View all posts by this author →

Você pode gostar também

Banco de Dados

Instalação do MySQL 8 em Debian e CentOS

Ao tentar instalar o MySQL – o banco de dados open-source mais popular do mundo – você pode ser surpreendido no final do processo ao obter o MariaDB. Este fork

Banco de Dados

Como restaurar a senha de root do MySQL

Em muitas situações é necessário resgatar a senha para o usuário root no banco de dados MySQL. Entre elas, a mais comum é a necessidade de prestar manutenção a um

Banco de Dados

Alta Disponibilidade do MySQL com InnoDB Cluster

Alta disponibilidade é um recurso que os bancos de dados  —  sejam eles relacionais ou não (NoSQL) —  devem possuir para serem respeitados no mercado. A topologia master-slave já é