Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Design patterns 亚马逊设计质疑_Design Patterns - Fatal编程技术网

Design patterns 亚马逊设计质疑

Design patterns 亚马逊设计质疑,design-patterns,Design Patterns,我在看亚马逊网站,想知道其中一个功能是如何实现的。功能:客户在查看特定项目后购买的内容 如果我要开发这样的功能,我可能会为每个用户会话生成会话id,并将会话id页id组合存储在日志文件中。如果购买了一本书,则为会话id页面id设置一个单独的标志。然后可以定期在日志文件上运行一个单独的程序,以识别一起购买/一起查看的组,并且该信息可以存储在一个持久文件中 这当然是一个简单的解决方案,没有考虑服务器的分布式特性,但这是否足够,或者您能否帮助我确定一个更好的设计。您可以通过在数据库中添加(用户id、产

我在看亚马逊网站,想知道其中一个功能是如何实现的。功能:客户在查看特定项目后购买的内容

如果我要开发这样的功能,我可能会为每个用户会话生成会话id,并将会话id页id组合存储在日志文件中。如果购买了一本书,则为会话id页面id设置一个单独的标志。然后可以定期在日志文件上运行一个单独的程序,以识别一起购买/一起查看的组,并且该信息可以存储在一个持久文件中


这当然是一个简单的解决方案,没有考虑服务器的分布式特性,但这是否足够,或者您能否帮助我确定一个更好的设计。

您可以通过在数据库中添加(用户id、产品id、日期)来跟踪每个查看者看到的内容。然后,您可以查看人们在查看该商品当天购买的商品

但是,你会想在这方面有所改进,比如,如果我看了一个烹饪锅,买了一本书,你不会想展示这两本书,除非它是一本与烹饪相关的书,也许

但是,存储会话id可能不是最好的选择,因为,如果我看了一些东西,然后后来,在与我的朋友交谈之后,我决定可以买iPad,你的方式不会显示为我看了笔记本后买的东西


因此,从编写一些用户故事开始,基本上只是一些展示您想要做什么的场景,然后设计可能会更容易。

好主意。但在许多情况下,用户在搜索产品时可能没有注册。我最初考虑过使用db,但当每天有数百万次页面点击时,这会不会是一个严重的性能拖累。用户故事驱动的设计是一个很好的主意。如果你的表没有大量索引,那么插入很快,所以只需要几个索引就可以了。你可以通过ip地址和unixtime注册用户,只是为了有一个唯一的标识符,但如果他们已注册,那么您只需使用他们的注册用户\ id。@praveen-您可以只存储ip地址并使其成为未注册用户,如果您愿意,这只意味着您可能有多个人与该帐户信息绑定,但是,这取决于准确度对您的重要性。这就是为什么场景是有用的,您可以写出几个不同的场景,并决定您希望一切如何运行。