Descubra o poder do CouchDB: o banco de dados NoSQL orientado a documentos

Descubra o poder do CouchDB: o banco de dados NoSQL orientado a documentos

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 Recuperar a Senha do Root no MySQL: Guia Passo a Passo
Próxima Descubra as oportunidades com as tecnologias de nuvem da RedHat

About author

Hector Silva
Hector Silva 11 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

Guia passo a passo para instalar o MySQL em diferentes sistemas operacionais

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

Guia Prático: Instalação e Configuração do pgAdmin4 via Docker

O pgAdmin4 é a plataforma de administração e desenvolvimento open source mais popular para PostgreSQL. Neste post, vamos instalar e configurar esta ferramenta via Docker. DOCKER Compartilhe este post: Share

Banco de Dados

Descubra o TimescaleDB: O banco de dados SQL para séries temporais

Hoje vamos falar um pouco sobre o TimescaleDB … Mas afinal, o que seria esse tal de TimescaleDB? Respondendo a pergunta acima, TimescaleDB (TSDB) é um banco de dados de