需求分析
用户侧
用户侧对用户中心的查询特点是:查询频次高,基本上都是单条查询,对数据的实时性和一致性要求高,99%的请求为uid查询用户信息,1%的请求为根据用户名/邮箱/手机号等条件查询用户信息;
运营侧
运营侧对用户中心的查询特点是:查询频次低,查询数据量大,查询条件复杂(年龄、性能、注册时间等),对数据的实时性和一致性容忍度高;
存储方案设计
整体思路:用户表按照uid分库分表存储大批量的用户,基于ES建立外置索引用于支持复杂查询,利用NoSQL存储非uid(登录名/手机号/邮箱)到uid的映射关系用于支持登录,可通过基因法在uid中融入某种查询key来避免映射的查询,提升读性能;
参考:
- 58沈剑:单KEY业务,数据库水平切分架构实践 | 架构师之路
- https://blog.csdn.net/sunhuiliang85/article/details/78418546