我需要跟踪与fitbit步骤非常相似的用户信息,并且正在寻找有关数据建模的两个想法的反馈。
我的要求是以分钟为单位存储样本数量。这些也将与用户(执行步骤),用户完成的挑战和任务相关联。 (游戏化)
现在我可以将所有样本存储在一个表中
id(pk) | user | start date | steps | challengeId
uuid1 | user1 | 1/1/2015 10:00PM | 100 | challenge1
uuid2 | user1 | 1/1/2015 10:01PM | 101 | challenge1
... can have hundreds of minutes with a challenge
uuid3 | user1 | 1/1/2015 10:02PM | 102 |
uuid4 | user2 | 1/1/2015 10:00PM | 100 |
所以user1在晚上10:00到晚上10:02之间有303步,但是只在晚上10:00和晚上10点01分参加challenge1
但是,我不认为这可以扩展,因为假设一年中单个用户的理想数据
12(一天中的小时数)* 60(一天中的分钟数)* 365(一年中的天数)=数据库中的262,800条记录,适用于1位用户。考虑到100k用户,该表将变得非常大。
我也在考虑将会议记录分组为会话概念的想法,其中看起来像是
id(pk) | user | start date | steps | challengeId
uuid1 | user1 | 1/1/2015 10:00PM | [100,101] | challenge1
uuid2 | user1 | 1/1/2015 10:01PM | [102] |
uuid3 | user2 | 1/1/2015 10:02PM | [102] |
其中steps数组假定间隔为1分钟。根据用例,挑战可能有数百/数千分钟。
我认为第二种方法是有道理的,因为它意味着查询单个记录与数百或数千,并且可以将表缩小数百倍,但如果对此方法或任何想法有任何疑问,我们将不胜感激。