schema: use checksum as primary key for config

This commit is contained in:
Alexander Fuhr 2015-06-17 19:02:08 +02:00
parent bc00eefb07
commit d7a816026f
2 changed files with 42 additions and 10 deletions

View File

@ -0,0 +1,36 @@
DROP TABLE director_generated_config_file;
DROP TABLE director_generated_config;
CREATE TABLE director_generated_config (
checksum VARBINARY(20) NOT NULL COMMENT 'SHA1(last_activity_checksum;file_path=checksum;file_path=checksum;...)',
director_version VARCHAR(64) DEFAULT NULL,
director_db_version INT(10) DEFAULT NULL,
duration INT(10) UNSIGNED DEFAULT NULL COMMENT 'Config generation duration (ms)',
last_activity_checksum VARBINARY(20) NOT NULL,
PRIMARY KEY (checksum),
CONSTRAINT director_generated_config_activity
FOREIGN KEY activity_checksum (last_activity_checksum)
REFERENCES director_activity_log (checksum)
ON DELETE RESTRICT
ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE director_generated_config_file (
config_checksum VARBINARY(20) NOT NULL,
file_checksum VARBINARY(20) NOT NULL,
file_path VARCHAR(64) NOT NULL COMMENT 'e.g. zones/nafta/hosts.conf',
CONSTRAINT director_generated_config_file_config
FOREIGN KEY config (config_checksum)
REFERENCES director_generated_config (checksum)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT director_generated_config_file_file
FOREIGN KEY checksum (file_checksum)
REFERENCES director_generated_file (checksum)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
PRIMARY KEY (config_checksum, file_path),
INDEX search_idx (file_checksum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@ -36,16 +36,12 @@ CREATE TABLE director_activity_log (
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE director_generated_config ( CREATE TABLE director_generated_config (
id BIGINT(20) UNSIGNED NOT NULL, checksum VARBINARY(20) NOT NULL COMMENT 'SHA1(last_activity_checksum;file_path=checksum;file_path=checksum;...)',
author VARCHAR(64) NOT NULL,
director_version VARCHAR(64) DEFAULT NULL, director_version VARCHAR(64) DEFAULT NULL,
director_db_version INT(10) DEFAULT NULL, director_db_version INT(10) DEFAULT NULL,
duration INT(10) UNSIGNED DEFAULT NULL COMMENT 'Config generation duration (ms)', duration INT(10) UNSIGNED DEFAULT NULL COMMENT 'Config generation duration (ms)',
last_activity_checksum VARBINARY(20) NOT NULL, last_activity_checksum VARBINARY(20) NOT NULL,
checksum VARBINARY(20) NOT NULL COMMENT 'SHA1(file_path=checksum;file_path=checksum;...)', PRIMARY KEY (checksum),
ctime DATETIME NOT NULL,
PRIMARY KEY (id),
INDEX sort_idx (ctime),
CONSTRAINT director_generated_config_activity CONSTRAINT director_generated_config_activity
FOREIGN KEY activity_checksum (last_activity_checksum) FOREIGN KEY activity_checksum (last_activity_checksum)
REFERENCES director_activity_log (checksum) REFERENCES director_activity_log (checksum)
@ -60,12 +56,12 @@ CREATE TABLE director_generated_file (
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE director_generated_config_file ( CREATE TABLE director_generated_config_file (
config_id BIGINT(20) UNSIGNED NOT NULL, config_checksum VARBINARY(20) NOT NULL,
file_checksum VARBINARY(20) NOT NULL, file_checksum VARBINARY(20) NOT NULL,
file_path VARCHAR(64) NOT NULL COMMENT 'e.g. zones/nafta/hosts.conf', file_path VARCHAR(64) NOT NULL COMMENT 'e.g. zones/nafta/hosts.conf',
CONSTRAINT director_generated_config_file_config CONSTRAINT director_generated_config_file_config
FOREIGN KEY config (config_id) FOREIGN KEY config (config_checksum)
REFERENCES director_generated_config (id) REFERENCES director_generated_config (checksum)
ON DELETE CASCADE ON DELETE CASCADE
ON UPDATE CASCADE, ON UPDATE CASCADE,
CONSTRAINT director_generated_config_file_file CONSTRAINT director_generated_config_file_file
@ -73,7 +69,7 @@ CREATE TABLE director_generated_config_file (
REFERENCES director_generated_file (checksum) REFERENCES director_generated_file (checksum)
ON DELETE RESTRICT ON DELETE RESTRICT
ON UPDATE RESTRICT, ON UPDATE RESTRICT,
PRIMARY KEY (config_id, file_path), PRIMARY KEY (config_checksum, file_path),
INDEX search_idx (file_checksum) INDEX search_idx (file_checksum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;