2013-02-14 158 views
0

在我到达之前,以前的开发人员创建了一个数据库表,该表保存来自某个Web应用程序的搜索查询的历史列表,随后在加载时加载上次保存的该用户的搜索在页面上。基本数据库设计:保留“历史记录”表

问题是,这种搜索功能看到了大量的使用,每次搜索时,新的一行被写入表中,实际上是无限的(旧的搜索似乎也没有被清理)。到目前为止,这个表格中有超过30万个条目并计数。

我的问题是,这是一个安全的设计吗?什么是更好的选择?我担心存在这样的限制,性能和必要性。

+0

这是“基本”?而且,这通常不是关于“历史表”,而是关于历史表无限增长。 – 2013-02-14 19:54:09

+0

当您考虑数据库设计中高级概念的范围时,是否保留数据库表中的历史列表似乎不是一个高级概念,并且还认为表的创建者和我自己都不是数据库专家,并希望一些指导开始使用历史记录表的概念。你会把它归类为“高级数据库设计”吗?我不确定我在哪里指定这将是一个“一般”问题,除非你建议我应该在标题中加入这个问题。 – starmandeluxe 2013-02-14 20:24:27

+0

我只是不会认为它是“基本”。 “中级”也许,但肯定不是“基本”。 – 2013-02-14 20:26:18

回答

2

这是一个安全的设计吗?

肯定。由于表格目前已组成,您可以进行查询并返回过去10个最受欢迎的搜索,以及过去6个月中最受欢迎的10个搜索。

什么是更好的选择?

如果您想消除重复项,您可以在搜索查询文本中添加一个唯一索引。

我担心存在这样的限制,性能和必要性。

只有您的组织可以确定必要性。就限制和性能而言,我曾与数据仓库合作,每天添加200万行数据仓库。你没有说你关心哪个关系数据库,但是现在大多数数据库可以处理具有数万亿行的表格。

你能解释一下为什么你认为这是一个好的设计,不能在“无限”增长的桌子上进行清理?

我们假设有一个无限增长的表的组织原因。举一个例子,我研究了一个系统,每个查询,每个添加,更新或删除都必须记录下来。我们必须永远保持这个数据日志在线。这是法律规定的。

我们只是确保历史文件具有足够的磁盘空间。我们从未想过表格可容纳的最大行数。关系数据库是DB2。

+0

我很欣赏有大规模数据仓库经验的人的回应!当然,我的组织会确定这一点,但是我们确实没有任何能够了解这些事情的架构师角色。这可以说是一个单一的“流氓”开发者。你能解释为什么你认为这是一个好的设计,没有在“无限”增长的桌子上进行清理?总有一天会不会达到限制?顺便说一句,DB是SQL Server 2008。 – starmandeluxe 2013-02-14 19:08:02

+0

问:总有一天会达到限制吗?答:您可能会首先耗尽磁盘空间。除非您的组织从未升级数据库。 – 2013-02-14 19:35:48