Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 数据库存档与基于时间段的表/字段_Database_Software Design_Archiving - Fatal编程技术网

Database 数据库存档与基于时间段的表/字段

Database 数据库存档与基于时间段的表/字段,database,software-design,archiving,Database,Software Design,Archiving,我正在开发一个员工目标web应用程序 领导/经理在与团队成员讨论后为他们设定目标。这是一个年度/半年/季度,取决于组织遵循的评估周期 现在的问题是添加基于时间段的字段或归档上一季度/年度数据的更好方法。当用户希望查看以前的目标(不太频繁的活动)时,可能会在某个临时表中还原属于该日期的存档,并显示给员工 开始的要点 归档:减少数据库大小,简化数据库查询,在有人试图查看旧数据时增加开销 基于时间段的字段/表:在查询中有一个或多个额外的联接,以前的数据与当前数据类似,因此在检索旧数据时没有开销 PS:

我正在开发一个员工目标web应用程序

领导/经理在与团队成员讨论后为他们设定目标。这是一个年度/半年/季度,取决于组织遵循的评估周期

现在的问题是添加基于时间段的字段或归档上一季度/年度数据的更好方法。当用户希望查看以前的目标(不太频繁的活动)时,可能会在某个临时表中还原属于该日期的存档,并显示给员工

开始的要点

归档:减少数据库大小,简化数据库查询,在有人试图查看旧数据时增加开销

基于时间段的字段/表:在查询中有一个或多个额外的联接,以前的数据与当前数据类似,因此在检索旧数据时没有开销


PS:这不是空间成本,我的观点是,我们是否可以在性能方面实现一些优化,因为这是一个web应用程序,在高峰时间,组织中的所有员工都会查看/更新它。因此,删除时间段可以使我的查询简单得多。
谢谢

我将开始添加您的时间段字段,并等待大小成为一个问题。您所描述的数据类型听起来似乎不会占用大量存储空间


如果它无法控制地增长,您可以稍后再查看归档方法,但编码所需的时间将远远超过简单地将相关时间段与您的数据一起存储。

在我看来,如果您要求用户可以任意追溯到过去,那么您确实必须保持数据的可访问性

这是不可持续的:

属于该日期的存档可以在某个临时表中还原并显示给员工


为此,我建议定期(在绝对必要时读取)将“非常旧”的数据移动到另一个表中。磁盘空间在这一点上非常便宜,因此保留这些数据远没有实现可以返回到任意时间并恢复存档的系统那么昂贵。

假设您谈论的是随时间变化的数据,而不是日志类型的数据,那么我首选的方法是只保留“最新的”主表中数据的版本,并自动将以前版本的数据复制到存档表中。此归档表将镜像主归档表,并添加版本化字段,如时间戳。此归档可以通过触发器完成

我看到这种方法的主要好处是它不会影响数据库设计。特别是,您不必担心使用包含版本字段的复合键(事实上,数据库甚至不允许使用基于时间的字段作为键)


如果需要查看旧数据,可以对归档表运行select并向查询添加版本约束

不提供时间段字段的优点是,与插入/更新/删除相关的查询变得更加简单。因此,我们可以提高性能和可扩展性:)这不是空间成本,我的观点是,如果我们能够在性能方面实现一些优化,因为这是一个web应用程序,在高峰时间,组织中的所有员工都会查看/更新它。所以删除时间段会使我的查询变得简单:)是的,这就是我的观点。我只是想听听别的意见。谢谢