Pular para o conteúdo principal

Migração da base de dados

Documentação referente a migração da base de dados

Este documento tem como objetivo, apresentar informações básicas e técnicas para auxiliar os tribunais na migração dos dados para a base de dados intermediária criada pela equipe da plataforma socioeducativa .


Migração de banco de dados é o uso de um serviço de migração de banco de dados para migrar dados de um banco de origem para um ou mais bancos de destino. Quando uma migração é concluída, o conjunto de dados nos bancos de dados de origem passa a residir totalmente no banco de destino, embora possivelmente de maneira reestruturada.

O fluxo do processo se dará da seguinte forma, cada tribunal ficará responsável por criar sua própria base de dados com base nas informações descritas neste documento, migrar os dados obedecendo a estrutura definida e enviar o dump do banco de dados para o local estabecido pela equipe da plataforma socioeducativa. Os dados por sua vez serão validados e caso nenhuma inconsistência seja encontrada, os mesmos serão enviados para a base oficial Socioeducativo. Havendo qualquer inconsistência, será gerando um relatório de erros e disponibilizado aos tribunais.

O processo de migração da base de dados será realizado conforme o diagrama a seguir:

Fluxo do processo conforme o tema escolhidoFluxo do processo conforme o tema escolhido

As seguintes informações serão abordadas neste documento:

Terminologia

A seguir a definição dos principais termos utilizados neste documento:

  • Migração de banco de dados - Transferência dos dados de bancos de origem para banco de destino, com o objetivo de alimentar e continuar o armazenamento em outro ambiente. A migração possivelmente transforma os dados durante a transferência;
  • Tribunal - Instituição jurídica responsável por transferir os dados de suas bases para base da plataforma socioeducativa;
  • Base de dados intermediária - Banco de dados que receberá as informações dos tribunais e realizará as validações para que posteriormente seja migrado para a base da plataforma;
  • Base de dados socioeducativo - Banco de dados oficial que receberá os dados após a validação da base intermediária;

Banco de dados utilizado

O banco de dados utilizado pela plataforma socioeducativa é o PostgreSQL em ambiente docker na versão 13-alpine

version: "3.3"

services:
db-postgres:
image: postgres:13-alpine
container_name: db-postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=database
ports:
- "5432:5432"
networks:
- db-network

networks:
db-network:
driver: bridge

Link da documentação do PostgreSQL e do Docker para mais detalhes.

Após criação do database, executar o script para a criação das tabelas.

Estrutura da base de dados de destino

O diagrama de ER abaixo demonstra quais são as entidades, atributos e seus relacionamentos:

DER conforme o tema escolhidoDER conforme o tema escolhido

Dicionário de dados com informações detalhadas dos campos

Nessa seção é possível verificar o dicionário de dados com as tabelas, campos, tipos, tamanhos e campos correspondentes entre a base de migração e a do socioeducativo.

tb_adolescente
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_adolescenteint8obrigatórioNão se aplica
cartorio_certidao_nascimentovarchar(40)opcionalsocioeducativo.tb_documento_certidao_nascimento.cartorio_cert_nasc
folha_certidao_nascimentovarchar(12)opcionalsocioeducativo.tb_documento_certidao_nascimento.folha_cert_nasc
livro_certidao_nascimentovarchar(12)opcionalsocioeducativo.tb_documento_certidao_nascimento.livro_cert_nasc
numero_certidao_nascimentovarchar(40)opcionalsocioeducativo.tb_documento_certidao_nascimento.numero
numero_cpfvarchar(11)opcionalsocioeducativo.tb_documento_cpf.numero
data_nascimentodateobrigatóriosocioeducativo.tb_adolescente.data_nascimento
data_nascimento_presumida (sim ou não)varchar(1) -> S ou Nobrigatóriosocioeducativo.tb_adolescente.data_nascimento_presumida
identidade_genero (enum) !varchar(18)obrigatóriosocioeducativo.tb_adolescente.identidade_de_genero
naturalidadevarchar(80)opcionalsocioeducativo.tb_adolescente.naturalidade
nomevarchar(150)obrigatóriosocioeducativo.tb_adolescente.nome
sobrenomevarchar(150)obrigatóriosocioeducativo.tb_adolescente.sobrenome
nome_maevarchar(150)opcionalsocioeducativo.tb_adolescente.nome_mae
nome_paivarchar(150)opcionalsocioeducativo.tb_adolescente.nome_pai
nome_socialvarchar(150)opcionalsocioeducativo.tb_adolescente.nome_social
orientacao_sexual (enum) !varchar(19)obrigatóriosocioeducativo.tb_adolescente.orientacao_sexual
possui_nome_social (sim ou não)varchar(1)-> S ou Nobrigatóriosocioeducativo.tb_adolescente.possui_nome_social
raca_cor (enum) !varchar(20)obrigatóriosocioeducativo.tb_adolescente.raca_cor
data_expedicao_rgdateopcionalsocioeducativo.tb_documento_rg.data_exp_rg
estado_rgvarchar(2)opcionalsocioeducativo.tb_documento_rg.estado_rg
numero_rgvarchar(40)opcionalsocioeducativo.tb_documento_rg.numero
orgao_expedidor_rgvarchar(10)opcionalsocioeducativo.tb_documento_rg.orgao_exp_rg
sexo_biologico (enum) !bpchar(1)->F,M ou Iobrigatóriosocioeducativo.tb_adolescente.sexo_biologico
tb_tribunal_sistema
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_tribunal_sistemaint8obrigatórionão se aplica
nome_sistemavarchar(100)obrigatóriosocioeducativo.tb_tribunal_sistema.nome
url_sistemavarchar(150)obrigatóriosocioeducativo.tb_tribunal_sistema.url
tr_tribunalbpchar(2)obrigatóriosocioeducativo.tb_tribunal.tr
nome_tribunalvarchar(150)obrigatóriosocioeducativo.tb_tribunal.nome
app_namevarchar(50)obrigatóriosocioeducativo.tb_tribunal_sistema.app_name
seguimento_poder_judiciarioint4obrigatóriosocioeducativo.tb_tribunal_sistema.segmento_poder_judiciario
grau_justicaint4obrigatóriosocioeducativo.tb_tribunal_sistema.grau_justica
tb_processo
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_processoint8obrigatórionão se aplica
id_tribunal_sistemaint8obrigatórionão se aplica
numero_processovarchar(20)obrigatóriosocioeducativo.tb_processo.numr_processo
orgao (Nome da vara)varchar(150)obrigatóriosocioeducativo.tb_processo.orgao
nome_jurisdicaovarchar(150)obrigatóriosocioeducativo.tb_processo.nome_jurisdicao
codigo_origem_jurisdicaovarchar(4)obrigatóriosocioeducativo.tb_processo.codigo_origem_jurisdicao
tipo_processo (enum) !varchar(50)obrigatóriosocioeducativo.tb_processo.tipo_processo
situacao_processo (enum) !varchar(40)obrigatóriosocioeducativo.tb_processo.situacao_processo
id_processo_referenciaint8opcionalsocioeducativo.tb_processo.processo_referencia
nome_magistrado_responsavelvarchar(250)obrigatóriosocioeducativo.tb_usuario.nome
cpf_magistrado_responsavelvarchar(11)obrigatóriosocioeducativo.tb_usuario.cpf
nome_serventuario_responsavelvarchar(250)obrigatóriosocioeducativo.tb_usuario.nome
cpf_serventuario_responsavelvarchar(11)obrigatóriosocioeducativo.tb_usuario.cpf
data_inicio_medidatimestampopcionalsocioeducativo.tb_cumprimento_medida.data_ingresso_programa
ingresso_programa (Sim ou Não)bpchar(2) -> S, N ou NIopcionalsocioeducativo.tb_cumprimento_medida.ingresso_programa
nome_unidade_atendimento_socioeducativovarchar(150)opcionalcniups.tb_unidade.nome_estabelecimento
tb_processo_parte
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_processoint8obrigatórionão se aplica
id_adolescenteint8obrigatórionão se aplica
tb_processo_ato_infracional
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_processoint8obrigatórionão se aplica
cod_tpu_ato_infracionalvarchar(5)obrigatóriosocioeducativo.tb_ato_infracional.cod_tpu
descricaovarchar(200)obrigatóriosocioeducativo.tb_ato_infracional.descricao
data_fatodateopcionalsocioeducativo.tb_ato_infracional.data_fato
local_fatovarchar(150)opcionalsocioeducativo.tb_ato_infracional.local_fato
tb_processo_medida_socioeducativa
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_processoint8obrigatórionão se aplica
cod_tpu_medidaint8obrigatóriosocioeducativo.tb_medida_socioeducativa.cod_tpu
tb_ultima_guia_ativa
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_guiaint8obrigatórionão se aplica
id_processo_apuracaoint8obrigatórionão se aplica
id_processo_execucaoint8opcionalnão se aplica
id_adolescenteint8obrigatórionão se aplica
origem_guia (enum origemguia) !varchar(40)obrigatóriosocioeducativo.tb_guia.origem_guia
data_emissaotimestampobrigatóriosocioeducativo.tb_guia.data_emissao
houve_internacao_provisoria (sim ou não)varchar(1) -> S ou Nopcionalsocioeducativo.tb_guia.houve_internacao_provisoria
data_inicio_internacao_provisoriadateopcionalsocioeducativo.tb_guia.data_inicio_internacao
data_fim_internacao_provisoriadateopcionalsocioeducativo.tb_guia.data_fim_internacao
tipo_guia (enum) !varchar(40)obrigatóriosocioeducativo.tb_guia.tipo_guia
data_sentencadateopcionalsocioeducativo.tb_guia.data_sentenca
data_transito_julgadodateopcionalsocioeducativo.tb_guia.data_transito_julgado
dias_prazo (somente para guia de internação-sanção)int4opcionalsocioeducativo.tb_guia.prazo
data_decisao_internacao_sancao (somente para guia de internação-sanção)dateopcionalsocioeducativo.tb_guia.data_decisao_internacao_sancao
data_decisao_unificao_medidas (somente para guia unificadora)dateopcionalsocioeducativo.tb_guia.data_decisao_unificacao_medidas
houve_apreensao_flagrantevarchar(1) -> S ou Nopcionalsocioeducativo.tb_guia.houve_apreensao_flagrante
data_apreensao_flagrantedateopcionalsocioeducativo.tb_guia.data_apreensao_flagrante
data_acordaodateopcionalsocioeducativo.tb_guia.data_acordao
id_guia_unificadoraint8opcionalsocioeducativo.tb_guia.id_guia (auto relacionamento)
tb_documentos_instruir_guia
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_documento_sistema_origemint8obrigatóriosocioeducativo.tb_documento_instruir_guia.id_doc_autos
id_processoint8obrigatórionão se aplica
id_guiaint8obrigatórionão se aplica
id_tipo_documento_associadoint8obrigatóriosocioeducativo.tb_tipo_documento_associado.id_tipo_documento_associado
tb_tipo_documento_associado
Nome ColunaTipo/TamanhoobrigatoriedadeCampo correspondente
id_tipo_documento_associadoint8obrigatóriosocioeducativo.tb_tipo_documento_associado.id_tipo_documento_associado
descricaovarchar(50)obrigatóriosocioeducativo.tb_tipo_documento_associado.descricao

Verificação de integridade e relatório de erros

Será realizada uma verificação de integridade durante a migração do banco de dados e sua consistência. Essa verificação garante que cada item de dados seja migrado apenas uma vez, que os conjuntos de dados nos bancos de origem e destino sejam idênticos e que a migração seja concluída. Dependendo das regras de modificação de dados, é possível que um item de dados seja extraído, mas não inserido no banco de dados de destino. Caso isso ocorra, será gerado um relatório contendo o motivo do erro e disponibilizado para que o tribunal responsável posso tomar as devidas providências necessárias para o reprocessamento.

Exemplo de relatório de erros

Imagem relatorio-erro