3

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

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

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

开始的点

归档:减少数据库大小,导致更简单的数据库查询,当有人试图查看旧数据时会增加开销。

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

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

4

3 回答 3

3

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

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

如果您需要查看旧数据,可以对存档表运行选择并将版本约束添加到查询中。

于 2009-07-13T12:40:15.290 回答
1

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

如果它无法控制地增长,您以后可以随时查看存档方法 - 但编码将花费更长的时间,而不是简单地将相关时间段与您的数据一起存储。

于 2009-07-08T05:49:09.837 回答
1

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

这将是不可持续的:

属于该日期的存档可能会在某个临时表中恢复并显示给员工。

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

于 2009-07-08T06:14:53.687 回答