Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/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 搜索历史-模式建议?_Database Design_Search - Fatal编程技术网

Database design 搜索历史-模式建议?

Database design 搜索历史-模式建议?,database-design,search,Database Design,Search,我需要跟踪我的用户的所有搜索历史记录并将其显示出来。每个搜索项一行似乎不是存储此内容的最佳方式,因为它将快速增长并变得庞大。还有什么其他技术来存储这种数据。这是写一次,读一次。搜索历史记录将显示在多个页面上。我将首先将业务需求与解决方案以及任何潜在的技术问题(即数据库性能)分开 业务需求应阐明问题以及预期结果。例如,您可能需要保留所有搜索历史记录,但仅在UI的高度可见部分显示最新的50。搜索历史的其余部分可能以某种形式的分组(即年和月)显示,并且仅在UI中从单独的屏幕/报告中显示 了解这一需求将

我需要跟踪我的用户的所有搜索历史记录并将其显示出来。每个搜索项一行似乎不是存储此内容的最佳方式,因为它将快速增长并变得庞大。还有什么其他技术来存储这种数据。这是写一次,读一次。搜索历史记录将显示在多个页面上。

我将首先将业务需求与解决方案以及任何潜在的技术问题(即数据库性能)分开

业务需求应阐明问题以及预期结果。例如,您可能需要保留所有搜索历史记录,但仅在UI的高度可见部分显示最新的50。搜索历史的其余部分可能以某种形式的分组(即年和月)显示,并且仅在UI中从单独的屏幕/报告中显示

了解这一需求将向您展示最简单、最合适的解决方案。请记住,如果性能是一个问题,则始终可以对数据进行垂直或水平分区。使用上述仅保留最近50次搜索的示例,您可以创建一个多表解决方案,其中一个表包含最新和当前信息,另一个表包含存档搜索的其他表。然后,您可能希望以某种形式的XML数据类型存储存档的搜索历史记录


希望这能有所帮助

让它快速壮大有什么不对?有多大?慢到底有多慢


您是否测试过从包含1亿行的表中查找100行需要多长时间?你对索引了解多少?关于规范化设计?关于星型架构设计?

它不是100行。这是记录任何人搜索或键入的每个单词的一生。在我开始之前,我想看看针对这种需求的最佳设计是什么。据我所知,XML数据无法查询?因此,在将存档数据移回表之前,这会使其成为一种浪费,对吗?