GBDS Relational Databases

Introduction

This manual describes all GBDS relational databases tables, schemas, and information. GBDS uses a relational database to store the metadata about people, transactions, notification groups, setting overrides, and exceptions.

The document is divided into four sections that describe:

General tables

The general tables are tables that retain vital information for GBDS operation, such as exceptions, people information, transaction information, and others. Those tables are described below.

gbds.people

The people table is intended to store the indexes for all people stored in GBDS database, and is described as follows:

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary key; Relational database private key

pguid

varchar

255

not null

HBase stored person UGUID

deleted

tinyint

1

null

Indicates whether the candidate was deleted to be excluded when performing candidates listing operations

gbds.people_version

The people_version table is intended to store the information about the last changes in a person's register, and is described as follows:

Column
Type
Size
Value
Additional Information

version

int

11

not null

Primary key; Version index (incremental from the first change)

person_id

bigint

20

not null

Reference to person's gbds.people.id

_timestamp

datetime

6

null

Timestamp for the current version of a person

deleted

tinyint

1

null

Indicates whether the candidate was deleted to be excluded when performing candidates listing operations

active

tinyint

1

null

Defines if a version of a people is elegible for Master Record transactions

gbds.transactions_ref

The transactions table is intended to store the indexes for all transactions stored in GBDS database, and is described as follows:

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary key; Relational database private key

tguid

varchar

255

not null

HBase stored transaction UGUID

gbds.transactions

The transactions table is intended to store information about quality analysis of the biometric data for a transaction.

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary key; Relational database private key

tguid

varchar

255

not null

Reference to transaction's transactions_ref.tguid

pguid

varchar

255

null

HBase stored person UGUID

active

tinyint

1

not null

Defines whether a version of a person is elegible for Master Record transactions

finger_quality_extracted

tinyint

1

null

False if the fingerprints can be extracted

face_quality_extracted

tinyint

1

null

False if the face can be extracted in the background. True if already extracted

created

datetime

6

null

Transaction creation timestamp

updated

datetime

6

null

Transaction last modification timestamp

enroll_status

varchar

255

null

Status of the enroll (as ENQUEUED, PROCESSING, FAILED, and others)

quality_status

varchar

255

null

Status of the quality analysis (as OK, PENDING, APPROVED, and others)

extraction_time

varchar

255

null

Elapsed time for template extractions

extraction_quality

varchar

255

null

Elapsed time for quality extractions

match_time

int

11

null

Elapsed match time for this transaction

total_time

int

11

null

Total operation minus queue waiting time

type

varchar

20

null

Transaction type. Enum: ENROLL, UPDATE, VERIFY, IDENTIFY

fingerprint_global_quality

int

11

null

Fingerprint global quality score

global_quality

int

11

null

Profile global quality score

quality_extraction_api_id

varchar

255

null

API id that will perform or performed quality extraction

latent

tinyint

1

null

Flags whether the transaction is a latent search

ul

tinyint

1

null

Flags whether the transaction is a UL search

api_id

varchar

255

null

The ID of the API instance that received the transaction

num_fingers

int

11

null

The number of fingerprints in the transaction

num_faces

int

11

null

The number of face images in the transaction (0 or 1)

gbds_version

varchar

255

not null

GBDS version that processed the transaction

ginger_extractor_type

enum

n/a

null

Type of ginger extractor used for the transaction. Enum: GRIAULE_FAST, GRIAULE_BASIC, GRIAULE_2020, GRIAULE_2024, GRIAULE_2018.

gbds.transaction_fields

The transaction_fields table is intended to store the information about the quality information and link it with the non-biometric information of the fields table.

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary key; Relational database private key

fkey

varchar

255

null

Field key describing the contained information (e.g. whether it is a blood type, mother's name, birth date, document, etc) Reference to fields.fkey

type

varchar

255

null

Type of the information (search or label) Reference to fields.type

fvalue

varchar

255

null

Field effective value (e.g. the document number) Reference to fields.fvalue

transaction_id

bigint

20

not null

Id of the transaction. Reference to transaction.id

gbds.transaction_fingerprint_quality

Column
Type
Size
Value

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

Column
Type
Size
Value

transaction_id

bigint

20

not null

idx

int

11

not null

image_quality

int

11

null

template_quality

int

11

null

autoBrightness

varchar

100

null

bgBelowPictureQuality

varchar

100

null

bgBlueStandardDeviation

varchar

100

null

bgDarknessQuality

varchar

100

null

bgGreenStandardDeviation

varchar

100

null

bgRedStandardDeviation

varchar

100

null

bgUniformityQuality

varchar

100

null

blurCompliance

varchar

100

null

busyBackground

varchar

100

null

busyBackgroundInCropped

varchar

100

null

cropContainmentError

varchar

100

null

eyesLookDown

varchar

100

null

eyesLookLeft

varchar

100

null

eyesLookRight

varchar

100

null

eyesLookUp

varchar

100

null

eyesObstruction

varchar

100

null

eyesTooClosed

varchar

100

null

eyesTooOpen

varchar

100

null

faceDown

varchar

100

null

faceLeft

varchar

100

null

faceObstruction

varchar

100

null

faceOrientationPitchCompliance

varchar

100

null

faceOrientationRollAngle

varchar

100

null

faceOrientationYawCompliance

varchar

100

null

faceRight

varchar

100

null

faceUp

varchar

100

null

glasses

varchar

100

null

grayscaleSpan

varchar

100

null

hat

varchar

100

null

heavyGlasses

varchar

100

null

icaoCompliance

varchar

100

null

leftEyeX

varchar

100

null

leftEyeY

varchar

100

null

mouthObstruction

varchar

100

null

mouthOpen

varchar

100

null

obstruction

varchar

100

null

openMouth

varchar

100

null

pictureHeight

varchar

100

null

pictureWidth

varchar

100

null

pixelated

varchar

100

null

redEye

varchar

100

null

result

varchar

100

null

rightEyeX

varchar

100

null

rightEyeY

varchar

100

null

saturated

varchar

100

null

saturationGrayscaleDistribGrade

varchar

100

null

saturationNumGrayTones

varchar

100

null

saturationOverExposure

varchar

100

null

shadows

varchar

100

null

skinColorCompliance

varchar

100

null

smile

varchar

100

null

smilingMouth

varchar

100

null

spoof

varchar

100

null

spoofGrade

varchar

100

null

tiltAngle

varchar

100

null

tooDark

varchar

100

null

unnaturalSkinColor

varchar

100

null

visibleTeeth

varchar

100

null

wrongFacePose

varchar

100

null

wrongShoulderPoseLeft

varchar

100

null

wrongShoulderPoseRight

varchar

100

null

gbds.biometrics

The biometrics table is intended to store the biometrics of a person, being linked to the transaction and the people_version tables. It is described as follows:

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary key; Relational database private key

idx

int

11

null

Index of the current biometric

quality

int

11

null

Quality score for the extracted biometric template

type

varchar

255

null

Modality of the current biometric

person_id

bigint

20

not null

Reference to person's gbds.people.id

transaction_id

bigint

20

not null

Reference to transaction's transactions_ref.id

person_version

bigint

11

not null

Reference to person's people_version.version

gbds.fields

The fields table is intended to store the non-biometric information of a person, being linked to the transaction and the people_version tables. It is described as follows:

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary key; Relational database private key

fkey

varchar

255

null

Field key describing the contained information (e.g. whether it is a blood type, mother's name, birth date, document, etc)

type

varchar

255

null

Type of the information (search or label)

fvalue

varchar

255

null

Field effective value (e.g. the document number)

person_id

bigint

20

not null

Reference to person's person.id

person_version

int

11

not null

Reference to person's people_version.version

gbds.exceptions

The exceptions table is intended to store the information of any biometric exception and its treatment. It is described as follows:

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary key; Relational database private key

aguid

varchar

255

not null

HBase stored exception UGUID

comments

varchar

255

null

Any comments given when treating the exception

_timestamp

datetime

6

null

Timestamp for the creation of the exception

status

varchar

255

not null

Current status of the exception defined whether it is treated or pending

user

varchar

255

null

Identification of the user responsible for treating the exception

reference_person_id

bigint

20

not null

Foreign key: Reference to reference person's people.id

entrant_person_id

bigint

20

not null

Foreign key: Reference to entrant person's people.id

transaction_id

bigint

20

not null

Foreign key: Reference to transaction's transactions_ref.id

reference_person_version

int

11

not null

Foreign key: Reference to reference person's people_version.version

entrant_person_version

int

11

not null

Foreign key: Reference to entrant person's people_version.version

gbds.status

The status table is intended to store the information about nodes and matchers of the GBDS.

Column
Type
Size
Value
Additional Information

guid

varchar

255

not null

Primary Key; Task ID

stimestamp

datetime

6

null

Timestamp for status timeout

people_count

bigint

20

null

Number of people in a node or cluster

ul_count

bigint

20

null

Number of UL in a node or cluster

info

longblob

Up to 4Gb

null

Status information and data

gbds.apis

The apis is used by GBDS to manage multiple APIs active at the same time.

Column
Type
Size
Value
Additional Information

api-id

varchar

255

not null

ID of the unique API instance

hostname

varchar

255

not null

Hostname of the node where the API is running

port

int

11

not null

Port where the API is running

type

varchar

255

null

Type of the API instance (LEADER, RUNNER, or null)

On API boot, each API will look for itself in this table. If not found with hostname/IP and port, it inserts itself in the table with a GUID as api-id and type null, meaning not ready for quality extraction. Changes directly applied to this table will be parsed every 15 minutes.

Unsolved Latent (UL) tables

The Unsolved Latent tables are used to store information about the UL information and candidates. The tables are described below.

gbds.ul

The ul table is designed to store all the GBDS UL's and is described as follows:

Column
Type
Size
Value
Additional Information

uguid

varchar

255

not null

Primary key; HBase stored UGUID

ul_status

varchar

255

not null

UNSOLVED or SOLVED; HBase replicates this status

creation_time

timestamp

4

not null

current_timestamp by default

person_pguid

varchar

255

null

PGUID of the matched person when SOLVED

person_tguid

varchar

255

null

TGUID of the matched person when SOLVED

fragment_id

varchar

255

null

Original fragment ID for the fragment that generated the UL

fragment_case_id

varchar

255

null

Original case ID for the fragment that generated the UL

fragment_index

int

11

null

Fragment index for the UL. By default, the index is set as -1 (index not known, any index)

analysis_user

varchar

255

null

User responsible for the UL analysis

analysis_timestamp

timestamp

4

null

Analysis timestamp

group_guid

varchar

255

not null

Grouping GUID (for listing linked UL's)

gbds.ul_candidate

The ul_candidates table is designed to store the candidates of each UL that GBDS keeps after any REVERSE LATENT MATCH done over enrollments that generated a match against a UL, and is described as follows:

Column
Type
Size
Value
Additional Information

ul_uguid

varchar

255

not null

Primary key; UL UGUID

person_pguid

varchar

255

not null

Primary key; Candidate's PGUID

person_tguid

varchar

255

not null

Primary key; Candidate's TGUID

person_index

int

11

not null

Primary key; Candidate finger index

score

int

11

not null

Matching score for the candidate

deleted

tinyint

1

not null

0 by default, indicates whether the candidate was deleted to be excluded when performing candidates listing operations

minutiae

longblob

Up to 4Gb

null

JSON serialization containing the matched minutiae. It's a list from the following structure: - queryIndex, int - referenceIndex, int

Notification tables

The notification tables are used to store data for auditorship purposes, as e-mails, persons who will be notified, and groups.

gbds.notify_user

The notify_user table is designed to store the data of the gbds authenticated user.

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary Key; User unique ID.

username

varchar

255

not null

authenticated gbds username

gbds.notify_group

The notify_group table is designed to store the notification groups information.

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary Key;

name

varchar

255

not null

Group Name

enabled

tinyint

1

not null

Defines if the group will be active or not

gbds.notify_group_email

The notify_group_email table is designed to store the emails of a given group.

Column
Type
Size
Value
Additional Information

notify_group_id

bigint

20

not null

Primary Key; ID of the group.

email

varchar

255

not null

Primary Key; Email that belongs to the group

gbds.notify_user_group

The notify_user_group table is designed to store the information of which group a given user is part of.

Column
Type
Size
Value
Additional Information

notify_user_id

bigint

20

not null

Primary Key; Reference to user's notify_user.id

notify_group_id

bigint

20

not null

Primary Key; Reference to group's notify_group_email.notify_group.id

gbds.people_transparency

The people_transparency table is designed to store the information about a given person and what actions are taken when this person is searched.

Column
Type
Size
Value
Additional Information

id

bigint

20

not null

Primary Key;

pguid

varchar

255

not null

Reference to person's people.pguid

enabled

tinyint

1

not null

Indicates if the action is on or off for the given person

action

varchar

255

null

Action to be taken

gbds.people_transparency_group

The people_transparency_group table is designed to store the information about which groups a person belongs to.

Column
Type
Size
Value
Additional Information

people_transparency_id

bigint

20

not null

Primary Key; Reference to people_transparency's people_transparency.id

notify_group_id

bigint

20

not null

Primary Key; Reference to group's notify_group_email.notify_group.id

GBDS Settings tables

GBDS uses a relational database to store some settings for the API and GBDS. The settings table is a special table designed to control certain GBDS and GBDS API configurations. These configurations are stored in the gbds.settings table. The table can contain configurations present in GBDS API, GBDS, or both following the schema below:

Type
Type
Size
Value
Additional Information

skey

varchar

255

not null

Primary key. Parameter key name.

stype

varchar

50

not null

Local where is the parameter from. API or GBDS

svalue

varchar

4096

null

Value of the parameter

description

varchar

4096

null

Description of the parameter

stimestamp

datetime

6

not null

Timestamp

host

varchar

1024

null

Hostname of a node

All settings found inside the table will be written in the respective file, gbdsapi.properties for GBDS API and application.conf for GBDS, every 15 minutes. Also, it will propagate all updated configurations on memory in both, API and GBDS.

The parameter value defined at gbds.settings table will propagate to ALL nodes.

This feature is controlled by one configuration parameter in the table, gbds.rdbSystemConfiguration.enabled. This parameter will enable the overwrite of the values of GBDS and API configuration. Setting the parameter value to BOTH will make GBDS and API configurations be overwritten.

gbds.settings / File Configuration Key
type

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

Other configurations can be placed on table gbds.settings on rdb and all will be written on API or GBDS file according to configuration type. But the memory reloads on execution time will not be performed for these new configurations, only after API and/or GBDS are restarted.

Last updated