0

我到达之前的一位开发人员创建了一个数据库表,其中保存了来自某个 Web 应用程序的搜索查询的历史列表,随后在加载页面时重新加载该用户最后保存的搜索。

问题是,这个搜索功能的使用量很大,每次进行搜索时都会将新行写入表中,有效地无限期地写入(似乎旧的搜索也没有被清理)。到目前为止,该表中有超过 300k 个条目并且还在增加。

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

4

1 回答 1

2

这是一个安全的设计吗?

当然。由于该表是目前构成的,您可以进行查询并返回 10 个最流行的搜索,以及过去 6 个月中最流行的 10 个搜索。

什么是更好的选择?

如果要消除重复项,可以在搜索查询文本上放置唯一索引。

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

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

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

我们将假设无限增长的表存在组织原因。举一个例子,我在一个系统上工作,每一个查询、每一个添加、更新或删除都必须被记录下来。我们必须永远保持这个数据日志在线。这是法律要求的。

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

于 2013-02-14T18:44:00.907 回答