Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 design 基本数据库设计:保持“a”;历史";桌子_Database Design - Fatal编程技术网

Database design 基本数据库设计:保持“a”;历史";桌子

Database design 基本数据库设计:保持“a”;历史";桌子,database-design,Database Design,我来之前的一位开发人员创建了一个数据库表,该表保存了来自某个web应用程序的搜索查询的历史记录列表,随后在加载页面时加载该用户最后保存的搜索 问题是,这个搜索函数的使用量很大,每次进行搜索时,都会向表中写入一个新行,实际上是无限的(似乎旧的搜索也不会被清除)。到目前为止,该表中有超过30万个条目,正在统计中 我的问题是,这样做安全吗?还有什么更好的选择?我担心存在这样的限制、性能和必要性 这样做安全吗 当然。由于该表目前已构成,您可以执行查询并返回有史以来最流行的10个搜索,以及过去6个月内最流

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

问题是,这个搜索函数的使用量很大,每次进行搜索时,都会向表中写入一个新行,实际上是无限的(似乎旧的搜索也不会被清除)。到目前为止,该表中有超过30万个条目,正在统计中

我的问题是,这样做安全吗?还有什么更好的选择?我担心存在这样的限制、性能和必要性

这样做安全吗

当然。由于该表目前已构成,您可以执行查询并返回有史以来最流行的10个搜索,以及过去6个月内最流行的10个搜索

还有什么更好的选择

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

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

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

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

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


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

我很感谢有大规模数据仓库经验的人的回复!当然,我的组织会决定这一点,但我们没有一个真正的架构师角色知道这些事情。可以说,这是由一个“流氓”开发人员完成的。你能解释一下为什么你认为在一个“无限”生长的桌子上不进行清理是一个好的设计吗?有一天,这一限制不会最终达到吗?顺便说一句,DB就是SQL Server 2008。问题:最终会不会达到这个极限?答:您可能会先用完磁盘空间。除非您的组织从不升级数据库。这是如何“基本”的?一般来说,这不是一个“历史表”,而是关于一个无限增长的历史表。当你考虑数据库设计中的高级概念时,是否在DB表中保存历史列表的问题似乎不是一个先进的概念。并且还考虑表的创建者以及我自己不是数据库专家,并且希望从历史表的概念开始一些指导。那么你会把它归类为“高级数据库设计”吗?我不确定我在哪里指定这将是一个“一般”的问题,除非你建议我把它包含在标题中。我只是不认为它是“基本的”。也许是“中等”,但肯定不是“基本”。