Python 如何存储和连续计算数据点的滚动平均值
我将要开发一个配额跟踪工具,它需要计算每个用户在过去60分钟内触发的事件数 我可以自由选择存储方法rdbms、nosql、内存等等,但它应该可以通过网络访问多个节点 我已经看到了几个如何根据文件输入等计算平均值的例子,我确实相信我可以对这一部分进行排序,但同时也必须确定一种存储数据的好方法,这让我的膝盖弯曲 到目前为止,我已经考虑过redis和memcached,但我仍然对如何存储和访问平均数据感到困惑 无论是在后端还是在代码中,在哪里进行平均计算对我来说都无关紧要 示例python代码大致显示了我想要实现的目标:Python 如何存储和连续计算数据点的滚动平均值,python,database,nosql,Python,Database,Nosql,我将要开发一个配额跟踪工具,它需要计算每个用户在过去60分钟内触发的事件数 我可以自由选择存储方法rdbms、nosql、内存等等,但它应该可以通过网络访问多个节点 我已经看到了几个如何根据文件输入等计算平均值的例子,我确实相信我可以对这一部分进行排序,但同时也必须确定一种存储数据的好方法,这让我的膝盖弯曲 到目前为止,我已经考虑过redis和memcached,但我仍然对如何存储和访问平均数据感到困惑 无论是在后端还是在代码中,在哪里进行平均计算对我来说都无关紧要 示例python代码大致显示
def registerUserEvent(username):
updateUserEvents(username, getUserEvents() + 1)
def getUserEvents(username):
return fetchDataFromSomeBackend(username)
def getUserEventsPerHour(username):
userEvents = getUserEvents(username)
hourlyAverage = doSomeCalculations(userEvents) # how do I do this?
return hourlyAverage
def updateUserEvents(username):
updateBackendSomehow(username, getUserEvents() + 1)
我建议使用时间戳存储事件。一张唱片看起来像。 然后,您可以通过以下方式计算每小时平均值:
(number of events with username=some_username)/(max_timestamp-min_timestamp).hour()
你如何做到这一点取决于你使用何种存储技术,而这取决于你的应用程序的需求。我的第一个提示是:创建一个类并实现数据库包装器,之后,您可以使用@property触发数据更改。谢谢。我真的不太在乎eventid,我想这会让我更容易,因为我只需要存储用户名和时间戳。这就是我正确的方向。接受作为答案