Uma aplicação simples e intuitiva para transferir dados entre bancos.
Python 3.10
psycopg2
cx-Oracle
prometheus-client
A estrutura do projeto foi separada em duas partes: Infraestrutura e Aplicação para segmentar melhor o projeto, facilitando modificações futuras.
O código possui um sistema de monitoramento com Prometheus vinculado ao Grafana, ambos sobem no docker-compose-example.
OBS: A raspagem do prometheus está com um tempo bem baixo por conta do alto desempenho de transição dos dados nos bancos de exemplo...
Existe apenas um pré requisito para o projeto:
- Possui python 3.10 na maquina
OBS: É possivel subir o container com a imagem do python...
Subir com container
- Para subir o compose de exemplo basta digitar no terminal
make compose-example - Aguarde pacificamente...
OBS: Caso deseje criar um proprio compose basta criar no mesmo diretorio e mudar o nome do arquivo no makefile
Subir com venv
- Crie uma venv usando o comando
make create-venv; - Entre na venv usando o comando
source .venv/bin/activate; - Instale as dependencias usando o comando
make install; - Copie o arquivo .env.example e remova o
.example; - Preencha suas variáveis de ambiente;
- Rode aplicação usando o comando
make run;
Cada módulo é referente a um banco de dados, você deve definir a ordem de qual módulo será o source e final usando as variáveis de ambiente.
Para realizar a configuração de um novo módulo, basta seguir estes passos.
- Crie uma pasta com o nome do módulo dentro de modules.
- Crie uma pasta com o nome composto por um índice numérico e o nome da tabela,
ex: 1-tabela_exemplo - Crie um arquivo chamado
mapper.py
table_map = {
"table": "dados_para_receber_testes",
"schema": "public",
"ref": "id",
"limit": 100
}OBS: as chaves de ref e limit sao obrigatorias, porem caso sua tabela nao possua nenhum index de referencia ou deseje trazer todos os dados sem limite para a query basta deixar ambos sem dados seguindo o exemplo da tabela envio_sem_ref;
- Opcionalmente, é possível adicionar um tratamento para os dados lidos do módulo
source, basta adicionar um arquivoprocessor.pyno mesmo nível do mapper da tabela seguindo o exemplo da tabela dados_para_testes. As únicas regras para a função são manter o nomeprocess, RECEBER e DEVOLVER uma lista de tuplas.
Foi criada uma base para testar a aplicação localmente, você pode seguir os seguintes passos para rodar os exemplos:
- Copie o arquivo env.example e renomeio para .env mantendo os mesmos dados;
- Rode o seguinte comando no terminal
make compose-example; - Certifique-se de que os bancos subiram;
- Rode o seguinte comando no terminal
make migration-example; - Certifique-se de que as tabelas foram criadas e populadas;
- Acesse a URL
http://localhost:3000/logine use o e-mailadmine senhaadminpara o primeiro acesso. - Vincular o prometheus no grafana, acesse o módulo de
Connectionsdo grafana e adicione um novo Data Source; - Procure pelo core do Prometheus e configure a seguinte URL
http://prometheus:9090 - Acesse o módulo de
Dashboards, crie um dashboard usando este molde json - Para finalizar, inicie novamente o contêiner do sync-database que está caido no compose;

