Skip to main content

Data Model

Clima uses a PostgreSQL relational database version 12.14. The following tables are included in the clima database.

Foreign keys

analytics

ColumnTypePrimary keyForeign key
idinteger✔️
namecharacter varying(100)
codetext
opt_out_codetext

auth_assignment

This table stores the history of the different statuses that each user had and the ones that currently poses (bronze, silver, gold etc).

ColumnTypePrimary keyForeign key
item_namecharacter varying(64)✔️✔️
(auth_assignment_item_name_fkey)

references: auth_item (name)

user_idinteger✔️✔️
(auth_assignment_user_id_fkey)

references: user (id)

created_atinteger

auth_item

ColumnTypePrimary keyForeign key
namecharacter varying(64)✔️
typeinteger
descriptiontext
rule_namecharacter varying(64)✔️
(auth_item_rule_name_fkey)

references: auth_rule (name)

datatext
created_atinteger
updated_atinteger
group_codecharacter varying(64)✔️
(fk_auth_item_group_code)

references: auth_item_group (code)

auth_item_child

ColumnTypePrimary keyForeign key
parentcharacter varying(64)✔️
childcharacter varying(64)✔️

auth_item_group

ColumnTypePrimary keyForeign key
codecharacter varying(64)✔️
namecharacter varying(255)
created_atinteger
updated_atinteger

auth_rule

ColumnTypePrimary keyForeign key
namecharacter varying(64)✔️
datatext
created_atinteger
updated_atcharacter varying(100)

cold_storage_autoaccept

Similar tables: ondemand_autoaccept, service_autoaccept, jupyter_autoaccept.
In HYPATIA a user can create a vm with a specific upper storage limit, according to each user status. However it is possible that some users have higher storage demands. As a solution to the aforementioned problem HYPATIA provides individuals storage volumes that its users can create and attach to a specific vm. This table contains the upper limit of storage (in GBs) that are automatically accepted, according to each status category (bronze, silver and gold) and also the maximum number of storage volumes (autoaccept_number ) that a user is allowed to automatically create.

ColumnTypePrimary keyForeign key
storagedouble precision
user_typecharacter varying(15)
idinteger✔️
autoaccept_numberinteger

cold_storage_limits

Similar tables: machine_compute_limits, ondemand_limits, service_limits, jupyter_limits.
This table stores the maximun number of the different storage volumes (number_of_projects) and the upper limit of storage (in GBs) that a user is able to create (both automatically and after review), according to the status category that the user belongs to (bronze, silver and gold).

ColumnTypePrimary keyForeign key
storagebigint
user_typecharacter varying(15)
idinteger✔️
duration currently not usedinteger
number_of_projectsinteger

cold_storage_request

Similar tables: machine_compute_request, ondemand_request, service_request, jupyter_request_n.
This table stores all submitted requests of a storage volume project. Such requests may include the creation of a new storage volume or every kind of modification that this storage undergoes (for example the modification of its description). Some fields of the table include the request_id , the project's description , the type of the requested storage (hot or cold), etc.

ColumnTypePrimary keyForeign key
idbigint✔️
request_idbigint
storagedouble precision
descriptiontext
additional_resourcestext
typetext
vm_typeinteger
num_of_volumesinteger

configuration

ColumnTypePrimary keyForeign key
reviewer_numinteger
home_pageinteger
privacy_pageinteger
help_pageinteger
schema_urltext

cron_job

This table contains the logs of cron jobs.

ColumnTypePrimary keyForeign key
id_cron_jobinteger✔️
controllercharacter varying(255)
actioncharacter varying(255)
limitinteger
offsetinteger
runningsmallint
successsmallint
started_atinteger
ended_atinteger
last_execution_timedouble precision

email

This table contains information about the email notifications which are sent to HYPATIA users, administrators and moderators. Such notifications may include emails about the submission of a project, information about its progress (whether the project is approved, rejected or modified) and emails about the imminent deletion of a project (30, 15, 5 and 1 days prior to deletion). Administrators and moderators are as well notified, whenever a new user is registered to HYPATIA and also receive information about newly created tickets.

ColumnTypePrimary keyForeign key
idinteger✔️
recipient_ids`integer[]
typetext
sent_attimestamp without time zone
messagetext
project_idinteger

email_events

Similar tables: email_events_admin, email_events_moderator, email_events_user.
Different users are notified for different events. This table contains information about which users are notified for every event category (user_creation, new_project, project_decision etc).

ColumnTypePrimary keyForeign key
idinteger✔️
user_idinteger
user_creationboolean
new_projectboolean
project_decisionboolean
new_ticketboolean
expires_30boolean
expires_15boolean
edit_projectboolean
expires_1boolean
expires_5boolean

email_events_admin

Similar tables: email_events, email_events_moderator, email_events_user.
This table contains information only for the administartors of HYPATIA.

ColumnTypePrimary keyForeign key
idinteger✔️
user_idinteger
user_creationboolean
new_ticketboolean
expires_1boolean
expires_5boolean

email_events_moderator

Similar tables: email_events, email_events_admin, email_events_user.
This table stores information only for the moderators of HYPATIA.

ColumnTypePrimary keyForeign key
idinteger✔️
user_idinteger
new_projectboolean
project_decisionboolean
expires_30boolean
expires_15boolean
expires_1boolean
expires_5boolean

email_events_user

Similar tables: email_events, email_events_admin, email_events_moderator.
This table stores information only about the users of HYPATIA.

ColumnTypePrimary keyForeign key
idinteger✔️
user_idinteger
project_decisionboolean
expires_30boolean
expires_15boolean
expires_1boolean
expires_5boolean

email_verification

This table stores information about the users who have been involved in the email verification process. The verification_token field stores the hash of the verification token that has been sent to the user's email , the expiry indicates the validity period of the token, the status of the token (pending, completed, revoked), etc.

ColumnTypePrimary keyForeign key
idinteger✔️
verification_tokencharacter varying(100)
user_idinteger
created_attimestamp without time zone
emailcharacter varying(128)
expirytimestamp without time zone
statussmallint

hot_volumes

This table includes details about the hot storage volumes. Such information may include the name of the storage volume, the project_id and the vm type that the storage is mounted to, whether it is active or not, etc.

ColumnTypePrimary keyForeign key
idinteger✔️
nametext
project_idbigint
volume_idtext
mountpointtext
accepted_attimestamp without time zone
vm_typeinteger
activeboolean
deleted_attimestamp without time zone
deleted_bytext
vm_idbigint
created_attimestamp without time zone
mult_orderinteger

jupyter_autoaccept

Similar tables: ondemand_autoaccept, service_autoaccept,cold_storage_autoaccept.
This table stores the upper limits of resources (cores, ram)and the maximum number of automatically accepted on-demand notebooks projects (autoaccept_number), that a user can request according to the status that they poses (bronze, silver or gold).

ColumnTypePrimary keyForeign key
coresinteger
ramdouble precision
user_typecharacter varying(15)
idinteger✔️
autoaccept_numberinteger

jupyter_images

This table stores the available server types for on-demand notebooks projects. Currently HYPATIA supports 13 different jupyter images, such as: Base notebook, Minimal notebook, R notebook etc. This table stores the name of the server type (description), its path on dockerhub (image) and whether on not that image uses gpu (gpu)

ColumnTypePrimary keyForeign key
descriptiontext
imagetext
idinteger✔️
gpuboolean

jupyter_limits

Similar tables: cold_storage_limits, machine_compute_limits, service_limits, ondemand_limits.
This table stores the upper limits of resources (cores, ram, duration) and the maximum number of participants (participants), that a user can request according to their status (bronze, silver or gold) during the creation of an on-demand notebooks project, as well as the maximum number of on-demand notebooks projects (number_of_projects) that a user is allowed to create, both automatically and after review.

ColumnTypePrimary keyForeign key
coresinteger
ramdouble precision
user_typecharacter varying(15)
idinteger✔️
durationinteger
number_of_projectsinteger
participantsinteger

jupyter_request_n

Similar tables: cold_storage_request, machine_compute_request, service_request, ondemand_request.
This table stores all submitted requests of an on-demand notebooks project. Such requests may include the creation of a new project or every kind of modification that this project undergoes. This table includes the requested resources of the project (cores, ram), the selected jupyter server type (image), the number of the users participating at the project (participants_number), etc.

ColumnTypePrimary keyForeign key
idbigint✔️
request_idbigint
descriptiontext
containerizedboolean
coresinteger
ramdouble precision
additional_resourcestext
imagetext
image_idbigint
participant_viewtext
participants_numberinteger

jupyter_server

This table stores information about both, active and inactive jupyter servers that exist in HYPATIA platform. Such information includes: the project (project) and the user (created_by), that the server belongs to, whether is active or not (active), the url that the server can be accessed (url), etc.

ColumnTypePrimary keyForeign key
idbigint✔️
manifestcharacter varying(100)
imagetext
projectcharacter varying(100)
server_idcharacter varying(20)
created_attimestamp without time zone
deleted_attimestamp without time zone
created_bytext
deleted_bytext
project_end_datetimestamp without time zone
urltext
activeboolean
expires_ontimestamp without time zone
statecharacter varying(20)
image_idbigint

machine_compute_limits

Similar tables: cold_storage_limits, ondemand_limits, service_limits, jupyter_limits.
This table stores the maximun number of on-demand computation machines projects a user is allowed to create, according to the status category that the user belongs to (bronze, silver and gold).

ColumnTypePrimary keyForeign key
idinteger✔️
user_typecharacter varying(15)
number_of_projectsinteger

machine_compute_request

Similar tables: cold_storage_request, ondemand_request, service_request, jupyter_request_n.
This table stores all submitted requests of an on-demand computation machines project. Such requests include the creation of a new project or every kind of modification that this project undergoes. Every request includes the description of the project, the requested resources (num_of_vms , num_of_cores , ram , storage ), etc.

ColumnTypePrimary keyForeign key
idbigint✔️
descriptiontext
num_of_vmssmallint
num_of_coressmallint
num_of_ipssmallint
ramdouble precision
storagedouble precision
request_idbigint
vm_flavourtext
diskinteger
additional_resourcestext

migration

This table stores a small description and the date of each database migration.

ColumnTypePrimary keyForeign key
versioncharacter varying(180)✔️
apply_timeinteger

notification

This table stores every notification that the users receive through HYPATIA website. It stores notifications about projects' submission, creation amd modification. The fields of this table include the message which is displayed to a list of users (recipient_id), whether a meassage have been read (seen), the timestamp of the notification's creation (created_at), etc.

ColumnTypePrimary keyForeign key
idinteger✔️
recipient_idinteger
messagetext
seenboolean
typeinteger
created_attimestamp without time zone
read_attimestamp without time zone
urltext

ondemand_autoaccept

Similar tables: cold_storage_autoaccept, service_autoaccept, jupyter_autoaccept.
This table stores the upper limits of resources (num_of_jobs, cores, ram) and the maximum number of automatically accepted on-demand computation projects (autoaccept_number), that a user can request according to the status that they poses (bronze, silver or gold).

ColumnTypePrimary keyForeign key
num_of_jobs`integer
coresinteger
ramdouble precision
user_typecharacter varying(15)
idinteger✔️
autoaccept_numberinteger

ondemand_limits

Similar tables: cold_storage_limits, machine_compute_limits, service_limits, jupyter_limits.
This table stores the upper limits of resources (number_of_jobs, cores, ram, duration of each job), that a user can request according to their status (bronze, silver or gold) during the creation of an on-demand computation project, as well as the maximum number of on-demand computation projects (number_of_projects) that a user is allowed to create, both automatically and after review.

ColumnTypePrimary keyForeign key
number_of_jobsinteger
coresinteger
ramdouble precision
user_typecharacter varying(15)
idinteger✔️
durationinteger
number_of_projectsinteger

ondemand_request

Similar tables: cold_storage_request, machine_compute_request, service_request, jupyter_request_n.
This table stores all submitted requests of an on-demand computation project. Such requests may include the creation of a new project or every kind of modification that this project undergoes. This table includes the requested resources of the project (number_of_jobs, cores, ram), whether the project is containerized, any additional_resources needed, etc.

ColumnTypePrimary keyForeign key
idbigint✔️
request_idbigint
descriptiontext
maturitymaturity_type
analysis_typecharacter varying(200)
containerizedboolean
number_of_jobsinteger
coresinteger
ramdouble precision
additional_resourcestext

openstack

This table contains information about openstack.

ColumnTypePrimary keyForeign key
nova_urltext
keystone_urltext
cinder_urltext
neutron_urltext
glance_urltext
tenant_idtext
floating_net_idtext
cred_idtext
cred_secrettext
idinteger✔️
internal_net_idtext

openstack_machines

This table contains information about the openstack vms.

ColumnTypePrimary keyForeign key
nova_urltext
keystone_urltext
cinder_urltext
neutron_urltext
glance_urltext
tenant_idtext
floating_net_idtext
cred_idtext
cred_secrettext
idinteger✔️
internal_net_idtext

pages

This table contains information about the 3 main pages of HYPATIA (home, privacy and help page).

ColumnTypePrimary keyForeign key
idinteger✔️
titletext
contenttext

project

This table stores information about each project. Some indicative fields of the table are the name of the project, its type (24/7 service, on-demand computation, storage volume, on-demand notebooks or on-demand computation machines) and its status (active, expired, deleted, etc). Another important field of the table is the latest_project_request_id that contains the latest project request id which is also stored, according to project's type, in one of the request tables(cold_storage_request, machine_compute_request, ondemand_request, jupyter_request_n or service_request)

ColumnTypePrimary keyForeign key
idbigint✔️
namecharacter varying(200)
statussmallint
latest_project_request_idbigint
pending_request_idbigint
updated_atinteger
project_typesmallint
favoriteboolean
start_datetimestamp without time zone

project_request

This table stores some additional information about each project, regardless its type.

ColumnTypePrimary keyForeign key
idbigint✔️
namecharacter varying(200)
durationinteger
user_numinteger
user_listinteger[]
backup_servicesboolean
viewedboolean
statussmallint
submitted_byinteger
submission_datetimestamp without time zone
assigned_tobigint
project_typesmallint
project_idbigint
approval_datetimestamp without time zone
approved_byinteger
deletion_datetimestamp without time zone
end_datedate
additional_resourcestext
lourosboolean

service_autoaccept

Similar tables: cold_storage_autoaccept, ondemand_autoaccept, jupyter_autoaccept.
This table contains the upper limit of resources (vms , cores , storage , ram ) and the maximum number of 24/7 projects that are automatically accepted (autoaccept_number ), according to each status category (bronze, silver and gold).

ColumnTypePrimary keyForeign key
vmsinteger
coresinteger
ipsinteger
ramdouble precision
storagedouble precision
user_typecharacter varying(15)
idinteger✔️
autoaccept_numberinteger

service_limits

Similar tables: cold_storage_limits, machine_compute_limits, ondemand_limits.
This table stores the upper limits of resources (vms , cores , storage , ram , duration ), that a user can request according to their status (bronze, silver or gold) during the creation of a 24/7 project, as well as the maximum number of 24/7 projects (number_of_projects) that the user is allowed to create, both automatically and after review.

ColumnTypePrimary keyForeign key
vmsinteger
coresinteger
ipsinteger
ramdouble precision
storagedouble precision
user_typecharacter varying(15)
durationinteger
idinteger✔️
number_of_projectsinteger

service_request

Similar tables: cold_storage_request, machine_compute_request, ondemand_request, jupyter_request_n.
This table stores all submitted requests of a 24/7 project. Such requests may include the creation of a new project or every kind of modification that this project undergoes. This table includes the project's requested resources (num_of_vms , num_of_cores , storage , ram), any additional_resources needed, etc.

ColumnTypePrimary keyForeign key
idbigint✔️
namecharacter varying(200)
versioncharacter varying(50)
descriptiontext
urltext
num_of_vmssmallint
num_of_coressmallint
ramdouble precision
storagedouble precision
request_idbigint
trlsmallint
vm_flavourtext
diskinteger
additional_resourcestext

smtp

ColumnTypePrimary keyForeign key
idinteger✔️
encryptiontext
hosttext
usernametext
porttext
passwordtext

ticket_body

ColumnTypePrimary keyForeign key
idinteger✔️
id_headinteger
name_usercharacter varying(255)
texttext
clientinteger
datetimestamp(0) without time zone

ticket_file

ColumnTypePrimary keyForeign key
idinteger✔️
id_bodyinteger✔️

references: ticket_body (id)

fileNamecharacter varying(255)
document_namecharacter varying(255)

ticket_head

ColumnTypePrimary keyForeign key
idinteger✔️
user_idinteger✔️

references: user (id)

departmentcharacter varying(255)
topiccharacter varying(255)
statusinteger
date_updatetimestamp(0) without time zone
pagetext

user

This table stores various information for all registered HYPATIA users, such as their name and surname, their username, whether they are superuser or not, their status (bronze, silver or gold), etc.

ColumnTypePrimary keyForeign key
idinteger✔️
usernamecharacter varying(255)
auth_keycharacter varying(32)
password_hashcharacter varying(255)
confirmation_tokencharacter varying(255)
statuscharacter varying(255)
superadminsmallint
created_atinteger
updated_atinteger
email_confirmedsmallint
namecharacter varying(100)
surnamecharacter varying(100)

user_visit_log

This table stores the history of each user log in to HYPATIA.

ColumnTypePrimary keyForeign key
idinteger✔️
tokencharacter varying(255)
ipcharacter varying(15)
languagecharacter (2)
user_agentcharacter varying(255)
user_idinteger✔️

references: user (id)

visit_timeinteger
browsercharacter varying(30)
oscharacter varying(20)

vm

Similar tables: vm_machines.
This table stores information about the vms that the users created at their 24/7 service projects. Some of the fields stored at this table are the name of the project related to the vm, the user that created the vm (created_by) and whether it is still active.

ColumnTypePrimary keyForeign key
idbigint✔️
ip_addresscharacter varying(100)
ip_idtext
vm_idtext
public_keytext
image_idtext
image_namecharacter varying(100)
request_idinteger
activeboolean
keypair_namecharacter varying(255)
created_byinteger
deleted_byinteger
volume_idtext
created_attimestamp without time zone
deleted_attimestamp without time zone
do_not_delete_diskboolean
windows_unique_idtext
read_win_passwordboolean
project_idbigint
namecharacter varying(200)

vm_machines

Similar tables: vm.
This table stores information about the vms that the users created at their ondemand machines projects. Some of the fields stored at this table are the name of the project related to the vm, the user that created the vm (created_by) and whether it is still active.

ColumnTypePrimary keyForeign key
idbigint✔️
ip_addresscharacter varying(100)
ip_idtext
vm_idtext
public_keytext
image_idtext
image_namecharacter varying(100)
request_idinteger
activeboolean
keypair_namecharacter varying(255)
created_byinteger
deleted_byinteger
volume_idtext
created_attimestamp without time zone
deleted_attimestamp without time zone
do_not_delete_diskboolean
windows_unique_idtext
read_win_passwordboolean
project_idbigint
namecharacter varying(200)