我正在构建一个Web应用程序,可以上传一些静态数据,并需要一些建议。
起初,我想使用内部磁盘,但如果数据增长,我计划使用Amazon S3作为文件存储,我预计我将需要多个文件存储容器 - 也许我会使用其他CDN提供商。
此外,我有以下数据库结构:
CREATE TABLE IF NOT EXISTS `storage_servers` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NOT NULL ,
`ip` INT(20) NOT NULL ,
`access_url` LONGTEXT NULL DEFAULT NULL , // storing server access URL
`username` LONGTEXT NULL DEFAULT NULL , //storing server username
`password` LONGTEXT NULL DEFAULT NULL , // storing server password
`token` LONGTEXT NULL DEFAULT NULL , // storing server access token, if any
PRIMARY KEY (`id`) )
ENGINE = InnoDB;'
CREATE TABLE IF NOT EXISTS .`storage_servers_files` (
`server_id` INT NOT NULL ,
`file_id` BIGINT(25) NOT NULL ,
INDEX `fk_servers_files_1` (`file_id` ASC) ,
INDEX `fk_servers_files_2` (`server_id` ASC) ,
CONSTRAINT `fk_servers_files_1`
FOREIGN KEY (`file_id` )
REFERENCES `files` (`id` )
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_servers_files_2`
FOREIGN KEY (`server_id` )
REFERENCES `storage_servers` (`id` )
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
然而,我不确定我的方法是否公平。
据我所知,我需要为每个单独的存储容器创建子域(cdn1.example.com、cdn2.example.com...cdn15.example.com)。你会如何为此设计表格?
我另一个想法是完全删除storage_servers
和storage_servers_files
表,并在files
表中创建一个server
字段,然后存储子域名。然后应该将配置存储在配置文件中。
这不是有点过度设计了吗?