# Bases de Datos Relacionales GBDS 5

## Introducción

Este manual describe todas las tablas, esquemas e información de las bases de datos relacionales del GBDS. El GBDS utiliza una base de datos relacional para almacenar metadatos sobre personas, transacciones, grupos de notificación, sustituciones de configuraciones y excepciones.

El documento está dividido en cuatro secciones que describen:

* Las tablas generales ;
* Las tablas de Latentes No Resueltas (UL) ;
* Las tablas de Notificación ;
* Las tablas de configuraciones del GBDS .

## Tablas generales <a href="#general-tables" id="general-tables"></a>

Las tablas generales son tablas que almacenan información vital para la operación del GBDS, como excepciones, información sobre personas, información sobre transacciones y otras. Estas tablas se describen a continuación.

### gbds.people

La `people`tabla destinada a almacenar los índices de todas las personas almacenadas en la base de datos GBDS y se describe de la siguiente manera:

<table><thead><tr><th width="100">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria;<br><br>Clave privada de la base de datos relacional</td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>not null</td><td>UGUID personal almacenado en HBase</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>null</td><td>Indica si el candidato fue eliminado, para que no sea incluido cuando se realicen operaciones de listado</td></tr></tbody></table>

### gbds.people\_version

La `people_version`tabla destinada a almacenar la información sobre los últimos cambios en el registro de una persona y se describe de la siguiente manera:

<table><thead><tr><th width="100">Columna</th><th width="100">Tipo</th><th width="116.6666259765625">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>version</td><td>int</td><td>11</td><td>not null</td><td>Clave primaria; Índice de versión (incremental a partir del primer cambio)</td></tr><tr><td>person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Referencia a la persona<code>gbds.people.id</code></td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>timestamp de fecha y hora para la versión actual de una persona</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>null</td><td>Indica si el candidato fue excluido para ejecutarse al realizar operaciones de listado de candidatos</td></tr><tr><td>active</td><td>tinyint</td><td>1</td><td>null</td><td>Define si una versión de una persona es elegible para transacciones de registro maestro</td></tr></tbody></table>

### gbds.organization

La tabla `organization` es responsable de almacenar la información sobre las organizaciones registradas en el GBDS

| Columna     | Tipo    | Tamaño | Valor    | Información adicional                                     |
| ----------- | ------- | ------ | -------- | --------------------------------------------------------- |
| id          | bigint  | 20     | not null | Clave primaria; Identifica la organización de forma única |
| parent\_id  | bigint  | 20     | null     | Identifica la organización responsable, clave;            |
| name        | varchar | 255    | not null | Nombre de la organización                                 |
| description | varchar | 1000   | not null | Descripción                                               |

### gbds.transactions

La `transactions`tabla destinada a almacenar información sobre el análisis de calidad de los datos biométricos de una transacción.

<table><thead><tr><th width="200">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Clave privada de la base de datos relacional</td></tr><tr><td>tguid</td><td>varchar</td><td>255</td><td>not null</td><td>Referencia a la transacción<code>transactions.tguid</code></td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>null</td><td>UGUID de la persona almacenada en HBase</td></tr><tr><td>active</td><td>tinyint</td><td>1</td><td>not null</td><td>Define si una versión de una persona es elegible para transacciones del Registro Maestro</td></tr><tr><td>priority</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('GOD_PRIORITY','HIGHEST_PRIORITY','HIGHER_PRIORITY','HIGH_PRIORITY','DEFAULT_PRIORITY','LOW_PRIORITY','LOWER_PRIORITY','LOWEST_PRIORITY')</code></td></tr><tr><td>created</td><td>datetime</td><td>6</td><td>null</td><td>timestamp de fecha y hora de creación de la transacción</td></tr><tr><td>updated</td><td>datetime</td><td>6</td><td>null</td><td>timestamp de fecha y hora de la última modificación de la transacción</td></tr><tr><td>quality_status</td><td>enum</td><td>n/a</td><td>null</td><td>Estado del análisis de calidad (como <code>OK</code>, <code>PENDING</code>, <code>APPROVED</code>, y otros)</td></tr><tr><td>enroll_status</td><td>enum</td><td>n/a</td><td>null</td><td>Estado de la inscripción (como <code>ENQUEUED</code>, <code>PROCESSING</code>, <code>FAILED</code>, y otros)</td></tr><tr><td>search_status</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('ENQUEUED','PREPARED','PROCESSING','MATCH','NOT_MATCH','UNCERTAIN','MISMATCH','FAILED','PENDING','PERSON_NOT_FOUND','NONE','UL_NOT_FOUND','REFUSED','RESENT_ENROLL')</code></td></tr><tr><td>extraction_time</td><td>int</td><td>11</td><td>null</td><td>Tiempo transcurrido para extracciones de modelos</td></tr><tr><td>extraction_quality_time</td><td>int</td><td>11</td><td>null</td><td>Tiempo transcurrido para extracciones de calidad</td></tr><tr><td>match_time</td><td>int</td><td>11</td><td>null</td><td>Tiempo de emparejamiento transcurrido para esta transacción</td></tr><tr><td>post_match_time</td><td>int</td><td>11</td><td>null</td><td>Tiempo transcurrido después del emparejamiento para esta transacción</td></tr><tr><td>total_time</td><td>int</td><td>11</td><td>null</td><td>Operación total menos tiempo de espera en la cola</td></tr><tr><td>transaction_type</td><td>enum</td><td>n/a</td><td>null</td><td>Tipo de transacción.<br>enum<code>('ENROLL','UPDATE','VERIFY','IDENTIFY')</code></td></tr><tr><td>latent</td><td>tinyint</td><td>1</td><td>null</td><td>Señala si la transacción es una búsqueda latente</td></tr><tr><td>ul</td><td>tinyint</td><td>1</td><td>null</td><td>Señala si la transacción es una búsqueda UL</td></tr><tr><td>num_fingers</td><td>int</td><td>11</td><td>null</td><td>El número de huellas dactilares en la transacción</td></tr><tr><td>num_faces</td><td>int</td><td>11</td><td>null</td><td>El número de imágenes de rostro en la transacción (0 o 1)</td></tr><tr><td>finger_quality_extracted</td><td>tinyint</td><td>1</td><td>null</td><td>Falso si las huellas dactilares pueden ser extraídas</td></tr><tr><td>face_quality_extracted</td><td>tinyint</td><td>1</td><td>null</td><td>Falso si el rostro puede ser extraído en segundo plano. Verdadero si ya ha sido extraído.</td></tr><tr><td>ginger_extractor_type</td><td>enum</td><td>n/a</td><td>null</td><td>Tipo de extractor de ginger utilizado en la transacción. Enum: <code>GRIAULE_FAST</code>, <code>GRIAULE_BASIC</code>, <code>GRIAULE_2020</code>, <code>GRIAULE_2024</code>, <code>GRIAULE_2018</code>.</td></tr><tr><td>finger_global_quality</td><td>int</td><td>11</td><td>null</td><td>Puntuación de calidad global de huella dactilar</td></tr><tr><td>global_quality</td><td>int</td><td>11</td><td>null</td><td>Puntuación de calidad global del perfil</td></tr><tr><td>quality_extraction_api_id</td><td>varchar</td><td>255</td><td>null</td><td>ID de la API que realizará o realizó la extracción de calidad</td></tr><tr><td>quality_extraction_msg</td><td>varchar</td><td>512</td><td>null</td><td>Mensaje referente a la extracción de calidad</td></tr><tr><td>api_id</td><td>varchar</td><td>255</td><td>null</td><td>El ID de la instancia de la API que recibió la transacción</td></tr><tr><td>gbds_version</td><td>varchar</td><td>255</td><td>null</td><td>Versión del GBDS que procesó la transacción</td></tr></tbody></table>

### gbds.transaction\_fields

La `transaction_fields`la tabla tiene como objetivo almacenar la información sobre la calidad y vincularla a la información no biométrica de la `fields`tabla.

<table><thead><tr><th width="120">Columna</th><th width="100">Tipo</th><th width="100"> Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Clave privada de la base de datos relacional</td></tr><tr><td>fkey</td><td>varchar</td><td>255</td><td>null</td><td>Clave de campo que describe la información contenida (por ejemplo, si es un tipo de sangre, nombre de la madre, fecha de nacimiento, documento, etc.) Referencia a<code>fields.fkey</code></td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>null</td><td>Tipo de información (búsqueda o <code>label</code>) Referencia a<code>fields.type</code></td></tr><tr><td>fvalue</td><td>varchar</td><td>255</td><td>null</td><td>Valor efectivo del campo (por ejemplo, el número del documento) Referencia a<code>fields.fvalue</code></td></tr><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>not null</td><td>Id de la transacción. Referencia a<code>transaction.id</code></td></tr></tbody></table>

### gbds.transaction\_fingerprint\_quality

| Columna           | Tipo    | Tamaño | 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

<table><thead><tr><th width="300">Columna</th><th>Tipo</th><th>Tamaño</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.fields

La tabla `fields`       destinada a almacenar la información no biométrica de una persona, estando vinculada a las `transaction`tablas `people_version`. Se describe de la siguiente manera:

<table><thead><tr><th width="120">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Clave privada de la base de datos relacional</td></tr><tr><td>fkey</td><td>varchar</td><td>255</td><td>null</td><td>Clave de campo que describe la información contenida (por ejemplo, si es un tipo de sangre, nombre de la madre, fecha de nacimiento, documento, etc.)</td></tr><tr><td>field_type</td><td>varchar</td><td>255</td><td>null</td><td>Tipo de información (búsqueda o <code>label</code>)</td></tr><tr><td>fvalue</td><td>varchar</td><td>255</td><td>null</td><td>Valor efectivo del campo (por ejemplo, el número del documento)</td></tr><tr><td>person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Referencia a la persona<code>person.id</code></td></tr><tr><td>person_version</td><td>int</td><td>11</td><td>not null</td><td>Referencia a la persona<code>people_version.version</code></td></tr></tbody></table>

### gbds.exceptions

La tabla `exceptions`destinada a almacenar la información de cualquier excepción biométrica y su tratamiento. Se describe a continuación:

<table><thead><tr><th width="185">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Clave privada de la base de datos relacional</td></tr><tr><td>aguid</td><td>varchar</td><td>255</td><td>not null</td><td>Excepción almacenada del HBase UGUID</td></tr><tr><td>comments</td><td>varchar</td><td>255</td><td>null</td><td>Cualesquiera comentarios proporcionados al tratar la excepción</td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>timestamp de fecha y hora para la creación de la excepción</td></tr><tr><td>exception_status</td><td>enum</td><td>n/a</td><td>not null</td><td>enum <code>('ANALYSIS', 'DIFFERENT_FINGERS', 'SAME_FINGERS', 'INCORRECT_ENROLL', 'RECOLLECT', 'MERGE_TRANSACTIONS', 'APPROVE', 'REJECT', 'ERROR', 'REFUSED')</code></td></tr><tr><td>target</td><td>enum</td><td>n/a</td><td>not null</td><td>enum<code>('BIOMETRIC','BIOMETRIC_INCONCLUSIVE','BIOMETRIC_MISMATCH','BIOGRAPHIC')</code>;<br>Predeterminado: <code>BIOMETRIC</code></td></tr><tr><td>priority</td><td>tinyint</td><td>1</td><td>not null</td><td>Referencia prioridad de la excepción, con valor por defecto 0</td></tr><tr><td>user</td><td>varchar</td><td>255</td><td>null</td><td>Identificación del usuario responsable del tratamiento de la excepción</td></tr><tr><td>transaction_id_50</td><td>bigint</td><td>20</td><td>not null</td><td>Clave foránea: Referencia a la transacción<code>transactions.id</code></td></tr><tr><td>reference_person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave foránea: Referencia a la persona de referencia<code>people.id</code></td></tr><tr><td>trusted_master_record</td><td>tinyint</td><td>1</td><td>null</td><td>Indicador para uso de los datos de la transacción en análisis futuros</td></tr><tr><td>reference_indexes</td><td>varchar</td><td>1000</td><td>null</td><td></td></tr><tr><td>exception_group_id</td><td>int</td><td>11</td><td>not null</td><td>ID del grupo de excepción al que pertenece</td></tr><tr><td>fusion_score</td><td>int</td><td>11</td><td>not null</td><td>Almacena la puntuación evaluada en la fusión</td></tr><tr><td>fusion_decision</td><td>enum</td><td>n/a</td><td>null</td><td>Almacena la decisión tomada por las reglas de fusión;<br>enum<code>('HIT','NO_HIT','UNCERTAIN','UNCERTAIN_EXPERT','MISMATCH','ERROR')</code></td></tr></tbody></table>

### gbds.exception\_decision

La tabla `exception_decision`destinada a almacenar la información de las decisiones con respecto a una excepción. Se describe a continuación:

<table><thead><tr><th width="110">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>candidate_id</td><td>bigint</td><td>20</td><td>not null</td><td>Identifica al candidato de la excepción;<br>Forma clave primaria con user</td></tr><tr><td>user</td><td>varchar</td><td>100</td><td>not null</td><td>Usuario responsable del tratamiento de la excepción</td></tr><tr><td>locked_timestamp</td><td>datetime</td><td>6</td><td>not null</td><td>Fecha en que la excepción fue asignada</td></tr><tr><td>decision_timestamp</td><td>datetime</td><td>6</td><td>not null</td><td>Fecha en que la decisión fue generada</td></tr><tr><td>decision</td><td>enum</td><td>n/a</td><td>not null</td><td>Decisión tomada para la excepción<br>enum<code>('HIT','NO_HIT','UNCERTAIN','UNCERTAIN_EXPERT','ERROR')</code></td></tr></tbody></table>

### gbds.exception\_candidates

La tabla `exception_candidates`destinada a almacenar la información de los candidatos a una excepción biométrica. Se describe a continuación:

<table><thead><tr><th width="185">Columna</th><th width="102">Tipo</th><th width="100">Tamaño</th><th width="89.0909423828125">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Clave privada de la base de datos relacional</td></tr><tr><td>exception_id</td><td>bigint</td><td>20</td><td>not null</td><td>ID de la excepción</td></tr><tr><td>reference_transaction_id</td><td>bigint</td><td>20</td><td>null</td><td>ID de la transacción de referencia</td></tr><tr><td>query_index</td><td>int</td><td>11</td><td>not null</td><td>Índice de la biometría entrante</td></tr><tr><td>reference_index</td><td>int</td><td>11</td><td>not null</td><td>Índice de la biometría de referencia</td></tr><tr><td>query_quality</td><td>int</td><td>11</td><td>null</td><td>Calidad de la biometría entrante</td></tr><tr><td>reference_quality</td><td>int</td><td>255</td><td>null</td><td>Calidad de la biometría de referencia</td></tr><tr><td>score</td><td>int</td><td>20</td><td>null</td><td>Puntuación de matching correspondiente</td></tr><tr><td>locked_user</td><td>varchar</td><td>20</td><td>null</td><td>Usuario asignado para el tratamiento de la excepción</td></tr><tr><td>locked_timestamp</td><td>datetime</td><td>20</td><td>null</td><td>Fecha en que la excepción fue asignada</td></tr><tr><td>locked_timeout</td><td>datetime</td><td>11</td><td>null</td><td>Fecha en que la excepción será desasignada por inactividad</td></tr><tr><td>decision</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>(HIT, NO_HIT, UNCERTAIN, UNCERTAIN_EXPERT, ERROR)</code></td></tr><tr><td>minutiae</td><td>mediumblob</td><td>1</td><td>n/a</td><td></td></tr></tbody></table>

### gbds.exception\_group

La tabla `exception_group`destinada a almacenar la información de los candidatos a una excepción biométrica. Se describe a continuación:

<table><thead><tr><th width="188.6363525390625">Columna</th><th width="103.54547119140625">Tipo</th><th width="104.3636474609375">Tamaño</th><th width="111.6363525390625">Valor </th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Identifica de forma única el grupo de excepción</td></tr><tr><td>gguid</td><td>varchar</td><td>100</td><td>not null</td><td>UGUID del grupo de excepción almacenado en HBase</td></tr><tr><td>tguid</td><td>varchar</td><td>100</td><td>not null</td><td>UGUID de la transacción almacenada en HBase</td></tr><tr><td>target</td><td>enum</td><td>n/a</td><td>not null</td><td>Tipo de excepción al que el grupo se refiere.<br>enum<code>('BIOMETRIC','BIOMETRIC_INCONCLUSIVE','BIOMETRIC_MISMATCH','BIOGRAPHIC')</code></td></tr><tr><td>decision</td><td>enum</td><td>n/a</td><td>null</td><td>Decisión tomada para el tratamiento de la excepción<br>enum<code>('APPROVE','REJECT','KEEP')</code></td></tr><tr><td>estado</td><td>enum</td><td>n/a</td><td>not null</td><td>Estado en que se encuentra el proceso de tratamiento de la excepción<br>enum<code>('ANALYSIS','PENDING','READY','PROCESSING','DONE','REFUSED','ERROR')</code></td></tr><tr><td>priority</td><td>tinyint</td><td>1</td><td>not null</td><td>Referencia prioridad de la excepción, con valor por defecto 0</td></tr><tr><td>created</td><td>datetime</td><td>6</td><td>not null</td><td>Timestamp de creación del grupo</td></tr><tr><td>updated</td><td>timestamp</td><td>n/a</td><td>not null</td><td>Timestamp de creación </td></tr><tr><td>user</td><td>varchar</td><td>100</td><td>null</td><td>Usuario que trató el grupo</td></tr><tr><td>message</td><td>varchar</td><td>4000</td><td>null</td><td>Mensaje dejado después del tratamiento</td></tr><tr><td>comments</td><td>varchar</td><td>4000</td><td>null</td><td>Comentarios a dejar en caso de lights out</td></tr><tr><td>locked_user</td><td>varchar</td><td>100</td><td>null</td><td>Usuario asignado para el tratamiento del grupo</td></tr><tr><td>locked_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>Fecha en que el grupo de excepción fue asignado</td></tr><tr><td>locked_timeout</td><td>datetime</td><td>6</td><td>null</td><td>Fecha en que la asignación expirará si no es tratada</td></tr><tr><td>decision_parameters</td><td>varchar</td><td>5000</td><td>null</td><td>Parámetros de decisión utilizados (id, valores y labels)</td></tr><tr><td>new_tguid</td><td>varchar</td><td>100</td><td>null</td><td></td></tr><tr><td>refused_status</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('CREATED','REMOVED','READY_TO_RESEND','SENDING','SENT','ERROR')</code></td></tr><tr><td>refused_new_tguid</td><td>varchar</td><td>100</td><td>null</td><td>TGUID nuevo generado en caso de REFUSED</td></tr><tr><td>lights_out_criteria</td><td>varchar</td><td>5000</td><td>null</td><td>Indica lo que se consideró en el Lights Out<br>EX: {"matchedBiographics":["nombre","fecha de nacimiento","parentesco"]}</td></tr><tr><td>lights_out_status</td><td>enum</td><td>n/a</td><td>null</td><td>enum <code>('READY','ANALYSING','KEEP','AUTO_TREAT','ERROR')</code></td></tr></tbody></table>

### gbds.exception\_group\_organizations

La tabla exception\_group\_organizations está destinada a almacenar información sobre organizaciones relacionadas con un grupo de excepciones.

<table><thead><tr><th width="120">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>exception_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>ID del grupo de excepción;<br>Forma clave primaria con <code>exception_id</code></td></tr><tr><td>exception_id</td><td>bigint</td><td>20</td><td>not null</td><td>ID de la excepción a la que se refiere la organización;<br>Forma clave primaria con <code>exception_group_id</code>;</td></tr><tr><td>organization</td><td>varchar</td><td>100</td><td>not null</td><td>Nombre de la organización</td></tr><tr><td>origin</td><td>enum</td><td>n/a</td><td>not null</td><td>Referencia el tipo de origen de la organización dentro de la excepción<br><code>DEFAULT 'BOTH'</code><br>enum<code>('ENTRANT','REFERENCE','BOTH')</code><br><br><br><br><br><br><br></td></tr></tbody></table>

### gbds.exception\_group\_refused

La tabla `exception_group_refused` destinada a almacenar información sobre los grupos de excepción rechazados y los grupos responsables del rechazo.

<table><thead><tr><th width="110">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>exception_group_id</td><td>bigint</td><td>20</td><td>not nuIl</td><td>ID del grupo de excepción referencia</td></tr><tr><td>refused_exception_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>ID del grupo de excepción rechazado</td></tr></tbody></table>

### gbds.key\_format

La tabla gbds.key\_format está destinada a almacenar las claves y los formatos para validación de clave.

<table><thead><tr><th width="110">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>key_id</td><td>varchar</td><td>255</td><td>not null</td><td>Clave primaria;<br>Define el ID de la clave</td></tr><tr><td>format_type</td><td>enum</td><td>6</td><td>not null</td><td>Patrón <code>ALPHANUMERIC</code><br>enum<code>('TITULO','CPF','ALPHANUMERIC','NUMERIC','ALPHABETIC','REGEX')</code></td></tr><tr><td>regex</td><td>varchar</td><td>20</td><td>null</td><td></td></tr><tr><td>min_length</td><td>int</td><td>20</td><td>null</td><td>Define el tamaño mínimo de la clave</td></tr><tr><td>max_length</td><td>int</td><td>Hasta 4Gb</td><td>null</td><td>Define el tamaño máximo de la clave</td></tr></tbody></table>

### gbds.operation\_log

La tabla gbds.operation\_log se utiliza para almacenar logs de operaciones.

<table><thead><tr><th width="100">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>ID interno de identificación</td></tr><tr><td>guid</td><td>varchar</td><td>100</td><td>null</td><td>Identificador único universal</td></tr><tr><td>user</td><td>varchar</td><td>100</td><td>null</td><td>Usuario responsable de la acción</td></tr><tr><td>log_timestamp</td><td>datetime</td><td>-</td><td>not null</td><td>Fecha de creación del log</td></tr><tr><td>log_type</td><td>enum</td><td>n/a</td><td>not null</td><td>enum('EXCEPTION','EXCEPTION_BIOMETRIC','EXCEPTION_GROUP','TRANSACTION)</td></tr><tr><td>operation</td><td>enum</td><td>n/a</td><td>not null</td><td>enum('UNKNOWN','CONNECT','DISCONNECT','AUTHENTICATE','ENROLL','EXTERNAL_AUTHENTICATE','BATCH_ENROLL','REGISTER_SEARCH','SEARCH','DELETE','GET_RESULT','CLOSE_SESSION','FILTER','COUNT_ANOMALIES','FIND_ANOMALIES','GET_ANOMALY','ASSIGN_ANOMALY','UNASSIGN_ANOMALY','TRUST_ENROLL','GET_TRANSACTION','CHANGE_PRIORITY','ADD_TO_REFERENCE','REMOVE_FROM_REFERENCE','REMOVE_KEYS','GET_PEOPLE_TRANSACTIONS','ANOMALY_ENROLL','GET_EXCEPTION_RESULT','QUALITY_ANALYSIS','REGISTER_ENROLL','STOP_SERVICE','REGISTER_UL_BIOMETRIC','REMOVE_UL_BIOMETRIC','UPDATE_PERSON_BIOMETRIC','DISABLE_PERSON_TRANSACTION','CREATE_EXCEPTION','CREATE_EXCEPTION_GROUP','PRIORITY_EXCEPTION','PRIORITY_EXCEPTION_GROUP','TREAT_EXCEPTION','TREAT_EXCEPTION_BIOMETRIC','TREAT_EXCEPTION_GROUP','CHANGE_REFUSED_STATUS','RESEND_REFUSED','LIGHTS_OUT')</td></tr><tr><td>estado</td><td>enum</td><td>n/a</td><td>null</td><td>enum('ANALYSIS','READY','PROCESSING','DONE','REFUSED','PENDING','ERROR','ENQUEUED','OK','NOT_FINAL','BIOMETRIC','BIOMETRIC_INCONCLUSIVE','BIOMETRIC_MISMATCH','BIOGRAPHIC','APPROVE','REJECT','LIGHTS_OUT')</td></tr><tr><td>bio_index</td><td>int</td><td>11</td><td>null</td><td>Índice de la biometría</td></tr><tr><td>decision</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('UNCERTAIN','UNCERTAIN_EXPERT','NO_HIT','HIT','MISMATCH','ERROR','APPROVE','REJECT','KEEP','CREATED','REMOVED','READY_TO_RESEND')</code></td></tr><tr><td>message</td><td>varchar</td><td>1000</td><td>null</td><td>Descripción de la operación a la que se refiere la operación</td></tr><tr><td>tguid</td><td>varchar</td><td>100</td><td>null</td><td>Identificador único de la transacción</td></tr><tr><td>pguid</td><td>varchar</td><td>100</td><td>null</td><td>Identificador único del perfil al que se refiere la operación</td></tr><tr><td>kept_tguids</td><td>varchar</td><td>1000</td><td>null</td><td>TGUIDs a ser mantenidos por la operación KEEP del Lights Out</td></tr></tbody></table>

### gbds.apis

El `apis`es utilizado por el GBDS para gestionar varias APIs activas al mismo tiempo.

<table><thead><tr><th width="100">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>api_id</td><td>varchar</td><td>255</td><td>not null</td><td>ID de la instancia de API exclusiva</td></tr><tr><td>nombre de host</td><td>varchar</td><td>255</td><td>not null</td><td>Nombre del host del nodo donde la API se está ejecutando</td></tr><tr><td>port</td><td>int</td><td>11</td><td>not null</td><td>Puerto donde la API se está ejecutando</td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>null</td><td>Tipo de instancia de la API (LEADER, RUNNER o nulo)</td></tr></tbody></table>

Al iniciarse la API, cada API se buscará a sí misma en esta tabla. Si no se encuentra por nombre de host/IP y puerto, se inserta en la tabla con un GUID como *api-id* y *tipo nulo* , lo que significa que no está lista para extracción de calidad. Los cambios aplicados directamente a esta tabla serán analizados cada 15 minutos.

## Tablas latentes no resueltas (UL) <a href="#unsolved-latent-ul-tables" id="unsolved-latent-ul-tables"></a>

Las tablas de Latentes No Resueltas se usan para almacenar información sobre los datos de la UL y los candidatos. Las tablas se describen a continuación.

### gbds.ul

La tabla `ul`fue diseñada para almacenar todos los UL del GBDS y se describe de la siguiente manera:

<table><thead><tr><th width="150">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>uguid</td><td>varchar</td><td>255</td><td>not null</td><td>Clave primaria; UGUID almacenado en HBase</td></tr><tr><td>ul_status</td><td>varchar</td><td>255</td><td>not null</td><td><br><code>UNSOLVED</code>o <code>SOLVED</code>; HBase replica este estado</td></tr><tr><td>creation_time</td><td>timestamp</td><td>4</td><td>not null</td><td><code>current_timestamp</code>por defecto</td></tr><tr><td>person_pguid</td><td>varchar</td><td>255</td><td>null</td><td>PGUID de la persona correspondiente cuando<code>SOLVED</code></td></tr><tr><td>person_tguid</td><td>varchar</td><td>255</td><td>null</td><td>TGUID de la persona correspondiente cuando<code>SOLVED</code></td></tr><tr><td>fragment_id</td><td>varchar</td><td>255</td><td>null</td><td>ID del fragmento original para el fragmento que generó el UL</td></tr><tr><td>fragment_case_id</td><td>varchar</td><td>255</td><td>null</td><td>ID del caso original para el fragmento que generó el UL</td></tr><tr><td>fragment_index</td><td>int</td><td>11</td><td>null</td><td>Índice de fragmentos para el UL. Por defecto, el índice se establece como <code>-1</code>(índice desconocido, cualquier índice)</td></tr><tr><td>analysis_user</td><td>varchar</td><td>255</td><td>null</td><td>Usuario responsable del análisis UL</td></tr><tr><td>analysis_timestamp</td><td>timestamp</td><td>4</td><td>null</td><td>sello de fecha y hora del análisis</td></tr><tr><td>group_guid</td><td>varchar</td><td>255</td><td>not null</td><td>GUID de agrupamiento (para listar ULs vinculados)</td></tr></tbody></table>

### gbds.ul\_candidates

La tabla `ul_candidates` fue diseñada para almacenar los candidatos de cada UL que el GBDS mantiene tras cualquier *COINCIDENCIA LATENTE INVERSA* realizada en inscripciones que generaron una *coincidencia* con un UL, y se describe de la siguiente forma:

<table><thead><tr><th width="110">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor </th><th>Información adicional</th></tr></thead><tbody><tr><td>ul_uguid</td><td>varchar</td><td>255</td><td>not null</td><td>Clave primaria; UL UGUID</td></tr><tr><td>person_pguid</td><td>varchar</td><td>255</td><td>not null</td><td>Clave primaria; PGUID del candidato</td></tr><tr><td>person_tguid</td><td>varchar</td><td>255</td><td>not null</td><td>Clave primaria; TGUID del candidato</td></tr><tr><td>person_index</td><td>int</td><td>11</td><td>not null</td><td>Clave primaria; Dedo índice candidato</td></tr><tr><td>score</td><td>int</td><td>11</td><td>not null</td><td>Puntuación de coincidencia correspondiente para el candidato</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>not null</td><td><code>0</code>por defecto, indica si el candidato fue excluido para ser omitido al realizar operaciones de listado de candidatos</td></tr><tr><td>minutiae</td><td>longblob</td><td>Hasta 4Gb</td><td>null</td><td>Serialización JSON que contiene las minucias correspondientes. Es una lista con la siguiente estructura:<br> - <code>queryIndex</code>, <code>int</code> <br>- <code>referenceIndex</code>,<code>int</code></td></tr></tbody></table>

## Tablas de notificación

Las tablas de notificación se usan para almacenar datos con fines de auditoría, como correos electrónicos, personas que serán notificadas y grupos.

### gbds.notifications

La tabla `gbds.notifications` fue diseñada para almacenar información relacionada con las notificaciones de operaciones del GBDS

<table><thead><tr><th width="100">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Índice interno autoincremental;<br>Clave primaria;</td></tr><tr><td>nguid</td><td>varchar</td><td>40</td><td>not null</td><td>Identificador único de la notificación</td></tr><tr><td>tguid</td><td>varchar</td><td>40</td><td>not null</td><td>Identificador único de la transacción responsable de la notificación</td></tr><tr><td>created</td><td>datetime</td><td>6</td><td>not null</td><td>Sello de fecha y hora de la creación de la notificación</td></tr><tr><td>operation</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('UNKNOWN','CONNECT','DISCONNECT','AUTHENTICATE','ENROLL','EXTERNAL_AUTHENTICATE','BATCH_ENROLL','REGISTER_SEARCH','SEARCH','DELETE','GET_RESULT','CLOSE_SESSION','FILTER','COUNT_ANOMALIES','FIND_ANOMALIES','GET_ANOMALY','ASSIGN_ANOMALY','UNASSIGN_ANOMALY','TRUST_ENROLL','GET_TRANSACTION','CHANGE_PRIORITY','ADD_TO_REFERENCE','REMOVE_FROM_REFERENCE','REMOVE_KEYS','GET_PEOPLE_TRANSACTIONS','ANOMALY_ENROLL','GET_EXCEPTION_RESULT','QUALITY_ANALYSIS','REGISTER_ENROLL','STOP_SERVICE','REGISTER_UL_BIOMETRIC','REMOVE_UL_BIOMETRIC','UPDATE_PERSON_BIOMETRIC','DISABLE_PERSON_TRANSACTION','CREATE_EXCEPTION','CREATE_EXCEPTION_GROUP','PRIORITY_EXCEPTION','PRIORITY_EXCEPTION_GROUP','TREAT_EXCEPTION','TREAT_EXCEPTION_BIOMETRIC','TREAT_EXCEPTION_GROUP','CHANGE_REFUSED_STATUS','RESEND_REFUSED','LIGHTS_OUT')</code></td></tr><tr><td>estado</td><td>varchar</td><td>255</td><td>null</td><td>Estado de la operación descrita en operation</td></tr><tr><td>sender</td><td>varchar</td><td>255</td><td>null</td><td>Módulo responsable de la notificación</td></tr><tr><td>uguid</td><td>varchar</td><td>40</td><td>null</td><td>Identificador del usuario</td></tr><tr><td>pguid</td><td>varchar</td><td>40</td><td>null</td><td>PGUID al que se refiere la operación</td></tr><tr><td>new_tguid</td><td>varchar</td><td>40</td><td>null</td><td>TGUID nuevo generado, por ejemplo, cuando se genera un enroll</td></tr><tr><td>enroll_pguid</td><td>varchar</td><td>40</td><td>null</td><td>-</td></tr><tr><td>treatment</td><td>varchar</td><td>100</td><td>null</td><td>Tratamiento en caso de análisis de Lights Out</td></tr><tr><td>_update</td><td>tinyint</td><td>1</td><td>null</td><td>Bandera de actualización</td></tr><tr><td>trusted</td><td>tinyint</td><td>1</td><td>null</td><td>Bandera de enroll/update confiable</td></tr><tr><td>origin</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('API','GBDS')</code></td></tr><tr><td>additional_data</td><td>mediumblob</td><td>-</td><td>null</td><td>Datos adicionales relevantes (GGUID, comentarios, etc.)</td></tr><tr><td>external_ids</td><td>mediumblob</td><td>-</td><td>null</td><td>IDs externos y sus valores;<br>{"name":"protocol", "key":"000000000"}</td></tr><tr><td>related_external_ids</td><td>mediumblob</td><td>-</td><td>null</td><td>IDs externos relacionados</td></tr><tr><td>kept_tguids</td><td>mediumblob</td><td>-</td><td>null</td><td>TGUIDs a mantener en caso de Lights Out</td></tr></tbody></table>

###

### gbds.notify\_user

La tabla `notify_user` fue diseñada para almacenar los datos del usuario autenticado por el gbds.

<table><thead><tr><th width="100">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; ID exclusivo del usuario.</td></tr><tr><td>username</td><td>varchar</td><td>255</td><td>not null</td><td>nombre de usuario gbds autenticado</td></tr></tbody></table>

### gbds.notify\_group

La tabla `notify_group`fue diseñada para almacenar información de los grupos de notificación.

<table><thead><tr><th width="100">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria;</td></tr><tr><td>name</td><td>varchar</td><td>255</td><td>not null</td><td>Nombre del grupo</td></tr><tr><td>enabled</td><td>tinyint</td><td>1</td><td>not null</td><td>Define si el grupo estará activo o no</td></tr></tbody></table>

### gbds.notify\_group\_email

La tabla `notify_group_email` fue diseñada para almacenar los correos electrónicos de un determinado grupo.

<table><thead><tr><th width="130">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>notify_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; ID del grupo.</td></tr><tr><td>email</td><td>varchar</td><td>255</td><td>not null</td><td>Clave primaria; <br>Correo electrónico que pertenece al grupo</td></tr></tbody></table>

### gbds.notify\_user\_group

La tabla `notify_user_group` fue diseñada para almacenar información de a qué grupo pertenece un determinado usuario.

<table><thead><tr><th width="130">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>notify_user_id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Referencia al usuario<code>notify_user.id</code></td></tr><tr><td>notify_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Referencia al grupo<code>notify_group_email.notify_group.id</code></td></tr></tbody></table>

### gbds.people\_transparency

La tabla `people_transparency` fue diseñada para almacenar información sobre una determinada persona y qué acciones se toman cuando esa persona es consultada.

<table><thead><tr><th width="100">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria;</td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>not null</td><td>Referencia a la persona<code>people.pguid</code></td></tr><tr><td>enabled</td><td>tinyint</td><td>1</td><td>not null</td><td>Referencia a la persona<code>people.pguid</code></td></tr><tr><td>action</td><td>varchar</td><td>255</td><td>null</td><td>Acción a tomar</td></tr></tbody></table>

### gbds.people\_transparency\_group

La tabla `people_transparency_group` fue diseñada para almacenar información sobre los grupos a los que una persona pertenece.

<table><thead><tr><th width="180">Columna</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>people_transparency_id</td><td>bigint</td><td>20</td><td>not null</td><td>Clave primaria; Referencia 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>Clave primaria; Referencia al grupo<code>notify_group_email.notify_group.id</code></td></tr></tbody></table>

## Tablas de configuraciones del GBDS (gbds.settings)

El GBDS utiliza una base de datos relacional para almacenar algunas configuraciones de la API y del GBDS. La tabla de configuraciones es una tabla especial diseñada para controlar determinadas configuraciones del GBDS y de la API del GBDS. Esas configuraciones se almacenan en la `gbds.settings`tabla. La tabla puede contener configuraciones presentes en la API del GBDS, en el GBDS o en ambos, siguiendo el esquema a continuación:

<table><thead><tr><th width="100">Tipo</th><th width="100">Tipo</th><th width="100">Tamaño</th><th width="100">Valor</th><th>Información adicional</th></tr></thead><tbody><tr><td>skey</td><td>varchar</td><td>255</td><td>not null</td><td>Clave primaria. Nombre de la clave del parámetro.</td></tr><tr><td>stype</td><td>varchar</td><td>50</td><td>not null</td><td>Lugar de donde proviene el parámetro. API o GBDS</td></tr><tr><td>svalue</td><td>varchar</td><td>4096</td><td>null</td><td>Valor del parámetro</td></tr><tr><td>description</td><td>varchar</td><td>4096</td><td>null</td><td>Descripción del parámetro</td></tr><tr><td>stimestamp</td><td>datetime</td><td>6</td><td>not null</td><td>Sello de fecha y hora</td></tr><tr><td>host</td><td>varchar</td><td>1024</td><td>null</td><td>Nombre del host de un nodo</td></tr></tbody></table>

Todas las configuraciones encontradas en la tabla serán escritas en el respectivo archivo, `gbdsapi.properties`tanto para la API del GBDS como `application.conf`para el GBDS, cada 15 minutos. Además, todas las configuraciones actualizadas en memoria, tanto en la API como en el GBDS, serán propagadas.

{% hint style="info" %}
El valor del parámetro definido en la `gbds.settings`tabla será propagado a TODOS los nodos.
{% endhint %}

Esta función está controlada por un parámetro de configuración en la tabla, `gbds.rdbSystemConfiguration.enabled`. Este parámetro permitirá la sustitución de los valores de configuración del GBDS y de la API. Establecer el valor del parámetro como `BOTH`hará que las configuraciones del GBDS y de la API sean reemplazadas.

| gbds.settings / Clave de configuración de archivo                     | 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 |

Otras configuraciones pueden colocarse en la tabla `gbds.settings`en rdb y todas serán escritas en la API o en el archivo GBDS, de acuerdo con el tipo de configuración. Sin embargo, las recargas de memoria en tiempo de ejecución no se realizarán para esas nuevas configuraciones, solo después del reinicio de la API y/o del GBDS.
