我正在建立一个基本的股票观察者应用程序 - 让我们调用当前观看的股票 N 。当股票移动 X%时,触发通知/事件。 X 是基于每个用户定义的。
服务器保存股票的当前价格,以及用户最后知道的价格(每个用户收到的最后一个警报)
建筑师的最佳方法是什么?我不想在任何价格变动时遍历每个用户,以检查是否达到了他们的设置移动百分比,因为这显然是一个巨大的性能问题。
非常感谢进一步研究的资源和链接。
我在Javascript(精确地说是nodeJS)中构建它,但我对构建此代码而非直接代码示例的概念更感兴趣。
谢谢!
答案 0 :(得分:1)
您可以拥有每个股票的观察者列表,这些观察者将是观看该股票的用户列表以及他们的通知触发价格。如果按照触发价格对列表进行排序,则可以轻松地从列表的一端进行遍历,以收集现在应该收到通知的用户的确切列表。在为该用户触发通知后,您可以决定是否为该用户设置新的触发价格,或者从他们的通知已经发送后将其从列表中删除。
这种方案具有以下优点:
为了使诸如从系统中删除用户更有效,用户对象可能还会保留该用户正在监视的证券列表(及其触发价格),以便您可以转到每个安全性并删除用户无需搜索所有证券即可从其列表中观察。因此,添加监视会将项目添加到用户对象列表中,并将用户和触发器价格添加到特定于安全性的列表中。
答案 1 :(得分:0)
数据库中的用户集合应该有一列来保存用户的X百分比。让我们说...... x_col
当您为百分比更改设置侦听器时,只需将用户的x_col
传递给条件。
(即刚刚发生的变化是>= user.x_col
会发出通知。)
上面的用户对象假设您正在为当前登录的用户使用全局。如果没有,您可以只查询集合中x_col
值在文档中的内容,该值与您用于检查登录用户的唯一信息相匹配。