.. _ConfiguracaoDB:
Configuração do banco de dados
================================
O `dgipy` trabalha utilizando o MongoDB 3.4 para armazenar todas as informações do DGI/INPE e tornar mais fácil e rápido a busca de imagens. Assim para a utilização do `dgipy` será necessário configurar o MongoDB. Esta seção apresenta as formas com que as configurações de acesso devem ser apresentadas durante o uso da aplicação.
Caso esteja com dúvida sobre a instalação do banco de dados utilizado pelo dgipy (MongoDB), consulte as :ref:`InstalacaoMongoDB`
Sobre a utilização
---------------------
Nesta seção será apresentado como as informações de acesso devem ser utilizadas nas classes que necessitam deste tipo de informação durante sua instância. A lista abaixo indica cada uma das classes e funções que utilizam as informações de acesso ao banco.
- dgi.acesso.busca.BuscaDeImagemNoCatalogo;
- dgi.acesso.busca.BuscaImagensJaBaixadas;
- dgi.acesso.facilidade.FacilitaDGI;
- dgi.catalogo.catalogo.CatalogoDGI;
- dgi.servicos.linux.servico_dgi_linux;
- dgi.servicos.windows.servico_dgi_windows.
Estas classes e funções durante sua utilização podem receber o atributo `db_props`, que representa um dicionário com as informações de acesso ao banco. Vamos a uma descrição de cada uma das chaves deste dicionário.
.. code:: python
db_props = {
"host": "Endereço IP do banco de dados",
"porta": "Porta do banco de dados",
"usuario": "Usuário para utilizar o banco (Opcional),
"senha": "Senha para utilizar o banco (Opcional)"
}
A tabela abaixo apresenta os tipos e necessidades de cada uma das chaves
+---------+---------+-------------+
| Chave | Tipo | Obrigatório |
+---------+---------+-------------+
| host | String | Sim |
+---------+---------+-------------+
| porta | Integer | Sim |
+---------+---------+-------------+
| usuario | String | Não |
+---------+---------+-------------+
| senha | String | Não |
+---------+---------+-------------+
Veja que, para as chaves `usuario` e `senha` não há obrigatoriedade, assim, eles deve ser utilizados apenas quando o banco possui alguma autenticação.
Como utilizar
----------------
Bem agora que entendemos como são as configurações de acesso ao banco de dados, vejamos onde estas configurações são utilizadas.
Na subseção foram apresentadas as classes e funções que consomem as configurações, desta forma é necessário apenas no momento da utilização especificar as configurações, veja no exemplo abaixo, que utiliza a classe **FacilitaDGI**.
.. code:: python
from dgi.acesso import FacilitaDGI
facilita_dgi = FacilitaDGI("SEU_USUARIO_DO_CATALOGO", "SUA_SENHA_DO_CATALOGO", db_props= {
"host": "192.168.0.1",
"porta": 21017
})
E este mesmo padrão deve ser utilizada nas demais classes. Nas funções a utilização é a mesma, veja o exemplo utilizando a função do serviço do Windows.
.. code:: python
from dgi.servicos.windows import servico_dgi_windows
servico_dgi_windows(db_props = {
"host": "10.20.30.2",
"porta": 21027
})
.. NOTE::
Caso você tenha feito uma instalação padrão do MongoDB 3.4 em sua máquina, não é necessário especificar o `db_props` em nenhum momento do código
Criando estrutura do banco
---------------------------
Bem agora que já sabemos como realizar conexões com o banco de dados, teremos de importar um *script* de configuração da estrutura do banco de dados.
Este *script* está dentro do diretório `db`, existindo a verão para Windows (bat) e para Linux (Shell). Basta acessar o diretório e executar o *script*.
.. NOTE::
Caso haja configurações de endereço ou mesmo de autenticação, você terá de editar o *script* de configuração de banco de dados.
.. TIP::
Não esqueça de executar o *script* de configuração através do *cmd* ou terminal, de acordo com seu sistema operacional.
Estrutura do banco de dados
-----------------------------
Para entender melhor como o banco de dados está estruturado, veja as tabelas abaixo, nelas estão sendo representados os elementos das duas coleções disponíveis no banco de dados
- Coleção `catalogo`
Esta é a coleção que contém o índice de imagens do DGI recuperadas pelo `dgipy`.
+-------------------------------+---------+
| Nome do campo | Tipo |
+-------------------------------+---------+
| nome | String |
+-------------------------------+---------+
| quicklook_url | String |
+-------------------------------+---------+
| satelite | String |
+-------------------------------+---------+
| instrumento | String |
+-------------------------------+---------+
| orbita | Integer |
+-------------------------------+---------+
| ponto | Integer |
+-------------------------------+---------+
| data | ISODate |
+-------------------------------+---------+
| quantidade_nuvens.quadrante_1 | Integer |
+-------------------------------+---------+
| quantidade_nuvens.quadrante_2 | Integer |
+-------------------------------+---------+
| quantidade_nuvens.quadrante_3 | Integer |
+-------------------------------+---------+
| quantidade_nuvens.quadrante_4 | Integer |
+-------------------------------+---------+
| pagina | Integer |
+-------------------------------+---------+
| centro_da_cena.coordinates | List |
+-------------------------------+---------+
| poligono_da_cena | List |
+-------------------------------+---------+
| local | String |
+-------------------------------+---------+
- Coleção `imagens_adquiridas`
Coleção com as informações das imagens já baixadas na máquina do usuário
+------------------------+---------+
| Nome do campo | Tipo |
+------------------------+---------+
| satelite | String |
+------------------------+---------+
| instrumento | String |
+------------------------+---------+
| data | ISODate |
+------------------------+---------+
| orbita | Integer |
+------------------------+---------+
| ponto | Integer |
+------------------------+---------+
| local | String |
+------------------------+---------+
| data_insercao_no_banco | String |
+------------------------+---------+
.. _InstalacaoMongoDB:
Notas para instalação do MongoDB 3.4
-------------------------------------
Esta seção apresenta as etapas para a instalação do MongoDB nos sistemas operacionais Windows e Ubuntu 18.04.
Caso seu sistema operacional não esteja aqui, consulte o `manual do MongoDB `_.
* Instalação no Ubuntu 18.04
Para realizar a instalação do MongoDB 3.4 no Ubuntu 18.04, basta seguir os passos descritos abaixo.
Primeiro faça a atualização dos pacotes e instale o `gnupg`.
.. code:: shell
sudo apt update -y && sudo apt install gnupg -y
Feito isto, registre a chave para acesso ao repositório de pacotes do MongoDB.
.. code:: shell
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
Com a chave registrada, adicione o repositório do MongoDB em sua máquina
.. code:: shell
sudo echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Por fim, faça a atualização dos pacotes e a instalação do MongoDB.
.. code:: shell
sudo apt update && sudo apt install mongodb-org -y
.. note::
Com o MongoDB instalado é necessário fazer sua execução, para tal utilize um dos seguintes comandos
- service mongod start
- mongod
Lembre-se que é necessário o serviço do MongoDB iniciado para fazer sua utilização com o dgipy.
* Instalação no Windows
Para realizar a instalação do MongoDB 3.4 no Windows, basta seguir os passos abaixo.
.. note::
A instação apresentadas abaixo é feita no Windows 10, porém também são válidas para as versões anteriores.
O primeiro passo para a instalação do MongoDB é fazer seu *download*, para isso, acesse a `página de download do MongoDB `_
.. image:: res/install_mongo_windows_1.gif
:alt: Instação Windows Mongo (1)
Com o *download* realizado, faça a execução do arquivo baixado e siga os passo para a instalação.
.. image:: res/install_mongo_windows_2.gif
:alt: Instação Windows Mongo (2)
Feito a instalação é necessário configurar os executáveis do MongoDB. Para isso, acesse o diretório **bin** que está no diretório onde o MongoDB foi instalado, uma vez acessado o diretório, copie seu caminho e faça sua inserção na variável de ambiente **path**.
.. image:: res/install_mongo_windows_3.gif
:alt: Instação Windows Mongo (3)
.. note::
No exemplo acima, o caminho completo é **C:\\Program Files\\MongoDB\\Server\\3.4\\bin**, caso você tenha feito a instalação padrão, provavelmente este também será o seu caminho para os binários do MongoDB.
Agora, antes de executar o MongoDB, vá até o disco **C:\\** e crie o diretório **data**, dentro deste crie o diretório **db**, gerando a seguinte estrutura **C:\\data\\db**.
Pronto! agora o MongoDB está pronto para ser executado. Vá até o CMD e execute o comando **mongod**.
.. image:: res/install_mongo_windows_4.gif
:alt: Instação Windows Mongo (4)
.. tip::
Tanto no Windows quanto no Linux é necessário manter o **mongod** sendo executado para os trabalhos com o banco de dados.