手头上有个 java 后台应用,是服务于各个业主的微信小程序的。 每个业主在微信平台上申请各自的 appId,appSecret 这些交给我们。
我们数据库里有个用户表,其中字段就有这个 appId,一开始为了快速上线,也没怎么长远考虑,直接单表走起。 基本上用 appId + openId 就能唯一定位到具体哪个业主下面的哪个用户。
查表的频率还是挺多的。 特别是新用户一来,就会根据 appId+openId 去检查是否已经落库,根据结果引导到后续不同的处理逻辑。 目前这个用户表的数据已经有 200W 左右了,而且搞商务的同事还在努力去拉新的业务,有潜在入驻的业主。 现在服务运行情况还好,数据库这块还不是瓶颈。 但如果再发展一两年,假设数据达到单表千万级,估计就很有问题了。
我想这种情况应该是个普适性的问题吧,就是这种多个“主体”的数据在一个单表里如何进行插入和查询的优化问题。 而且还有个特点是数据的不均匀性, 像我这个应用,目前小的业主下面只有 2W 左右数据,最大的一个业主下面就 100W 占了一半。
我们数据库里有个用户表,其中字段就有这个 appId,一开始为了快速上线,也没怎么长远考虑,直接单表走起。 基本上用 appId + openId 就能唯一定位到具体哪个业主下面的哪个用户。
查表的频率还是挺多的。 特别是新用户一来,就会根据 appId+openId 去检查是否已经落库,根据结果引导到后续不同的处理逻辑。 目前这个用户表的数据已经有 200W 左右了,而且搞商务的同事还在努力去拉新的业务,有潜在入驻的业主。 现在服务运行情况还好,数据库这块还不是瓶颈。 但如果再发展一两年,假设数据达到单表千万级,估计就很有问题了。
我想这种情况应该是个普适性的问题吧,就是这种多个“主体”的数据在一个单表里如何进行插入和查询的优化问题。 而且还有个特点是数据的不均匀性, 像我这个应用,目前小的业主下面只有 2W 左右数据,最大的一个业主下面就 100W 占了一半。