use `testrundb`;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `bench_backup_additional_relations`;
DROP TABLE IF EXISTS `bench_backup_values`;
DROP TABLE IF EXISTS `bench_additional_relations`;
DROP TABLE IF EXISTS `bench_additional_type_relations`;
DROP TABLE IF EXISTS `bench_additional_values`;
DROP TABLE IF EXISTS `bench_additional_types`;
DROP TABLE IF EXISTS `bench_values`;
DROP TABLE IF EXISTS `benchs`;
DROP TABLE IF EXISTS `bench_units`;
DROP TABLE IF EXISTS `bench_subsume_types`;
DROP TABLE IF EXISTS `raw_bench_bundles`;
CREATE TABLE `bench_subsume_types` (
`bench_subsume_type_id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'unique key (PK)',
`bench_subsume_type` VARCHAR(32) NOT NULL COMMENT 'unique string identifier',
`bench_subsume_type_rank` TINYINT(3) UNSIGNED NOT NULL COMMENT 'subsume type order',
`datetime_strftime_pattern` VARCHAR(32) NULL COMMENT 'format pattern for per DateTime->strftime for grouping',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_subsume_type_id`),
UNIQUE INDEX `ux_bench_subsume_types_01` (`bench_subsume_type` ASC),
INDEX `idx_bench_subsume_types_01` (`bench_subsume_type_rank` ASC)
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT 'types of subsume values';
CREATE TABLE `bench_units` (
`bench_unit_id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'unique key (PK)',
`bench_unit` VARCHAR(767) NOT NULL COMMENT 'unique string identifier',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_unit_id`),
UNIQUE INDEX `ux_bench_units_01` (`bench_unit` ASC)
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT 'units for benchmark data points';
CREATE TABLE `benchs` (
`bench_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'unique key (PK)',
`bench_unit_id` TINYINT(3) UNSIGNED NULL,
`bench` VARCHAR(767) NOT NULL COMMENT 'unique string identifier',
`active` TINYINT(3) UNSIGNED NOT NULL COMMENT 'is entry still active (1=yes,0=no)',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_id`),
UNIQUE INDEX `ux_benchs_01` (`bench` ASC),
INDEX `fk_benchs_01` (`bench_unit_id` ASC),
CONSTRAINT `fk_benchs_01`
FOREIGN KEY (`bench_unit_id`)
REFERENCES `bench_units` (`bench_unit_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT 'containing benchmark head data';
CREATE TABLE `bench_values` (
`bench_value_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'unique key (PK)',
`bench_id` INT(10) UNSIGNED NOT NULL COMMENT 'FK to benchs',
`bench_subsume_type_id` TINYINT(3) UNSIGNED NOT NULL COMMENT 'FK to bench_subsume_types',
`bench_value` VARCHAR(767) NULL COMMENT 'value for bench data point',
`active` tinyint(3) unsigned NOT NULL COMMENT 'is entry still active (0=no,1=yes)',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_value_id`),
INDEX `fk_bench_values_01` (`bench_id` ASC),
INDEX `fk_bench_values_02` (`bench_subsume_type_id` ASC),
CONSTRAINT `fk_bench_values_01`
FOREIGN KEY (`bench_id`)
REFERENCES `benchs` (`bench_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_bench_values_02`
FOREIGN KEY (`bench_subsume_type_id`)
REFERENCES `bench_subsume_types` (`bench_subsume_type_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB COMMENT 'containing data points for benchmark';
CREATE TABLE `bench_additional_types` (
`bench_additional_type_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'unique key (PK)',
`bench_additional_type` VARCHAR(767) NOT NULL COMMENT 'unique string identifier',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_additional_type_id`),
UNIQUE INDEX `ux_bench_additional_types_01` (`bench_additional_type` ASC)
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT 'types of additional values for benchmark data points';
CREATE TABLE `bench_additional_values` (
`bench_additional_value_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'unique key (PK)',
`bench_additional_type_id` SMALLINT(5) UNSIGNED NOT NULL COMMENT 'FK to bench_additional_types',
`bench_additional_value` VARCHAR(767) NOT NULL COMMENT 'additional value',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_additional_value_id`),
INDEX `fk_bench_additional_values_01` (`bench_additional_type_id` ASC),
UNIQUE INDEX `ux_bench_additional_values_01` (`bench_additional_type_id` ASC, `bench_additional_value` ASC),
CONSTRAINT `fk_bench_additional_values_01`
FOREIGN KEY (`bench_additional_type_id`)
REFERENCES `bench_additional_types` (`bench_additional_type_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT 'additional values for benchmark data point';
CREATE TABLE `bench_additional_type_relations` (
`bench_id` INT(10) UNSIGNED NOT NULL COMMENT 'FK to benchs (PK)',
`bench_additional_type_id` SMALLINT(5) UNSIGNED NOT NULL COMMENT 'FK to bench_additional_types (PK)',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_id`,`bench_additional_type_id`),
INDEX `fk_bench_additional_values_01` (`bench_id` ASC),
INDEX `fk_bench_additional_values_02` (`bench_additional_type_id` ASC),
CONSTRAINT `fk_bench_additional_type_relations_01`
FOREIGN KEY (`bench_id`)
REFERENCES `benchs` (`bench_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_bench_additional_type_relations_02`
FOREIGN KEY (`bench_additional_type_id`)
REFERENCES `bench_additional_types` (`bench_additional_type_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB COMMENT 'additional values for benchmark data point';
CREATE TABLE `bench_additional_relations` (
`bench_value_id` INT(10) UNSIGNED NOT NULL COMMENT 'FK to bench_values',
`bench_additional_value_id` INT(10) UNSIGNED NOT NULL COMMENT 'FK to bench_additional_values',
`active` tinyint(3) unsigned NOT NULL COMMENT 'is entry still active (0=no,1=yes)',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_value_id`,`bench_additional_value_id`),
INDEX `fk_bench_additional_relations_01` (`bench_value_id` ASC),
INDEX `fk_bench_additional_relations_02` (`bench_additional_value_id` ASC),
CONSTRAINT `fk_bench_additional_relations_01`
FOREIGN KEY (`bench_value_id`)
REFERENCES `bench_values` (`bench_value_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_bench_additional_relations_02`
FOREIGN KEY (`bench_additional_value_id`)
REFERENCES `bench_additional_values` (`bench_additional_value_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB COMMENT 'add additional values to benchmarks';
CREATE TABLE `bench_backup_values` (
`bench_backup_value_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'unique key (PK)',
`bench_value_id` int(10) unsigned NOT NULL COMMENT 'FK to bench_values',
`bench_id` int(10) unsigned NOT NULL COMMENT 'FK to benchs',
`bench_subsume_type_id` tinyint(3) unsigned NOT NULL COMMENT 'FK to bench_subsume_types',
`bench_value` float DEFAULT NULL COMMENT 'value for bench data point',
`active` tinyint(3) unsigned NOT NULL COMMENT 'is entry still active (0=no,1=yes)',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_backup_value_id`),
KEY `fk_bench_backup_values_01` (`bench_id`),
KEY `fk_bench_backup_values_02` (`bench_subsume_type_id`),
KEY `fk_bench_backup_values_03` (`bench_value_id`),
CONSTRAINT `fk_bench_backup_values_01`
FOREIGN KEY (`bench_id`)
REFERENCES `benchs` (`bench_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_bench_backup_values_02`
FOREIGN KEY (`bench_subsume_type_id`)
REFERENCES `bench_subsume_types` (`bench_subsume_type_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_bench_backup_values_03`
FOREIGN KEY (`bench_value_id`)
REFERENCES `bench_values` (`bench_value_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB COMMENT='backup table for data points for benchmark';
CREATE TABLE `bench_backup_additional_relations` (
`bench_backup_value_id` int(10) unsigned NOT NULL COMMENT 'FK to bench_backup_values',
`bench_additional_value_id` int(10) unsigned NOT NULL COMMENT 'FK to bench_additional_values',
`active` tinyint(3) unsigned NOT NULL COMMENT 'is entry still active (0=no,1=yes)',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
PRIMARY KEY (`bench_backup_value_id`,`bench_additional_value_id`),
KEY `fk_bench_backup_additional_relations_01` (`bench_backup_value_id`),
KEY `fk_bench_backup_additional_relations_02` (`bench_additional_value_id`),
CONSTRAINT `fk_bench_backup_additional_relations_01`
FOREIGN KEY (`bench_backup_value_id`)
REFERENCES `bench_backup_values` (`bench_backup_value_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_bench_backup_additional_relations_02`
FOREIGN KEY (`bench_additional_value_id`)
REFERENCES `bench_additional_values` (`bench_additional_value_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB COMMENT='add additional values to benchmarks';
CREATE TABLE `raw_bench_bundles` (
`raw_bench_bundle_id` INT(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
`raw_bench_bundle_serialized` LONGBLOB NOT NULL,
`processing` tinyint(3) NOT NULL DEFAULT 0 , -- COMMENT 'is entry processed (0=no,1=yes)',
`processed` tinyint(3) NOT NULL DEFAULT 0 COMMENT 'is entry processed (0=no,1=yes)',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'creation date',
INDEX `idx_raw_bench_bundles_01` (`processing`),
INDEX `idx_raw_bench_bundles_02` (`processing`),
INDEX `idx_raw_bench_bundles_03` (`processed`, `processing`)
) ROW_FORMAT=COMPRESSED COMMENT='queue raw incoming data for later processing';
-- Usage:
-- * create elements:
-- INSERT INTO raw_bench_bundles (raw_bench_bundle_serialized) VALUES ('hot content');
-- * get next:
-- SELECT raw_bench_bundle_id, raw_bench_bundle_serialized FROM raw_bench_bundles WHERE processed=0 ORDER BY raw_bench_bundle_id ASC LIMIT 1;
-- * mark as done:
-- UPDATE raw_bench_bundles SET processed=1 WHERE raw_bench_bundle_id=1;
SET FOREIGN_KEY_CHECKS = 1;
INSERT INTO bench_subsume_types
( bench_subsume_type, bench_subsume_type_rank, datetime_strftime_pattern, created_at )
VALUES
( 'atomic' , 1, NULL , NOW() ),
( 'second' , 2, '%Y%m%d%H%M%S' , NOW() ),
( 'minute' , 3, '%Y%m%d%H%M' , NOW() ),
( 'hour' , 4, '%Y%m%d%H' , NOW() ),
( 'day' , 5, '%Y%m%d' , NOW() ),
( 'week' , 6, '%Y%W' , NOW() ),
( 'month' , 7, '%Y%m' , NOW() ),
( 'year' , 8, '%Y' , NOW() )
;