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