关于高性能实现方式中的分库分表中相关问题

riyunzhu 2016-05-14 09:44:33
相信很多人在遇到高性能实现方式中对数据库的优化中第一个想到的就是分库分表。但是分库分表之后碰到一些问题还望能有高人指点。
一、用户表分库分表
①、用户分库分表之后,那么在用户登录的时候如果根据用户的账号定位到具体的库表?想到的是用户账号跟用户id对应关系存表(实际中是放在缓存中如redis),但有的时候用户登录不光是账号也有可能是邮箱,这个时候是邮箱跟用户id对应关系也存表嘛?
②、查询用户列表时如果根据用户的创建时间排序?能想到的是在用户id生成规则中加入时间戳,如用户id生成规则:库表信息+机器信息+时间戳+固定长度的随机数。那如果要查询所有用户的登录信息呢,即按照登录时间的降序排,如何查询?
二、订单分库分表
①如何查询按照时间的顺序查询指定用户的订单列表?
②查询某个商品的订单列表也就是查询某个商品的售卖情况并且按照订单的创建时间排序?

分不多,这几个问题一直想不明白,望高人指点指点。
...全文
184 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
riyunzhu 2016-05-29
  • 打赏
  • 举报
回复
等了这么久就你一人回答,分不是很多,但是还是很感谢你的真诚回答。
引用 2 楼 oxcow 的回复:
[quote=引用 1 楼 oxcow 的回复:] 既然分库分表了,那肯定是跟据一定的规则。 用户表的话,如果你是根据登陆名(邮箱/登陆名)尽心分库的,那么存储规则也就是登陆去那个库那个表进行查找的规则。 比如 A用户注册的时候,你可能根据注册的用户名或者邮箱取其hash值,然后进行mod 获取该用户对应的数据库、表进行存储。那么用户登陆的时候就需要根据登陆名用同样的规则获取之前存储的数据库及表名来进行查找。 所以针对你说的用户有可能拿邮箱也有可能用用户名登陆,那么你在设计分库分表的规则的时候就得考虑,同一个用户的用户名或者邮箱能对应到同一个库和表上。 对于查询所有用户数据,那只能每个库进行查询让后进行归并了,这个没有好的办法。
怎么查主要还看你的分表规则是什么![/quote]等了这么久就你一人回答,分不是很多,但是还是很感谢你的真诚回答。
oxcow 2016-05-15
  • 打赏
  • 举报
回复
既然分库分表了,那肯定是跟据一定的规则。 用户表的话,如果你是根据登陆名(邮箱/登陆名)尽心分库的,那么存储规则也就是登陆去那个库那个表进行查找的规则。 比如 A用户注册的时候,你可能根据注册的用户名或者邮箱取其hash值,然后进行mod 获取该用户对应的数据库、表进行存储。那么用户登陆的时候就需要根据登陆名用同样的规则获取之前存储的数据库及表名来进行查找。 所以针对你说的用户有可能拿邮箱也有可能用用户名登陆,那么你在设计分库分表的规则的时候就得考虑,同一个用户的用户名或者邮箱能对应到同一个库和表上。 对于查询所有用户数据,那只能每个库进行查询让后进行归并了,这个没有好的办法。
oxcow 2016-05-15
  • 打赏
  • 举报
回复
引用 1 楼 oxcow 的回复:
既然分库分表了,那肯定是跟据一定的规则。 用户表的话,如果你是根据登陆名(邮箱/登陆名)尽心分库的,那么存储规则也就是登陆去那个库那个表进行查找的规则。 比如 A用户注册的时候,你可能根据注册的用户名或者邮箱取其hash值,然后进行mod 获取该用户对应的数据库、表进行存储。那么用户登陆的时候就需要根据登陆名用同样的规则获取之前存储的数据库及表名来进行查找。 所以针对你说的用户有可能拿邮箱也有可能用用户名登陆,那么你在设计分库分表的规则的时候就得考虑,同一个用户的用户名或者邮箱能对应到同一个库和表上。 对于查询所有用户数据,那只能每个库进行查询让后进行归并了,这个没有好的办法。
怎么查主要还看你的分表规则是什么!

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧