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 10 posts

Hector Vido Silva atua como Consultor de Infraestrutura em Software Livre, cursando Engenharia da Computação, formado em Análise e Desenvolvimento de Sistemas com MBA em Cibersegurança. Atua desde 2006 com desenvolvimento, implantação, arquitetura e resolução de problemas em ambientes envolvendo diferentes plataformas. Na 4Linux também ministra os cursos de desenvolvimento, banco de dados e infraestrutura para ambientes ágeis e automatizados com forte utilização de contêineres. Sim, é um generalista. Possuí certificações CKA, Openshift, LPIC-2, LPI DevOps, GCP Engineer, MongoDB, Blockchain e ZCE.

View all posts by this author →

Você pode gostar também

Banco de Dados

Monitorando MongoDB com Prometheus e Grafana

O MongoDB é uma das soluções de NoSQL mais utilizadas na atualidade. Ele é um tipo de banco baseado em documentos assim como o AWS DocumentDB, Couchbase Server e Apache

Desenvolvimento

OWASP, SQL Injection e consultas parametrizadas

Neste artigo, vamos entender o motivo pelo qual as injeções de dados (SQL Injections) estão no Top 10 da OWASP e o porquê dessa classe de vulnerabilidades precisar de atenção

Banco de Dados

Vantagens de um Banco de Dados NoSQL, MongoDB

NoSQL refere-se a um banco de dados não relacional. Um banco de dados relacional é um formato de banco de dados rigidamente estruturado, baseado em tabelas, como o MySQL ou o Oracle. Os bancos