# Base de datos relacional GBDS 5

## Introducción

Este manual describe todas las tablas, esquemas e informaciones de las bases de datos relacionales de GBDS. 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 de 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 de 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 se destina a almacenar los índices de todas las personas almacenadas en la base de datos GBDS y se describe de la siguiente forma:

<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 se incluya cuando se realicen operaciones de listado</td></tr></tbody></table>

### gbds.people\_version

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

<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>marca de tiempo 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 ser ejecutado 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 GBDS

| Columna     | Tipo    | Tamaño | Valor    | Informaciones Adicionales                                 |
| ----------- | ------- | ------ | -------- | --------------------------------------------------------- |
| 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 se destina 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>Informaciones Adicionales</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>marca de tiempo 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>marca de tiempo 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 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 coincidencia 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 de la coincidencia 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 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>Indica 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>Indica 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 digitales 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 digitales 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 jengibre 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 digital</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 de GBDS que procesó la transacción</td></tr></tbody></table>

### gbds.transaction\_fields

La `transaction_fields`tabla tiene como objetivo almacenar la información sobre las informaciones de calidad y vincularlas a las informaciones no biométricas 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`       se destina a almacenar la información no biométrica de una persona, estando vinculada a las `transaction`tablas `people_version`. Se describe de la siguiente forma:

<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>Informaciones Adicionales</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`se destina 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>Informaciones Adicionales</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>Cualquier comentario proporcionado al tratar la excepción</td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>marca de tiempo 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 a la prioridad de la excepción, con valor predeterminado 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>Bandera para el 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`se destina 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>Informaciones Adicionales</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 se generó la decisión</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`se destina 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>Informaciones Adicionales</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`se destina 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>Informaciones Adicionales</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 se refiere el grupo.<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>status</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 a la prioridad de la excepción, con valor predeterminado 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 que deben dejarse 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 se trata</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 etiquetas)</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>Nuevo TGUID 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 Lights Out<br>Ej.: {"matchedBiographics":["nombre","fecha de nacimiento","filiación"]}</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 se destina 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>Informaciones Adicionales</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>Refiere al 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` se destina 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>Informaciones Adicionales</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 de 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 se destina a almacenar las claves y los formatos para la validación de claves.

<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>Informaciones Adicionales</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>Predeterminado <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>Up to 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 registros 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>Informaciones Adicionales</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 registro</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>status</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 que se mantendrán mediante la operación KEEP de Lights Out</td></tr></tbody></table>

### gbds.apis

El `apis`es usado por 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>Informaciones Adicionales</th></tr></thead><tbody><tr><td>api_id</td><td>varchar</td><td>255</td><td>not null</td><td>ID exclusivo de instancia de API</td></tr><tr><td>hostname</td><td>varchar</td><td>255</td><td>not null</td><td>Nombre del host del nodo donde se está ejecutando la API</td></tr><tr><td>port</td><td>int</td><td>11</td><td>not null</td><td>Puerto donde se está ejecutando la API</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 iniciar la API, cada API buscará su propia entrada 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 la extracción de calidad. Los cambios aplicados directamente a esta tabla se analizarán 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 Resueltos 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`está diseñada para almacenar todas las UL de 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>Informaciones Adicionales</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ó la 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ó la UL</td></tr><tr><td>fragment_index</td><td>int</td><td>11</td><td>null</td><td>Índice de fragmentos para la UL. Por defecto, el índice se define 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 de la UL</td></tr><tr><td>analysis_timestamp</td><td>timestamp</td><td>4</td><td>null</td><td>marca de tiempo del análisis</td></tr><tr><td>group_guid</td><td>varchar</td><td>255</td><td>not null</td><td>GUID de agrupación (para listar UL vinculadas)</td></tr></tbody></table>

### gbds.ul\_candidates

La tabla `ul_candidates` está diseñada para almacenar los candidatos de cada UL que GBDS mantiene después de cualquier *CORRESPONDENCIA LATENTE INVERSA* realizada en inscripciones que generaron una *correspondencia* con una UL, y se describe de la siguiente manera:

<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>Informaciones Adicionales</th></tr></thead><tbody><tr><td>ul_uguid</td><td>varchar</td><td>255</td><td>not null</td><td>Clave primaria; UGUID de la UL</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; índice del candidato</td></tr><tr><td>score</td><td>int</td><td>11</td><td>not null</td><td>Puntuación de matching 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 excluirse al realizar operaciones de listado de candidatos</td></tr><tr><td>minutiae</td><td>longblob</td><td>Up to 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` está diseñada para almacenar información relacionada con las notificaciones de operaciones de 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>Informaciones Adicionales</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>Marca de tiempo 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>status</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>Nuevo TGUID generado, por ejemplo, cuando 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 el caso de análisis de Lights Out</td></tr><tr><td>_update</td><td>tinyint</td><td>1</td><td>null</td><td>Flag de actualización</td></tr><tr><td>trusted</td><td>tinyint</td><td>1</td><td>null</td><td>Flag de truted enroll/update</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>TGUID que se mantendrán en caso de Lights Out</td></tr></tbody></table>

###

### gbds.notify\_user

La tabla `notify_user` está diseñada para almacenar los datos del usuario autenticado por 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>Informaciones Adicionales</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 autenticado de gbds</td></tr></tbody></table>

### gbds.notify\_group

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

<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>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` está diseñada para almacenar los correos electrónicos de un grupo determinado.

<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>Informaciones Adicionales</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` está 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>Informaciones Adicionales</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` está diseñada para almacenar información sobre una determinada persona y qué acciones se toman cuando se busca a esa persona.

<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>Informaciones Adicionales</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` está diseñada para almacenar información sobre los grupos a los que pertenece una persona.

<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>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 configuración de GBDS (gbds.settings)

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

<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>Informaciones Adicionales</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>Marca de tiempo</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 se escribirán en el archivo correspondiente, `gbdsapi.properties`tanto para la API de GBDS como `application.conf`para GBDS, cada 15 minutos. Además, todas las configuraciones actualizadas en memoria, tanto en la API como en GBDS, se propagarán.

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

Esta funcionalidad 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 de GBDS y de la API. Establecer el valor del parámetro como `BOTH`hará que se sustituyan las configuraciones de GBDS y de la API.

| 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.service.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 se escribirán 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 estas nuevas configuraciones, solo después de reiniciar la API y/o 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/gbs/es/integracion-de-gbds/base-de-datos-relacional-gbds-5.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.
