# Base de datos relacional GBDS 4

## Introducción

Este manual describe todas las tablas, esquemas e informaciones de las bases de datos relacionales de GBDS 4.x. 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 Resueltos (UL);
* Las tablas de Notificación;
* Las tablas de configuración 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 está 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>no nulo</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>no nulo</td><td>UGUID personal almacenado en HBase</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>nulo</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 está 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>no nulo</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>no nulo</td><td>Referencia a la persona<code>gbds.people.id</code></td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>nulo</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>nulo</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>nulo</td><td>Define si una versión de una persona es elegible para transacciones de registro maestro</td></tr></tbody></table>

### gbds.transactions\_ref

La `transactions`tabla está destinada a almacenar los índices de todas las transacciones 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>no nulo</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>no nulo</td><td><p>UGUID de la transacción almacenada en HBase</p><h4 id="gbds.transactions"><br></h4></td></tr></tbody></table>

### gbds.transactions

La `transactions`tabla está 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>no nulo</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>no nulo</td><td>Referencia a la transacción<code>transactions_ref.tguid</code></td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>nulo</td><td>UGUID de la persona almacenada en HBase</td></tr><tr><td>active</td><td>tinyint</td><td>1</td><td>no nulo</td><td>Define si una versión de una persona es elegible para transacciones del Registro Maestro</td></tr><tr><td>finger_quality_extracted</td><td>tinyint</td><td>1</td><td>nulo</td><td>Falso si las huellas digitales pueden extraerse</td></tr><tr><td>face_quality_extracted</td><td>tinyint</td><td>1</td><td>nulo</td><td>Falso si el rostro puede extraerse en segundo plano. Verdadero si ya ha sido extraído.</td></tr><tr><td>created</td><td>datetime</td><td>6</td><td>nulo</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>nulo</td><td>timestamp de fecha y hora de la última modificación de la transacción</td></tr><tr><td>enroll_status</td><td>varchar</td><td>255</td><td>nulo</td><td>Estado de inscripción (como <code>ENQUEUED</code>, <code>PROCESSING</code>, <code>FAILED</code>, y otros)</td></tr><tr><td>quality_status</td><td>varchar</td><td>255</td><td>nulo</td><td>Estado del análisis de calidad (como <code>OK</code>, <code>PENDING</code>, <code>APPROVED</code>, y otros)</td></tr><tr><td>extraction_time</td><td>varchar</td><td>255</td><td>nulo</td><td>Tiempo transcurrido para extracciones de plantillas</td></tr><tr><td>extraction_quality</td><td>varchar</td><td>255</td><td>nulo</td><td>Tiempo transcurrido para extracciones de calidad</td></tr><tr><td>match_time</td><td>int</td><td>11</td><td>nulo</td><td>Tiempo de correspondencia transcurrido para esta transacción</td></tr><tr><td>total_time</td><td>int</td><td>11</td><td>nulo</td><td>Operación total menos tiempo de espera en cola</td></tr><tr><td>type</td><td>varchar</td><td>20</td><td>nulo</td><td>Tipo de transacción. Enum: <code>ENROLL</code>, <code>UPDATE</code>, <code>VERIFY</code>,<code>IDENTIFY</code></td></tr><tr><td>fingerprint_global_quality</td><td>int</td><td>11</td><td>nulo</td><td>Puntuación de calidad global de la huella digital</td></tr><tr><td>global_quality</td><td>int</td><td>11</td><td>nulo</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>nulo</td><td>ID de la API que realizará o realizó la extracción de calidad</td></tr><tr><td>latent</td><td>tinyint</td><td>1</td><td>nulo</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>nulo</td><td>Indica si la transacción es una búsqueda UL</td></tr><tr><td>api_id</td><td>varchar</td><td>255</td><td>nulo</td><td>El ID de la instancia de la API que recibió la transacción</td></tr><tr><td>num_fingers</td><td>int</td><td>11</td><td>nulo</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>nulo</td><td>El número de imágenes de rostro en la transacción (0 o 1)</td></tr><tr><td>gbds_version</td><td>varchar</td><td>255</td><td>no nulo</td><td>Versión de GBDS que procesó la transacción</td></tr><tr><td>ginger_extractor_type</td><td>enum</td><td>n/a</td><td>nulo</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></tbody></table>

### gbds.transaction\_fields

La `transaction_fields`tabla tiene como objetivo almacenar la información sobre la información de 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>no nulo</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>nulo</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>nulo</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>nulo</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>no nulo</td><td>Id de la transacción. Referencia a<code>transaction.id</code></td></tr></tbody></table>

### gbds.transaction\_fingerprint\_quality

Las columnas de la tabla siguiente son dinámicas, de acuerdo con la extracción de calidad. Si ocurre alguna edición de los campos en versiones futuras, los datos aquí pueden quedar desactualizados por un momento.

| Columna           | Tipo    | Tamaño | Valor   |
| ----------------- | ------- | ------ | ------- |
| transaction\_id   | bigint  | 20     | no nulo |
| idx               | int     | 11     | no nulo |
| image\_quality    | int     | 11     | nulo    |
| template\_quality | int     | 11     | nulo    |
| minutiae\_count   | int     | 11     | nulo    |
| blank             | varchar | 100    | nulo    |
| contrast          | varchar | 100    | nulo    |
| fingerArea        | varchar | 100    | nulo    |
| fingerCenterX     | varchar | 100    | nulo    |
| fingerCenterY     | varchar | 100    | nulo    |
| fingerExtentX     | varchar | 100    | nulo    |
| fingerExtentY     | varchar | 100    | nulo    |
| hasjoint          | varchar | 100    | nulo    |
| \_\_index         | varchar | 100    | nulo    |
| marginBiteEast    | varchar | 100    | nulo    |
| marginBiteNorth   | varchar | 100    | nulo    |
| marginBiteSouth   | varchar | 100    | nulo    |
| marginBiteWest    | varchar | 100    | nulo    |
| nfiq              | varchar | 100    | nulo    |
| orientation       | varchar | 100    | nulo    |
| sizeX             | varchar | 100    | nulo    |
| sizeY             | varchar | 100    | nulo    |

### gbds.transaction\_face\_quality

Las columnas de la tabla siguiente son dinámicas, de acuerdo con la extracción de calidad. Si ocurre alguna edición de los campos en versiones futuras, los datos aquí pueden quedar desactualizados por un momento.

<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>no nulo</td></tr><tr><td>idx</td><td>int</td><td>11</td><td>no nulo</td></tr><tr><td>image_quality</td><td>int</td><td>11</td><td>nulo</td></tr><tr><td>template_quality</td><td>int</td><td>11</td><td>nulo</td></tr><tr><td>autoBrightness</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>bgBelowPictureQuality</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>bgBlueStandardDeviation</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>bgDarknessQuality</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>bgGreenStandardDeviation</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>bgRedStandardDeviation</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>bgUniformityQuality</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>blurCompliance</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>busyBackground</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>busyBackgroundInCropped</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>cropContainmentError</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>eyesLookDown</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>eyesLookLeft</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>eyesLookRight</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>eyesLookUp</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>eyesObstruction</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>eyesTooClosed</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>eyesTooOpen</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>faceDown</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>faceLeft</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>faceObstruction</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>faceOrientationPitchCompliance</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>faceOrientationRollAngle</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>faceOrientationYawCompliance</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>faceRight</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>faceUp</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>glasses</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>grayscaleSpan</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>hat</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>heavyGlasses</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>icaoCompliance</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>leftEyeX</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>leftEyeY</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>mouthObstruction</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>mouthOpen</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>obstruction</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>openMouth</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>pictureHeight</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>pictureWidth</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>pixelated</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>redEye</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>result</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>rightEyeX</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>rightEyeY</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>saturated</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>saturationGrayscaleDistribGrade</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>saturationNumGrayTones</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>saturationOverExposure</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>shadows</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>skinColorCompliance</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>smile</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>smilingMouth</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>spoof</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>spoofGrade</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>tiltAngle</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>tooDark</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>unnaturalSkinColor</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>visibleTeeth</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>wrongFacePose</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>wrongShoulderPoseLeft</td><td>varchar</td><td>100</td><td>nulo</td></tr><tr><td>wrongShoulderPoseRight</td><td>varchar</td><td>100</td><td>nulo</td></tr></tbody></table>

### gbds.biometrics

La tabla `biometrics`está destinada a almacenar los datos biométricos de una persona, estando vinculada a las tablas `transaction`y al `people_version`sistema. 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>no nulo</td><td>Clave primaria; Clave privada de la base de datos relacional</td></tr><tr><td>idx</td><td>int</td><td>11</td><td>nulo</td><td>Índice de la biometría actual</td></tr><tr><td>quality</td><td>int</td><td>11</td><td>nulo</td><td>Puntuación de calidad para la plantilla biométrica extraída</td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>nulo</td><td>Modalidad de la biometría actual</td></tr><tr><td>person_id</td><td>bigint</td><td>20</td><td>no nulo</td><td>Referencia a la persona<code>gbds.people.id</code></td></tr><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>no nulo</td><td>Referencia a la transacción<code>transactions_ref.id</code></td></tr><tr><td>person_version</td><td>bigint</td><td>11</td><td>no nulo</td><td>Referencia a la persona<code>people_version.version</code></td></tr></tbody></table>

### gbds.fields

La tabla `fields`       está 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>no nulo</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>nulo</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>type</td><td>varchar</td><td>255</td><td>nulo</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>nulo</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>no nulo</td><td>Referencia a la persona<code>person.id</code></td></tr><tr><td>person_version</td><td>int</td><td>11</td><td>no nulo</td><td>Referencia a la persona<code>people_version.version</code></td></tr></tbody></table>

### gbds.exceptions

La tabla `exceptions`está 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>no nulo</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>no nulo</td><td>Excepción almacenada del HBase UGUID</td></tr><tr><td>comments</td><td>varchar</td><td>255</td><td>nulo</td><td>Cualquier comentario proporcionado al tratar la excepción</td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>nulo</td><td>timestamp de fecha y hora para la creación de la excepción</td></tr><tr><td>status</td><td>varchar</td><td>255</td><td>no nulo</td><td>El estado actual de la excepción se define si está tratada o pendiente</td></tr><tr><td>user</td><td>varchar</td><td>255</td><td>nulo</td><td>Identificación del usuario responsable del tratamiento de la excepción</td></tr><tr><td>reference_person_id</td><td>bigint</td><td>20</td><td>no nulo</td><td>Clave externa: Referencia a la persona de referencia<code>people.id</code></td></tr><tr><td>entrant_person_id</td><td>bigint</td><td>20</td><td>no nulo</td><td>Clave externa: Referencia a la persona entrante<code>people.id</code></td></tr><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>no nulo</td><td>Clave externa: Referencia a la transacción<code>transactions_ref.id</code></td></tr><tr><td>reference_person_version</td><td>int</td><td>11</td><td>no nulo</td><td>Clave externa: Referencia a la persona de referencia<code>people_version.version</code></td></tr><tr><td>entrant_person_version</td><td>int</td><td>11</td><td>no nulo</td><td>Clave externa: Referencia a la persona entrante<code>people_version.version</code></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>Información Adicional</th></tr></thead><tbody><tr><td>api-id</td><td>varchar</td><td>255</td><td>no nulo</td><td>ID de la instancia de API exclusiva</td></tr><tr><td>hostname</td><td>varchar</td><td>255</td><td>no nulo</td><td>Nombre de host del nodo donde se está ejecutando la API</td></tr><tr><td>port</td><td>int</td><td>11</td><td>no nulo</td><td>Puerto donde se está ejecutando la API</td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>nulo</td><td>Tipo de instancia de la API (LEADER, RUNNER o nulo)</td></tr></tbody></table>

Al iniciar la API, cada API buscará por sí misma en esta tabla. Si no se encuentra con 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 de latentes no resueltos (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`ha sido 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>Información Adicional</th></tr></thead><tbody><tr><td>uguid</td><td>varchar</td><td>255</td><td>no nulo</td><td>Clave primaria; UGUID almacenado en HBase</td></tr><tr><td>ul_status</td><td>varchar</td><td>255</td><td>no nulo</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>no nulo</td><td><code>current_timestamp</code>por defecto</td></tr><tr><td>person_pguid</td><td>varchar</td><td>255</td><td>nulo</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>nulo</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>nulo</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>nulo</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>nulo</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>nulo</td><td>Usuario responsable del análisis de UL</td></tr><tr><td>analysis_timestamp</td><td>timestamp</td><td>4</td><td>nulo</td><td>timestamp de fecha y hora del análisis</td></tr><tr><td>group_guid</td><td>varchar</td><td>255</td><td>no nulo</td><td>GUID de agrupación (para listar UL vinculadas)</td></tr></tbody></table>

### gbds.ul\_candidates

La tabla `ul_candidates` ha sido 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>Información Adicional</th></tr></thead><tbody><tr><td>ul_uguid</td><td>varchar</td><td>255</td><td>no nulo</td><td>Clave primaria; UGUID de la UL</td></tr><tr><td>person_pguid</td><td>varchar</td><td>255</td><td>no nulo</td><td>Clave primaria; PGUID del candidato</td></tr><tr><td>person_tguid</td><td>varchar</td><td>255</td><td>no nulo</td><td>Clave primaria; TGUID del candidato</td></tr><tr><td>person_index</td><td>int</td><td>11</td><td>no nulo</td><td>Clave primaria; Dedo índice candidato</td></tr><tr><td>score</td><td>int</td><td>11</td><td>no nulo</td><td>Puntuación de matching correspondiente para el candidato</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>no nulo</td><td><code>0</code>por defecto, indica si el candidato fue eliminado para ser excluido al realizar operaciones de listado de candidatos</td></tr><tr><td>minutiae</td><td>longblob</td><td>Hasta 4Gb</td><td>nulo</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.notify\_user

La tabla `notify_user` ha sido 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>Información Adicional</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>no nulo</td><td>Clave primaria; ID exclusivo del usuario.</td></tr><tr><td>username</td><td>varchar</td><td>255</td><td>no nulo</td><td>nombre de usuario gbds autenticado</td></tr></tbody></table>

### gbds.notify\_group

La tabla `notify_group`ha sido 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>no nulo</td><td>Clave primaria;</td></tr><tr><td>name</td><td>varchar</td><td>255</td><td>no nulo</td><td>Nombre del grupo</td></tr><tr><td>enabled</td><td>tinyint</td><td>1</td><td>no nulo</td><td>Define si el grupo estará activo o no</td></tr></tbody></table>

### gbds.notify\_group\_email

La tabla `notify_group_email` ha sido 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>no nulo</td><td>Clave primaria; ID del grupo.</td></tr><tr><td>email</td><td>varchar</td><td>255</td><td>no nulo</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` ha sido 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>no nulo</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>no nulo</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` ha sido 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>no nulo</td><td>Clave primaria;</td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>no nulo</td><td>Referencia a la persona<code>people.pguid</code></td></tr><tr><td>enabled</td><td>tinyint</td><td>1</td><td>no nulo</td><td>Referencia a la persona<code>people.pguid</code></td></tr><tr><td>action</td><td>varchar</td><td>255</td><td>nulo</td><td>Acción a tomar</td></tr></tbody></table>

### gbds.people\_transparency\_group

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

<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>no nulo</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>no nulo</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 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 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>no nulo</td><td>Clave primaria. Nombre de la clave de parámetro.</td></tr><tr><td>stype</td><td>varchar</td><td>50</td><td>no nulo</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>nulo</td><td>Valor del parámetro</td></tr><tr><td>description</td><td>varchar</td><td>4096</td><td>nulo</td><td>Descripción del parámetro</td></tr><tr><td>stimestamp</td><td>datetime</td><td>6</td><td>no nulo</td><td>Marca de tiempo</td></tr><tr><td>host</td><td>varchar</td><td>1024</td><td>nulo</td><td>Nombre de host de un nodo</td></tr></tbody></table>

Todas las configuraciones encontradas en la tabla se escribirán en el respectivo archivo, `gbdsapi.properties`tanto para la API de 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 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 del GBDS y de la API. Definir el valor del parámetro como `BOTH`hará que las configuraciones del GBDS y de la API sean sustituidas.

| 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 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 el 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-4.md?ask=<question>
```

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

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