Sql Postgres表中有更多行或更少行,每行中有更多数据

Sql Postgres表中有更多行或更少行,每行中有更多数据,sql,database,postgresql,Sql,Database,Postgresql,我所处的情况是,我需要跟踪与fitbit步骤非常相似的用户信息,并且正在寻找关于我对数据建模的两个想法的反馈 我的要求是每分钟存储样本数量。这些还将与用户(执行步骤的用户)、用户需要完成的挑战和任务相关联。(游戏化) 现在我可以将所有样本存储在一个表中 id(pk) | user | start date | steps | challengeId uuid1 | user1 | 1/1/2015 10:00PM | 100 | challenge1 uuid2 |

我所处的情况是,我需要跟踪与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:00PM和10:02PM之间有303个步骤,但仅在10:00PM和10:01 PM参与challenge1

然而,我不认为这可以扩展,因为假设一年内为单个用户提供理想的数据

12(一天中的小时)*60(一天中的分钟)*365(一年中的天)=一个数据库中262800条记录,针对一个用户。考虑到10万用户,这个表将变得相当大

我也在考虑将会议记录分组成一个会议的概念,在这个概念中

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]     |
其中步骤数组假定间隔为1分钟。根据用例,一次挑战可能需要数百/数千分钟


我认为第二种方法是有意义的,因为它意味着查询单个记录而不是数百或数千条记录,并且可以将表缩小数百倍,但是如果这种方法有任何缺陷或想法,我们将不胜感激。

262800行在一个表中算不上什么——即使是这个数字的十倍也不算“巨大”。如果你考虑100K的用户,它确实会变得“巨大”。但是如果您总是按用户查询数据,那么按用户划分表应该会非常好。Hello Horse,是的,我总是按用户(通常也按日期)进行查询,这些用户是单独索引的。当您提到按用户分区时,您是否考虑按用户注册的月份进行分区?您有没有想过先启动简单数据库(无分区),然后再迁移到分区数据库?(迁移听起来可能是一个相当大的工作量和可能的数据库停机时间)