# Banco de Dados Relacional GBDS 4

## Introdução

Este manual descreve todas as tabelas, esquemas e informações dos bancos de dados relacionais do GBDS 4.x . O GBDS utiliza um banco de dados relacional para armazenar metadados sobre pessoas, transações, grupos de notificação, substituições de configurações e exceções.

O documento está dividido em quatro seções que descrevem:

* As tabelas gerais ;
* As tabelas de Latentes Não Resolvidas (UL) ;
* As tabelas de Notificação ;
* As tabelas de configurações do GBDS .

## Tabelas gerais <a href="#general-tables" id="general-tables"></a>

As tabelas gerais são tabelas que armazenam informações vitais para a operação do GBDS, como exceções, informações sobre pessoas, informações sobre transações e outras. Essas tabelas são descritas abaixo.

### gbds.people

A `people`tabela destina-se a armazenar os índices de todas as pessoas armazenadas no banco de dados GBDS e é descrita da seguinte forma:

<table><thead><tr><th width="100">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informação adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária;<br><br>Chave privada do banco de dados relacional</td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>not null</td><td>UGUID pessoal armazenado no HBase</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>null</td><td>Indica se o candidato foi deletado, para que ele não seja incluido quando operações de listagem forem performadas</td></tr></tbody></table>

### gbds.people\_version

A `people_version`tabela destina-se a armazenar as informações sobre as últimas alterações no cadastro de uma pessoa e é descrita da seguinte forma:

<table><thead><tr><th width="100">Coluna</th><th width="100">Tipo</th><th width="116.6666259765625">Tamanho</th><th width="100">Valor</th><th>Informações adicionais</th></tr></thead><tbody><tr><td>version</td><td>int</td><td>11</td><td>not null</td><td>Chave primária; Índice de versão (incremental a partir da primeira alteração)</td></tr><tr><td>person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Referência à pessoa<code>gbds.people.id</code></td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>timestamp de data e hora para a versão atual de uma pessoa</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>null</td><td>Indica se o candidato foi excluído para ser executado ao realizar operações de listagem de candidatos</td></tr><tr><td>active</td><td>tinyint</td><td>1</td><td>null</td><td>Define se uma versão de um povo é elegível para transações de registro mestre</td></tr></tbody></table>

### gbds.transactions\_ref

A `transactions`tabela destina-se a armazenar os índices de todas as transações armazenadas no banco de dados GBDS e é descrita da seguinte forma:

<table><thead><tr><th width="100">Coluna</th><th width="100">TIpo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações adicionais</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Chave privada do banco de dados relacional</td></tr><tr><td>tguid</td><td>varchar</td><td>255</td><td>not null</td><td><p>UGUID da transação armazenada do HBase</p><h4 id="gbds.transactions"><br></h4></td></tr></tbody></table>

### gbds.transactions

A `transactions`tabela destina-se a armazenar informações sobre a análise de qualidade dos dados biométricos de uma transação.

<table><thead><tr><th width="200">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Chave privada do banco de dados relacional</td></tr><tr><td>tguid</td><td>varchar</td><td>255</td><td>not null</td><td>Referência à transação<code>transactions_ref.tguid</code></td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>null</td><td>UGUID da pessoa armazenada no HBase</td></tr><tr><td>active</td><td>tinyint</td><td>1</td><td>not null</td><td>Define se uma versão de uma pessoa é elegível para transações do Registro Mestre</td></tr><tr><td>finger_quality_extracted</td><td>tinyint</td><td>1</td><td>null</td><td>Falso se as impressões digitais puderem ser extraídas</td></tr><tr><td>face_quality_extracted</td><td>tinyint</td><td>1</td><td>null</td><td>Falso se o rosto puder ser extraído em segundo plano. Verdadeiro se já tiver sido extraído.</td></tr><tr><td>created</td><td>datetime</td><td>6</td><td>null</td><td>timestamp de data e hora de criação da transação</td></tr><tr><td>updated</td><td>datetime</td><td>6</td><td>null</td><td>timestamp de data e hora da última modificação da transação</td></tr><tr><td>enroll_status</td><td>varchar</td><td>255</td><td>null</td><td>Status da inscrição (como <code>ENQUEUED</code>, <code>PROCESSING</code>, <code>FAILED</code>, e outros)</td></tr><tr><td>quality_status</td><td>varchar</td><td>255</td><td>null</td><td>Status da análise de qualidade (como <code>OK</code>, <code>PENDING</code>, <code>APPROVED</code>, e outros)</td></tr><tr><td>extraction_time</td><td>varchar</td><td>255</td><td>null</td><td>Tempo decorrido para extrações de modelos</td></tr><tr><td>extraction_quality</td><td>varchar</td><td>255</td><td>null</td><td>Tempo decorrido para extrações de qualidade</td></tr><tr><td>match_time</td><td>int</td><td>11</td><td>null</td><td>Tempo de correspondência decorrido para esta transação</td></tr><tr><td>total_time</td><td>int</td><td>11</td><td>null</td><td>Operação total menos tempo de espera na fila</td></tr><tr><td>type</td><td>varchar</td><td>20</td><td>null</td><td>Tipo de transação. Enum: <code>ENROLL</code>, <code>UPDATE</code>, <code>VERIFY</code>,<code>IDENTIFY</code></td></tr><tr><td>fingerprint_global_quality</td><td>int</td><td>11</td><td>null</td><td>Pontuação de qualidade global de impressão digital</td></tr><tr><td>global_quality</td><td>int</td><td>11</td><td>null</td><td>Pontuação de qualidade global do perfil</td></tr><tr><td>quality_extraction_api_id</td><td>varchar</td><td>255</td><td>null</td><td>ID da API que realizará ou realizou a extração de qualidade</td></tr><tr><td>latent</td><td>tinyint</td><td>1</td><td>null</td><td>Sinaliza se a transação é uma pesquisa latente</td></tr><tr><td>ul</td><td>tinyint</td><td>1</td><td>null</td><td>Sinaliza se a transação é uma pesquisa UL</td></tr><tr><td>api_id</td><td>varchar</td><td>255</td><td>null</td><td>O ID da instância da API que recebeu a transação</td></tr><tr><td>num_fingers</td><td>int</td><td>11</td><td>null</td><td>O número de impressões digitais na transação</td></tr><tr><td>num_faces</td><td>int</td><td>11</td><td>null</td><td>O número de imagens de rosto na transação (0 ou 1)</td></tr><tr><td>gbds_version</td><td>varchar</td><td>255</td><td>not null</td><td>Versão do GBDS que processou a transação</td></tr><tr><td>ginger_extractor_type</td><td>enum</td><td>n/a</td><td>null</td><td>Tipo de extrator de gengibre utilizado na transação. Enum: <code>GRIAULE_FAST</code>, <code>GRIAULE_BASIC</code>, <code>GRIAULE_2020</code>, <code>GRIAULE_2024</code>, <code>GRIAULE_2018</code>.</td></tr></tbody></table>

### gbds.transaction\_fields

A `transaction_fields`tabela tem como objetivo armazenar as informações sobre as informações de qualidade e vinculá-las às informações não biométricas da `fields`tabela.

<table><thead><tr><th width="120">Coluna</th><th width="100">Tipo</th><th width="100"> Tamanho</th><th width="100">Valor</th><th>Informações adicionais</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Chave privada do banco de dados relacional</td></tr><tr><td>fkey</td><td>varchar</td><td>255</td><td>null</td><td>Chave de campo que descreve as informações contidas (por exemplo, se é um tipo sanguíneo, nome da mãe, data de nascimento, documento, etc.) Referência a<code>fields.fkey</code></td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>null</td><td>Tipo de informação (pesquisa ou <code>label</code>) Referência a<code>fields.type</code></td></tr><tr><td>fvalue</td><td>varchar</td><td>255</td><td>null</td><td>Valor efetivo do campo (por exemplo, o número do documento) Referência a<code>fields.fvalue</code></td></tr><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>not null</td><td>Id da transação. Referência a<code>transaction.id</code></td></tr></tbody></table>

### gbds.transaction\_fingerprint\_quality

As colunas da tabela abaixo são dinâmicas, de acordo com a extração de qualidade. Caso ocorra alguma edição dos campos em versões futuras, os dados aqui podem ficar desatualizados por um momento.

| Coluna            | Tipo    | Tamanho | Valor    |
| ----------------- | ------- | ------- | -------- |
| transaction\_id   | bigint  | 20      | not null |
| idx               | int     | 11      | not null |
| image\_quality    | int     | 11      | null     |
| template\_quality | int     | 11      | null     |
| minutiae\_count   | int     | 11      | null     |
| blank             | varchar | 100     | null     |
| contrast          | varchar | 100     | null     |
| fingerArea        | varchar | 100     | null     |
| fingerCenterX     | varchar | 100     | null     |
| fingerCenterY     | varchar | 100     | null     |
| fingerExtentX     | varchar | 100     | null     |
| fingerExtentY     | varchar | 100     | null     |
| hasjoint          | varchar | 100     | null     |
| \_\_index         | varchar | 100     | null     |
| marginBiteEast    | varchar | 100     | null     |
| marginBiteNorth   | varchar | 100     | null     |
| marginBiteSouth   | varchar | 100     | null     |
| marginBiteWest    | varchar | 100     | null     |
| nfiq              | varchar | 100     | null     |
| orientation       | varchar | 100     | null     |
| sizeX             | varchar | 100     | null     |
| sizeY             | varchar | 100     | null     |

### gbds.transaction\_face\_quality

As colunas da tabela abaixo são dinâmicas, de acordo com a extração de qualidade. Caso ocorra alguma edição dos campos em versões futuras, os dados aqui podem ficar desatualizados por um momento.

<table><thead><tr><th width="300">Coluna</th><th>Tipo</th><th>Tamanho</th><th>Valor</th></tr></thead><tbody><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>not null</td></tr><tr><td>idx</td><td>int</td><td>11</td><td>not null</td></tr><tr><td>image_quality</td><td>int</td><td>11</td><td>null</td></tr><tr><td>template_quality</td><td>int</td><td>11</td><td>null</td></tr><tr><td>autoBrightness</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgBelowPictureQuality</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgBlueStandardDeviation</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgDarknessQuality</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgGreenStandardDeviation</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgRedStandardDeviation</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgUniformityQuality</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>blurCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>busyBackground</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>busyBackgroundInCropped</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>cropContainmentError</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesLookDown</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesLookLeft</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesLookRight</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesLookUp</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesObstruction</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesTooClosed</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesTooOpen</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceDown</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceLeft</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceObstruction</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceOrientationPitchCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceOrientationRollAngle</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceOrientationYawCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceRight</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceUp</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>glasses</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>grayscaleSpan</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>hat</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>heavyGlasses</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>icaoCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>leftEyeX</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>leftEyeY</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>mouthObstruction</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>mouthOpen</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>obstruction</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>openMouth</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>pictureHeight</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>pictureWidth</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>pixelated</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>redEye</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>result</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>rightEyeX</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>rightEyeY</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>saturated</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>saturationGrayscaleDistribGrade</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>saturationNumGrayTones</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>saturationOverExposure</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>shadows</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>skinColorCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>smile</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>smilingMouth</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>spoof</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>spoofGrade</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>tiltAngle</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>tooDark</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>unnaturalSkinColor</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>visibleTeeth</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>wrongFacePose</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>wrongShoulderPoseLeft</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>wrongShoulderPoseRight</td><td>varchar</td><td>100</td><td>null</td></tr></tbody></table>

### gbds.biometrics

A tabela `biometrics`destina-se a armazenar os dados biométricos de uma pessoa, estando vinculada às tabelas `transaction`e ao `people_version`sistema. Ela é descrita da seguinte forma:

<table><thead><tr><th width="120">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Chave privada do banco de dados relacional</td></tr><tr><td>idx</td><td>int</td><td>11</td><td>null</td><td>Índice da biometria atual</td></tr><tr><td>quality</td><td>int</td><td>11</td><td>null</td><td>Pontuação de qualidade para o modelo biométrico extraído</td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>null</td><td>Modalidade da biometria atual</td></tr><tr><td>person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Referência à pessoa<code>gbds.people.id</code></td></tr><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>not null</td><td>Referência à transação<code>transactions_ref.id</code></td></tr><tr><td>person_version</td><td>bigint</td><td>11</td><td>not null</td><td>Referência à pessoa<code>people_version.version</code></td></tr></tbody></table>

### gbds.fields

A tabela `fields`       destina-se a armazenar as informações não biométricas de uma pessoa, estando vinculada às `transaction`tabelas `people_version`. Ela é descrita da seguinte forma:

<table><thead><tr><th width="120">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Chave privada do banco de dados relacional</td></tr><tr><td>fkey</td><td>varchar</td><td>255</td><td>null</td><td>Chave de campo que descreve as informações contidas (por exemplo, se é um tipo sanguíneo, nome da mãe, data de nascimento, documento, etc.)</td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>null</td><td>Tipo de informação (pesquisa ou <code>label</code>)</td></tr><tr><td>fvalue</td><td>varchar</td><td>255</td><td>null</td><td>Valor efetivo do campo (por exemplo, o número do documento)</td></tr><tr><td>person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Referência à pessoa<code>person.id</code></td></tr><tr><td>person_version</td><td>int</td><td>11</td><td>not null</td><td>Referência à pessoa<code>people_version.version</code></td></tr></tbody></table>

### gbds.exceptions

A tabela `exceptions`destina-se a armazenar as informações de qualquer exceção biométrica e seu tratamento. Ela é descrita a seguir:

<table><thead><tr><th width="185">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Chave privada do banco de dados relacional</td></tr><tr><td>aguid</td><td>varchar</td><td>255</td><td>not null</td><td>Exceção armazenada do HBase UGUID</td></tr><tr><td>comments</td><td>varchar</td><td>255</td><td>null</td><td>Quaisquer comentários fornecidos ao tratar a exceção</td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>timestamp de data e hora para a criação da exceção</td></tr><tr><td>status</td><td>varchar</td><td>255</td><td>not null</td><td>O status atual da exceção é definido se ela está tratada ou pendente</td></tr><tr><td>user</td><td>varchar</td><td>255</td><td>null</td><td>Identificação do usuário responsável pelo tratamento da exceção</td></tr><tr><td>reference_person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave estrangeira: Referência à pessoa de referência<code>people.id</code></td></tr><tr><td>entrant_person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave estrangeira: Referência à pessoa que entra<code>people.id</code></td></tr><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave estrangeira: Referência à transação<code>transactions_ref.id</code></td></tr><tr><td>reference_person_version</td><td>int</td><td>11</td><td>not null</td><td>Chave estrangeira: Referência à pessoa de referência<code>people_version.version</code></td></tr><tr><td>entrant_person_version</td><td>int</td><td>11</td><td>not null</td><td>Chave estrangeira: Referência à pessoa que entra<code>people_version.version</code></td></tr></tbody></table>

### gbds.apis

O `apis`é usado pelo GBDS para gerenciar várias APIs ativas ao mesmo tempo.

<table><thead><tr><th width="100">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>api-id</td><td>varchar</td><td>255</td><td>not null</td><td>ID da instância de API exclusiva</td></tr><tr><td>hostname</td><td>varchar</td><td>255</td><td>not null</td><td>Nome do host do nó onde a API está sendo executada</td></tr><tr><td>port</td><td>int</td><td>11</td><td>not null</td><td>Porta onde a API está sendo executada</td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>null</td><td>Tipo de instância da API (LEADER, RUNNER ou nulo)</td></tr></tbody></table>

Na inicialização da API, cada API procurará por si mesma nesta tabela. Se não for encontrada com nome de host/IP e porta, ela se insere na tabela com um GUID como *api-id* e *tipo nulo* , o que significa que não está pronta para extração de qualidade. Alterações aplicadas diretamente a esta tabela serão analisadas a cada 15 minutos.

## Tabelas latentes não resolvidas (UL) <a href="#unsolved-latent-ul-tables" id="unsolved-latent-ul-tables"></a>

As tabelas de Latentes Não Resolvidas são usadas para armazenar informações sobre os dados da UL e os candidatos. As tabelas são descritas abaixo.

### gbds.ul

A tabela `ul`foi projetada para armazenar todos os GBDS UL's e é descrita da seguinte forma:

<table><thead><tr><th width="150">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>uguid</td><td>varchar</td><td>255</td><td>not null</td><td>Chave primária; UGUID armazenado em HBase</td></tr><tr><td>ul_status</td><td>varchar</td><td>255</td><td>not null</td><td><br><code>UNSOLVED</code>ou <code>SOLVED</code>; HBase replica esse status</td></tr><tr><td>creation_time</td><td>timestamp</td><td>4</td><td>not null</td><td><code>current_timestamp</code>por padrão</td></tr><tr><td>person_pguid</td><td>varchar</td><td>255</td><td>null</td><td>PGUID da pessoa correspondente quando<code>SOLVED</code></td></tr><tr><td>person_tguid</td><td>varchar</td><td>255</td><td>null</td><td>TGUID da pessoa correspondente quando<code>SOLVED</code></td></tr><tr><td>fragment_id</td><td>varchar</td><td>255</td><td>null</td><td>ID do fragmento original para o fragmento que gerou o UL</td></tr><tr><td>fragment_case_id</td><td>varchar</td><td>255</td><td>null</td><td>ID do caso original para o fragmento que gerou o UL</td></tr><tr><td>fragment_index</td><td>int</td><td>11</td><td>null</td><td>Índice de fragmentos para o UL. Por padrão, o índice é definido como <code>-1</code>(índice desconhecido, qualquer índice)</td></tr><tr><td>analysis_user</td><td>varchar</td><td>255</td><td>null</td><td>Usuário responsável pela análise UL</td></tr><tr><td>analysis_timestamp</td><td>timestamp</td><td>4</td><td>null</td><td>timestamp de data e hora da análise</td></tr><tr><td>group_guid</td><td>varchar</td><td>255</td><td>not null</td><td>GUID de agrupamento (para listar ULs vinculados)</td></tr></tbody></table>

### gbds.ul\_candidates

A tabela `ul_candidates` foi projetada para armazenar os candidatos de cada UL que o GBDS mantém após qualquer *CORRESPONDÊNCIA LATENTE REVERSA* realizada em inscrições que geraram uma *correspondência* com uma UL, e é descrita da seguinte forma:

<table><thead><tr><th width="110">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor </th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>ul_uguid</td><td>varchar</td><td>255</td><td>not null</td><td>Chave primária; UL UGUID</td></tr><tr><td>person_pguid</td><td>varchar</td><td>255</td><td>not null</td><td>Chave primária; PGUID do candidato</td></tr><tr><td>person_tguid</td><td>varchar</td><td>255</td><td>not null</td><td>Chave primária; TGUID do candidato</td></tr><tr><td>person_index</td><td>int</td><td>11</td><td>not null</td><td>Chave primária; Dedo indicador candidato</td></tr><tr><td>score</td><td>int</td><td>11</td><td>not null</td><td>Pontuação de matching correspondente para o candidato</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>not null</td><td><code>0</code>por padrão, indica se o candidato foi excluído para ser excluído ao realizar operações de listagem de candidatos</td></tr><tr><td>minutiae</td><td>longblob</td><td>Up to 4Gb</td><td>null</td><td>Serialização JSON contendo as minúcias correspondentes. É uma lista com a seguinte estrutura:<br> - <code>queryIndex</code>, <code>int</code> <br>- <code>referenceIndex</code>,<code>int</code></td></tr></tbody></table>

## Tabelas de notificação

As tabelas de notificação são usadas para armazenar dados para fins de auditoria, como e-mails, pessoas que serão notificadas e grupos.

### gbds.notify\_user

A tabela `notify_user` foi projetada para armazenar os dados do usuário autenticado pelo gbds.

<table><thead><tr><th width="100">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; ID exclusivo do usuário.</td></tr><tr><td>username</td><td>varchar</td><td>255</td><td>not null</td><td>nome de usuário gbds autenticado</td></tr></tbody></table>

### gbds.notify\_group

A tabela `notify_group`foi projetada para armazenar informações dos grupos de notificação.

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária;</td></tr><tr><td>name</td><td>varchar</td><td>255</td><td>not null</td><td>Nome do grupo</td></tr><tr><td>enabled</td><td>tinyint</td><td>1</td><td>not null</td><td>Define se o grupo estará ativo ou não</td></tr></tbody></table>

### gbds.notify\_group\_email

A tabela `notify_group_email` foi projetada para armazenar os e-mails de um determinado grupo.

<table><thead><tr><th width="130">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>notify_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; ID do grupo.</td></tr><tr><td>email</td><td>varchar</td><td>255</td><td>not null</td><td>Chave primária; <br>E-mail que pertence ao grupo</td></tr></tbody></table>

### gbds.notify\_user\_group

A tabela `notify_user_group` foi projetada para armazenar informações de qual grupo um determinado usuário faz parte.

<table><thead><tr><th width="130">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>notify_user_id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Referência ao usuário<code>notify_user.id</code></td></tr><tr><td>notify_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Referência ao grupo<code>notify_group_email.notify_group.id</code></td></tr></tbody></table>

### gbds.people\_transparency

A tabela `people_transparency` foi projetada para armazenar informações sobre uma determinada pessoa e quais ações são tomadas quando essa pessoa é pesquisada.

<table><thead><tr><th width="100">Coluna</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária;</td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>not null</td><td>Referência à pessoa<code>people.pguid</code></td></tr><tr><td>enabled</td><td>tinyint</td><td>1</td><td>not null</td><td>Referência à pessoa<code>people.pguid</code></td></tr><tr><td>action</td><td>varchar</td><td>255</td><td>null</td><td>Ação a ser tomada</td></tr></tbody></table>

### gbds.people\_transparency\_group

A tabela `people_transparency_group` foi projetada para armazenar informações sobre os grupos aos quais uma pessoa pertence.

<table><thead><tr><th width="180">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>people_transparency_id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Referência a people_transparency's<code>people_transparency.id</code></td></tr><tr><td>notify_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Chave primária; Referência ao grupo<code>notify_group_email.notify_group.id</code></td></tr></tbody></table>

## Tabelas de configurações do GBDS

O GBDS utiliza um banco de dados relacional para armazenar algumas configurações da API e do GBDS. A tabela de configurações é uma tabela especial projetada para controlar determinadas configurações do GBDS e da API do GBDS. Essas configurações são armazenadas na `gbds.settings`tabela. A tabela pode conter configurações presentes na API do GBDS, no GBDS ou em ambos, seguindo o esquema abaixo:

<table><thead><tr><th width="100">Tipo</th><th width="100">Tipo</th><th width="100">Tamanho</th><th width="100">Valor</th><th>Informações Adicionais</th></tr></thead><tbody><tr><td>skey</td><td>varchar</td><td>255</td><td>not null</td><td>Chave primária. Nome da chave de parâmetro.</td></tr><tr><td>stype</td><td>varchar</td><td>50</td><td>not null</td><td>Local de onde vem o parâmetro. API ou GBDS</td></tr><tr><td>svalue</td><td>varchar</td><td>4096</td><td>null</td><td>Valor do parâmetro</td></tr><tr><td>description</td><td>varchar</td><td>4096</td><td>null</td><td>Descrição do parâmetro</td></tr><tr><td>stimestamp</td><td>datetime</td><td>6</td><td>not null</td><td>Carimbo de data e hora</td></tr><tr><td>host</td><td>varchar</td><td>1024</td><td>null</td><td>Nome do host de um nó</td></tr></tbody></table>

Todas as configurações encontradas na tabela serão gravadas no respectivo arquivo, `gbdsapi.properties`tanto para a API do GBDS quanto `application.conf`para o GBDS, a cada 15 minutos. Além disso, todas as configurações atualizadas na memória, tanto na API quanto no GBDS, serão propagadas.

{% hint style="info" %}
O valor do parâmetro definido na `gbds.settings`tabela será propagado para TODOS os nós.
{% endhint %}

Este recurso é controlado por um parâmetro de configuração na tabela, `gbds.rdbSystemConfiguration.enabled`. Este parâmetro permitirá a substituição dos valores de configuração do GBDS e da API. Definir o valor do parâmetro como `BOTH`fará com que as configurações do GBDS e da API sejam substituídas.

| gbds.settings / Chave de configuração de arquivo                      | Tipo |
| --------------------------------------------------------------------- | ---- |
| gbscluster.min.quality                                                | API  |
| gbds.enroll.fingerprints.min-nr-template                              | API  |
| gbds.enroll.face.min-nr-template                                      | API  |
| gbds.enroll.iris.min-nr-template                                      | API  |
| gbds.enroll.palmprint.min-nr-template                                 | API  |
| gbds.enroll.newborn-palmprint.min-nr-template                         | API  |
| gbscluster.enroll.fingerprints.verify.matchthreshold                  | API  |
| gbscluster.update.min.quality                                         | API  |
| gbds.transparency.search.identify.request.notify.enabled              | API  |
| gbds.transparency.search.identify.result.actions.enabled              | API  |
| gbds.api.logLevel                                                     | API  |
| gbds.extraction.service                                               | API  |
| gbds.extraction.service.face.count                                    | API  |
| gbds.extraction.service.ginger.count                                  | API  |
| gbds.extraction.service.girl.count                                    | API  |
| gbds.extraction.service.hostname                                      | API  |
| gbds.extraction.service.initialPort                                   | API  |
| gbds.extraction.service.logLevel                                      | API  |
| gbds.extraction.service.maxTries                                      | API  |
| gbds.extraction.service.linkLibSegfault                               | API  |
| gbds.extraction.quality.service                                       | API  |
| gbds.extraction.quality.fillTransactionQualityPropertiesTable         | API  |
| gbds.faces.extraction.quality.api                                     | API  |
| gbds.faces.extraction.quality.background                              | API  |
| gbds.fingerprints.extraction.quality.api                              | API  |
| gbds.fingerprints.extraction.quality.background                       | API  |
| gbds.extraction.quality.service.finger.count                          | API  |
| gbds.extraction.quality.service.face.count                            | API  |
| gbds.extraction.quality.service.initialPort                           | API  |
| gbds.extraction.quality.service.logLevel                              | API  |
| gbds.extraction.quality.service.timeout                               | API  |
| gbds.extraction.quality.service.hostname                              | API  |
| gbds.extraction.quality.service.maxTries                              | API  |
| gbds.extraction.quality.service.linkLibSegfault                       | API  |
| gbds.extraction.quality.service.rows-on-select                        | API  |
| gbds.extraction.quality.service.submitted-queue-factor                | API  |
| gbds.enroll.face.min.quality                                          | API  |
| gbds.update.face.min.quality                                          | API  |
| gbds.monitor.url                                                      | API  |
| gbds.template.face.multiplicity                                       | API  |
| gbds.biographicBase.enabled                                           | API  |
| gbds.biographicBase.endpoints                                         | API  |
| gbds.biographicBase.get.timeout.ms                                    | API  |
| gbds.biographicBase.list.timeout.ms                                   | API  |
| gbds.biographicBase.logLevel                                          | API  |
| gbds.biographicBase.clientID                                          | API  |
| gbds.biographicBase.clientSecret                                      | API  |
| gbds.biographicBase.lookAllServers                                    | API  |
| gbscluster.fingerprints.extraction.enroll.type                        | API  |
| gbscluster.fingerprints.extraction.verify.type                        | API  |
| gbds.update.exception.reextract                                       | API  |
| gbds.update.exception.reextract.save                                  | API  |
| gbds.biographicBase.autoUpdate                                        | API  |
| gbds.biographicBase.sendPguidAsKey                                    | API  |
| gbds.biographicBase.sendTguidAsKey                                    | API  |
| gbds.log.diagnose                                                     | GBDS |
| gbds.ul.boot.scan.enabled                                             | GBDS |
| gbds.boot.scan.ignoreErrorsOnRegion                                   | GBDS |
| gbds.boot.matcher.creation.sleepTime.ms                               | GBDS |
| gbds.biometric.fingerprint.identify.threshold                         | GBDS |
| gbds.biometric.fingerprint.exception.threshold                        | GBDS |
| gbds.biometric.fingerprint.exception.enabled                          | GBDS |
| gbds.biometric.fingerprint.exception.enroll.min-matches-for-exception | GBDS |
| gbds.biometric.face.identify.threshold                                | GBDS |
| gbds.biometric.face.exception.threshold                               | GBDS |
| gbds.peopleList.countFromRDB                                          | GBDS |
| gbds.biometric.face.enabled.threshold                                 | GBDS |
| gbds.driver.logLevel                                                  | GBDS |
| gbds.log.loadUnload                                                   | GBDS |
| gbds.template.memory.format                                           | GBDS |
| gbds.match.service.enabled                                            | GBDS |
| gbds.match.service.initialPort                                        | GBDS |
| gbds.match.service.logLevel                                           | GBDS |
| gbds.match.service.timeout                                            | GBDS |
| gbds.match.service.templateSend.parallelByModality                    | GBDS |
| gbds.match.service.linkLibSegfault                                    | GBDS |
| gbds.match.service.maxTries                                           | GBDS |
| gbds.match.service.maxConnectionErrors                                | GBDS |
| gbds.memory-monitor                                                   | GBDS |
| gbds.watchdog.interval                                                | GBDS |
| gbds.watchdog.log.mode                                                | GBDS |
| gbds.watchdog.log.level                                               | GBDS |
| gbds.verifyPostMatch.enabled                                          | GBDS |
| gbds.transparency.search.identify.result.notify.enabled               | BOTH |
| gbds.transparency.email-notifier.url                                  | BOTH |
| gbds.transparency.email-notifier.log-level                            | BOTH |
| gbds.transparency.email-notifier.timeout                              | BOTH |
| gbscluster.update.consider.fingerprints                               | BOTH |
| gbscluster.update.consider.faces                                      | BOTH |
| gbscluster.update.consider.faces.beforeFingerprints                   | BOTH |
| gbscluster.update.faces.verify.matchthreshold                         | BOTH |
| gbscluster.update.minimum.fingers                                     | BOTH |
| gbds.search.verify.adjust-resolution                                  | BOTH |

Outras configurações podem ser colocadas na tabela `gbds.settings`em rdb e todas serão gravadas na API ou no arquivo GBDS, de acordo com o tipo de configuração. No entanto, as recargas de memória em tempo de execução não serão realizadas para essas novas configurações, somente após a reinicialização da API e/ou do GBDS.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/integracao-do-gbds/banco-de-dados-relacional-gbds-4.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
