Add DISK_INSTANCE concept to catalogue
This is a DRAFT
Currently, there is a DISK_SYSTEM
table in the catalogue but no DISK_INSTANCE
table. A DISK_SYSTEM
is merely an alias for a DISK_INSTANCE
, so this is needed.
The current DISK_SYSTEM
table has the following schema:
CREATE TABLE DISK_SYSTEM(
DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_DSNM_NN NOT NULL,
FILE_REGEXP VARCHAR(100) CONSTRAINT DISK_SYSTEM_FR_NN NOT NULL,
FREE_SPACE_QUERY_URL VARCHAR(1000) CONSTRAINT DISK_SYSTEM_FSQU_NN NOT NULL,
REFRESH_INTERVAL UINT64TYPE CONSTRAINT DISK_SYSTEM_RI_NN NOT NULL,
TARGETED_FREE_SPACE UINT64TYPE CONSTRAINT DISK_SYSTEM_TFS_NN NOT NULL,
SLEEP_TIME UINT64TYPE CONSTRAINT DISK_SYSTEM_ST_NN NOT NULL,
USER_COMMENT VARCHAR(1000) CONSTRAINT DISK_SYSTEM_UC_NN NOT NULL,
CREATION_LOG_USER_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_CLUN_NN NOT NULL,
CREATION_LOG_HOST_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_CLHN_NN NOT NULL,
CREATION_LOG_TIME UINT64TYPE CONSTRAINT DISK_SYSTEM_CLT_NN NOT NULL,
LAST_UPDATE_USER_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_LUUN_NN NOT NULL,
LAST_UPDATE_HOST_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_LUHN_NN NOT NULL,
LAST_UPDATE_TIME UINT64TYPE CONSTRAINT DISK_SYSTEM_LUT_NN NOT NULL,
CONSTRAINT NAME_PK PRIMARY KEY(DISK_SYSTEM_NAME)
);
Some of these columns actually relate to the DISK_INSTANCE
, so the proposed schema changes both tables:
CREATE TABLE DISK_SYSTEM(
DISK_SYSTEM_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_DSNM_NN NOT NULL,
DISK_INSTANCE_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_DINM_NN NOT NULL,
DISK_INSTANCE_SPACE_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_DISNM_NN NOT NULL,
FILE_REGEXP VARCHAR(100) CONSTRAINT DISK_SYSTEM_FR_NN NOT NULL,
TARGETED_FREE_SPACE UINT64TYPE CONSTRAINT DISK_SYSTEM_TFS_NN NOT NULL,
USER_COMMENT VARCHAR(1000) CONSTRAINT DISK_SYSTEM_UC_NN NOT NULL,
CREATION_LOG_USER_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_CLUN_NN NOT NULL,
CREATION_LOG_HOST_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_CLHN_NN NOT NULL,
CREATION_LOG_TIME UINT64TYPE CONSTRAINT DISK_SYSTEM_CLT_NN NOT NULL,
LAST_UPDATE_USER_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_LUUN_NN NOT NULL,
LAST_UPDATE_HOST_NAME VARCHAR(100) CONSTRAINT DISK_SYSTEM_LUHN_NN NOT NULL,
LAST_UPDATE_TIME UINT64TYPE CONSTRAINT DISK_SYSTEM_LUT_NN NOT NULL,
CONSTRAINT NAME_PK PRIMARY KEY(DISK_SYSTEM_NAME)
);
CREATE TABLE DISK_INSTANCE_SPACE(
DISK_INSTANCE_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_SPACE_DINM_NN NOT NULL,
DISK_INSTANCE_SPACE_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_SPACE_DISNM_NN NOT NULL,
FREE_SPACE_QUERY_URL VARCHAR(1000) CONSTRAINT DISK_INSTANCE_SPACE_FSQU_NN NOT NULL,
REFRESH_INTERVAL UINT64TYPE CONSTRAINT DISK_INSTANCE_SPACE_RI_NN NOT NULL,
LAST_REFRESH_TIME UINT64TYPE CONSTRAINT DISK_INSTANCE_SPACE_LRT_NN NOT NULL,
FREE_SPACE UINT64TYPE CONSTRAINT DISK_INSTANCE_SPACE_TFS_NN NOT NULL,
SLEEP_TIME UINT64TYPE CONSTRAINT DISK_INSTANCE_SPACE_ST_NN NOT NULL,
USER_COMMENT VARCHAR(1000) CONSTRAINT DISK_INSTANCE_SPACE_UC_NN NOT NULL,
CREATION_LOG_USER_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_SPACE_CLUN_NN NOT NULL,
CREATION_LOG_HOST_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_SPACE_CLHN_NN NOT NULL,
CREATION_LOG_TIME UINT64TYPE CONSTRAINT DISK_INSTANCE_SPACE_CLT_NN NOT NULL,
LAST_UPDATE_USER_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_SPACE_LUUN_NN NOT NULL,
LAST_UPDATE_HOST_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_SPACE_LUHN_NN NOT NULL,
LAST_UPDATE_TIME UINT64TYPE CONSTRAINT DISK_INSTANCE_SPACE_LUT_NN NOT NULL,
CONSTRAINT NAME_PK PRIMARY KEY(DISK_INSTANCE_NAME, DISK_INSTANCE_SPACE_NAME)
);
CREATE TABLE DISK_INSTANCE(
DISK_INSTANCE_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_DINM_NN NOT NULL,
USER_COMMENT VARCHAR(1000) CONSTRAINT DISK_INSTANCE_UC_NN NOT NULL,
CREATION_LOG_USER_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_CLUN_NN NOT NULL,
CREATION_LOG_HOST_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_CLHN_NN NOT NULL,
CREATION_LOG_TIME UINT64TYPE CONSTRAINT DISK_INSTANCE_CLT_NN NOT NULL,
LAST_UPDATE_USER_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_LUUN_NN NOT NULL,
LAST_UPDATE_HOST_NAME VARCHAR(100) CONSTRAINT DISK_INSTANCE_LUHN_NN NOT NULL,
LAST_UPDATE_TIME UINT64TYPE CONSTRAINT DISK_INSTANCE_LUT_NN NOT NULL,
CONSTRAINT NAME_PK PRIMARY KEY(DISK_INSTANCE_NAME)
);
Comments regarding the new schema:
- We normalize the
DISK_SYSTEM
schema. Most of the columns have repeated values in the current schema. We retain the hability multiple spaces per DISK_INSTANCE. - In the future we can expand the use of these tables for archive
- Tapeservers with this schema can stop querying the EOS space periodically. When obtaining the DISK_INSTANCE_SPACE from the catalogue, they can check if the refresh interval is expired and if so query the space, which will reduce load on the EOS instance.
- Schema upgrade would need to be done in two releases: Create the
DISK_INSTANCE
andDISK_INSTANCE_SPACE
table andcta-admin
commands, populate it, then change theDISK_SYSTEM
table schema. - In the future we can add the functionality to put down a disk instance temporarily (to be discussed in a future ticket)
Edited by Miguel Barros