使用JSP / MySQL实现自动出价功能

时间:2019-04-15 00:00:46

标签: java mysql jsp servlets jdbc

当前正在从事一个项目,可以就如何为类似于Ebay的Web应用程序实现自动出价系统提供一些建议。

我的问题实际上是在处理“自动”功能。最初的想法是,我认为我可以做一个MySQL触发器,但是,我很快了解到触发器不允许您插入/更新触发器表。

我能想到的唯一真正的解决方案是使用Java在服务器端进行处理,但是,我看到这种实现的时间复杂度很低:

例如

自动出价的工作方式是,在没有达到自动出价限制的情况下,新出价项比其他用户对指定项目的任何出价高出0.01。

如果许多用户都配置了自动出价,那么这可能会迭代一段时间,并且在每次迭代时,系统都会进行更新查询,我想这在任何具有真实用户的生产环境中都会变得很慢。

另外,如果我做了服务器端解决方案,则意味着当某些给定的不幸用户发送一次性出价或配置自动出价时,他们将等待服务器处理此工作,然后才能获得正确的响应

在这样的情况下,只要创建一个与最高自动出价限制相对应的出价项目就有意义,但我确实需要反复执行+0.01的过程,才能将实际模型自动系统,很不幸。

那么,有什么更好的方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果您同时是拍卖和自动出价系统的运营商,则根本不需要任何计时器。结果将在您知道所有自动出价限制和手动出价时确定:最高出价胜出,平局通常是更早的出价时间(或您想出的任何方法)。

对于您的服务器,自动出价与正常出价相同,只是用户体验方式不同。您的服务器只需要知道存在哪些出价以及何时添加出价。

您可以例如每次更改实际出价或自动出价限制时,添加并更新有效步骤出价。甚至不需要花费多长时间来处理,结果将是相同的。如果有2位使用者,例如在截止日期前添加10万美元的0.2s自动出价,而一个用户在截止日期前0.1s的价格出价101000美元,您将花费超过0.2s的时间生成1000万个0.01美元的步骤。但是要回答与大多数竞标者最相关的问题,“我赢了,我需要支付什么?”,您无需等待步骤创建过程结束,只需查看3个竞标就可以了。立即告诉用户3获胜,必须支付10万美元和1美分。

从技术上讲,您甚至不需要在数据库中存储这些步骤,因为您的服务器端代码可以在每次有人希望查看详细的投标过程时从存储的限制和投标中生成这些(确定的)步骤。虽然这似乎不符合您的要求,但可能是一项功能。 (您可以将其称为“压缩”甚至是“归一化”)。

对于用户,您显然只会显示直到当前时间的最终出价。客户端可以使用计时器自动刷新以使其更加令人兴奋(因为与您相反,他不知道谁会获胜),但这与服务器端代码无关。