Esse PR consiste em mudanças pontuais na forma como utilizamos o PostgreSQL para otimizar o tempo levado pelo enriquecimento dos JSON. Cada commit tem mais detalhes nas suas mensagens e talvez o review seja mais simples commit por commit:
a1ec2806b91e731336987570292f28a1934ad47a: altera os tipos das colunas do PostgreSQL:
Transforma os índices (id e base) em números inteiros (isso deve melhorar a performance quando precisamos selecionar as empresas)
Transforma campo JSON de json para jsonb (isso nos pormite utilizar funções como jsonb_set do PostgreSQL para otimizar o enriquecimento)
b9d7116c433eef5938f3af7cc2ee564100a90d3b Ao invés de uma série de SELECT seguidos de UPDATE para enriquecer o JSON com o quadro societário, utilizamos apenas um UPDATE (obrigado jsonb_set)
d1e1e929696fb60e623430b852796e10dfde6d4d Ao invés de uma série de SELECT seguidos de UPDATE para enriquecer o JSON com os dados de impostos e da base do CNPJ, utilizamos apenas um UPDATE para cada caso (obrigado operador ||)
2dfa3cc Exclui a coluna base que era utilizada para o enriquecimento (para selecionar todos os CNPJs que tinham a mesma base, os mesmos 8 primeiros dígitos); como o id agora é numérico, fazer um filtro com maior e menor funciona relativamente rápido
4a1e01e0fd26e673937ff01110213ffb1b67a5d7 Ao usar jsonb no banco de dados, precisamos garantir que estamos enviando ao PostgreSQL strings em UTF-8 e sem caractere NUL
21947776bc9a478c8de7d51d015cb5ae99a96283 Envia os UPDATES do enriquecimentos em lotes para o banco de dados
Esse PR consiste em mudanças pontuais na forma como utilizamos o PostgreSQL para otimizar o tempo levado pelo enriquecimento dos JSON. Cada commit tem mais detalhes nas suas mensagens e talvez o review seja mais simples commit por commit:
id
ebase
) em números inteiros (isso deve melhorar a performance quando precisamos selecionar as empresas)json
parajsonb
(isso nos pormite utilizar funções comojsonb_set
do PostgreSQL para otimizar o enriquecimento)SELECT
seguidos deUPDATE
para enriquecer o JSON com o quadro societário, utilizamos apenas umUPDATE
(obrigadojsonb_set
)SELECT
seguidos deUPDATE
para enriquecer o JSON com os dados de impostos e da base do CNPJ, utilizamos apenas umUPDATE
para cada caso (obrigado operador||
)base
que era utilizada para o enriquecimento (para selecionar todos os CNPJs que tinham a mesma base, os mesmos 8 primeiros dígitos); como oid
agora é numérico, fazer um filtro com maior e menor funciona relativamente rápidojsonb
no banco de dados, precisamos garantir que estamos enviando ao PostgreSQL strings em UTF-8 e sem caractereNUL
UPDATES
do enriquecimentos em lotes para o banco de dados