我不确定这是否是发布此内容的正确交换,所以如果我应该移动它,请告诉我。
这更像是一个设计问题。
我有一个网站,允许用户“跟踪”并跟踪他们的时间/工作。这涉及用户最多每分钟都可以使用我的网站更新其帐户,但通常用户每天只会执行几次。但是,没有什么可以阻止其他人更新您的帐户。
每次更新都会创建一个数据点,如果愿意,还可以创建他们的帐户状态和工作量。
用户可以查看他们在过去一天或过去一周内完成的工作量。这可以通过更改要查看的数据点的范围来完成。
我现在的问题是:很有可能拥有300k +用户。还有一些用户帐户比其他用户更密切地关注,例如,首席执行官或经理,因此这些帐户将更频繁地更新。这导致单个用户可能在仅仅一年左右的时间内获得100k +数据点。
目前我正在考虑通过以下映射存储这些:
unixtime -> account snapshot
这似乎最容易存储为用户的大型json数组(例如我将存储的其他详细信息):
jsonArray = {
"alice": {
"totalHours": 31.6,
"updates": {
1515653260 : { work: 95%, hours: 8 },
1515691399 : { work: 93%, hours: 10 },
1515695125 : { work: 91%, hours: 7.6 },
1515698694 : { work: 56%, hours: 6 },
}
}
"bob": {
"totalHours": 7.32,
"updates": {
1515654356 : { work: 95%, hours: 1 },
1515690342 : { work: 93%, hours: 6.32 },
}
}
}
这是一个有效的解决方案吗?我无法想象一个json
字符串会占用太多空间而MySQL无法容纳它,但我从来没有处理过这么大的事情。
我是否可以使用其他数据结构,或者在获取/存储数据方面更有效?
感谢。