我正在开发一个最终将拥有数百万用户的系统。系统的每个用户都可以访问系统中的不同“标签”。我正在使用一个名为 usertabs 的表来跟踪它。有两种方法可以处理这个问题。
方式 1:每个用户的单行包含 userid 和 tab1-tab10 作为 int 列。
该系统的优点是通过用户 ID 获取单行的查询非常快,而缺点是“空”列占用空间。另一个缺点是,当我需要添加一个新选项卡时,我必须重新组织整个表,如果有数百万条记录,这可能会很乏味。但这不会经常发生。
方式2:单行包含userid和tabid,仅此而已。每个用户最多可以有 10 行。
该系统的优点是易于分片或其他优化存储的机制,并且不会浪费空间。行仅在必要时存在。缺点是每次访问记录时必须读取多达 10 行。如果这些行是分散的,它们的访问速度可能会更慢或更快,这取决于它们的存储方式?
我的程序员方面倾向于方式 1,而我的大数据方面则倾向于方式 2。
你会选择哪个?为什么?