Python 如何存储和连续计算数据点的滚动平均值

Python 如何存储和连续计算数据点的滚动平均值,python,database,nosql,Python,Database,Nosql,我将要开发一个配额跟踪工具,它需要计算每个用户在过去60分钟内触发的事件数 我可以自由选择存储方法rdbms、nosql、内存等等,但它应该可以通过网络访问多个节点 我已经看到了几个如何根据文件输入等计算平均值的例子,我确实相信我可以对这一部分进行排序,但同时也必须确定一种存储数据的好方法,这让我的膝盖弯曲 到目前为止,我已经考虑过redis和memcached,但我仍然对如何存储和访问平均数据感到困惑 无论是在后端还是在代码中,在哪里进行平均计算对我来说都无关紧要 示例python代码大致显示

我将要开发一个配额跟踪工具,它需要计算每个用户在过去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,我想这会让我更容易,因为我只需要存储用户名和时间戳。这就是我正确的方向。接受作为答案