Gerencie multiplos bancos de dados através do Spring Boot. Segue vídeo demonstrativo utilizando o banco Postgres:
https://www.youtube.com/watch?v=SbbVKxIrb88
A implantação da ferramenta foi por meio de servidor virtual privado, VPS, existindo aumento significativo no uso de memória, chegando a aumentar por volta de 1,5GB a cada cliente ou instância nova. A utilização deste projeto veio então sanar pontualmente esse problema que através de um código hash específico para cada cliente na requisição foi possível selecionar a base de dados desejada, utilizando ao invés de 1,5GB para cada cliente, uma média de 2GB para 8 clientes em uma só instância.
A ferramenta criada por este projeto foi um B2B (Bussiness to Bussiness) que resumidamente disponibiliza entre pessoas jurídicas o comércio eletrônico em consideráveis quantidades, envolvendo: tabela de preços, filiais, políticas comerciais e grade de produto, como por exemplo: cor, estampa, tamanho.
gcc.databases - Bancos de dados separados por vírgula
gcc.hostdb - Host dos bancos de dados
gcc.userdb - User dos bancos de dados
gcc.passdb - Password dos bancos de dados
gcc.entities - Pacotes de entidades para ser escaneado pelo entity manager separados por vírgula
gcc.hash.* - Hash de acesso através da requisição para cada do banco de dados
gcc.pool.initial-size - Número de conexões serão estabilizadas quando o pool de conexão for iniciado
gcc.pool.max-active - Número máximo de conexões ativas que podem ser alocadas no pool ao mesmo tempo
gcc.pool.max-idle - Número máximo de conexões que devem ser mantidas no pool ocioso
- O parêmetro header para as requisições é hash-multipledb;
- Note que este hash irá trafegar pela intenet, então evite caracteres especiais;
- Para testar crie os bancos de dados antes de rodar a aplicação;
- Criar DTO, PrincipalView, para facilitar o controller e demais testes;
- Implementar testes em MultipleDbApplicationTests, para validar o retorno do wrapper PrincipalView;
- Melhorar integração contínua pelo CircleCi, informar imagem de banco de dados para realizar os testes;