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.
Atenção! O CouchDB faz parte do Hyperledger Fabric e é um componente sensível na solução. Desta forma, foram realizadas algumas configurações para limitar escritas no banco, evitando qualquer configuração que possa indisponibilizar o peer.
Consultas no CouchDB
As consultas são realizadas via API do próprio CouchDB (Referência: https://docs.couchdb.org/en/stable/api/index.html)
Exemplo para listagem das bases contratadas:
curl -s -k https://$(sudo cat /etc/hyperledger/fabric/peer/credencial_couchdb)@localhost:6984/_all_dbs | jq . | grep bcadastros
Exemplo de consulta de um registro da base CAEPF:
curl -s -k https://$(cat /etc/hyperledger/fabric/peer/credencial_couchdb)@localhost:6984/chcaepf_bcadastros/xxxxxxxxxxxxxx | jq .
Retorno da consulta:
{
"_id": "xxxxxxxxxxxxxx",
"bairro": "bbbbbbb",
"cei": "yyyyyyy",
"cep": "nnnnnnnnn",
"cnaes": [
{
"codSubclasse": "mmmmmmmm",
"nomeSubclasse": "aaaaaaaaaa"
}
],
"codAtividade": "1",
"codMotivoSituacao": "8",
"codMunicipio": "xxxxx",
"codOrgaoCpf": "",
.....
}
Dicas
-
Dê sempre preferência a pesquisa pelo atributo "_id", pois o mesmo já se encontra indexado e a resposta por este critério sempre será mais rápida do que por qualquer outro, independentemente da base;
-
Dependendo dos atributos selecionados, para pesquisa por critério, a consulta pode vir a não responder! Nesse caso, é indicada a criação de índices para o(s) atributo(s) desejados;
Índices no CouchDB
Atenção! A criação dos índices é um processo demorado que pode demorar várias horas, a depender do tamanho da base e da capacidade de processamento do servidor e escrita em disco. Além disso, a criação de índices afeta diretamente no consumo de armazenamento. Portanto, para a criação de índices e consultas sugerimos que seja feita uma réplica da base para outra instância de CouchDB ou outro banco relacional.
Referência: https://docs.couchdb.org/en/stable/api/database/find.html#db-index