Ir para o conteúdo

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