ebay,他们如何在时间到期后结束拍卖?

时间:2010-10-21 01:28:19

标签: sql sql-server-2005 message-queue ebay

eBay如何结束拍卖并标记获胜者?假设数据库中有一个拍卖结束日期,一旦该时间超过当前时间,拍卖需要关闭,标记获胜者等。在sql 2005中如何处理这样的事情?他们每秒查询数据库以找到过期的拍卖吗?显然,他们需要在拍卖结束后立即将其标记为关闭。他们无法为每次拍卖创建sql作业,或者是他们?有任何想法吗?我有一个遵循类似思维过程并需要帮助的集成。

6 个答案:

答案 0 :(得分:1)

  

显然他们需要将其标记为   拍卖结束后立即关闭。

是的,但不一定是实时的。

  

在sql 2005中如何处理这样的事情?

完全没有。 DB是DB。对于实时定价/拍卖计算,您将使用一个程序。基本上,更新数据库,但不要从数据库运行逻辑。

  

他们是否每秒查询数据库以查找过期的拍卖?

一种方式。另一种方法是在内存中列出按到期日排序的列表,并检查哪些过期。

  

他们无法为每次拍卖创建sql作业,或者是他们?

可能没有。

我要做的是在内存中保留拍卖清单。通过每台服务器进行X次拍卖来实现可扩展性。

答案 1 :(得分:1)

我认为拍卖的状态是拍卖结束日期和当前时间的结果。您无需对数据库进行更改,以便更改拍卖状态,通过拍卖结束日期的当前时间将为您完成。

观看拍卖的用户只会根据请求查看状态,因此可以在请求时确定状态。任何实际操作(向赢家发送电子邮件)都不一定是真实的。只需要结束竞标;并且可以按出价确定状态

答案 2 :(得分:1)

我曾想象拍卖记录的属性如EndDate。除此之外,不会接受任何出价。出价时,客户端应用会将NowEndDate进行比较。同样,在尝试记录该出价时,数据库会针对Auction.EndDate检查Now()

我不确定客户端是否应该更新auction.status="Closed"。这是对客户的依赖,也许数据库不应该依赖客户来“关闭”拍卖。建议应该预定,而不需要干预。

答案 3 :(得分:0)

根据项目规模的不同,您可能会使用单个SQL作业来完成拍卖的大规模关闭。每分钟运行一次。

Update [Auctions] SET AuctionStatus = 'CLOSED' WHERE CloseDate <= CURRENT_TIMESTAMP;

让您的应用程序逻辑仅向满足此相同where子句的拍卖发布出价。

然后,您可以使用其他预定作业处理竞价获胜者,并针对尚未处理的已结算竞价进行竞争。

答案 4 :(得分:0)

首先出现在我头脑中的是一个javascript函数,当拍卖倒数计时器达到一定数量时调用,在这种情况下我会想象0.让函数对脚本进行ajax调用,这将验证拍卖确实已经过期,然后更新数据库。

答案 5 :(得分:0)

我的猜测是一个调度程序和一个作业/任务队列,每个任务的执行时间都与拍卖的期限一致。调度程序定期检查队列,并且当拍卖的时间过去时,执行任务。该任务将拍卖的状态更改为“已关闭”,因此在该点后不会发生出价。这也可能触发其他一些行动,比如通过电子邮件发送给胜利者。