数据库分表分库的问题?

举个简单的例子,以订单表为例。

例如:
1个商家。
10个用户的uid分别为[1,2...,10]。
10个用户的10个订单在一个数据表A中。
现在需要根据uid进行水平分表,将10个订单分到10个表中,即有A0,A1...A9共10个表。

问题1:目前有哪些好用的分表分库工具吗(或者相关的指导资料)?请大家推荐一下。

问题2:分表完成之后,用户查询订单表没有问题,那么商家查询这些订单的时候怎么查询呢(即分表之间的join,或者应当怎样分表才能避免这种分表join)?

PS:不知道我的表述是否清楚,如果有不清楚的地方,还请大家指出让我及时改正,谢谢大家。

最后给个简易的表结构:

订单表:

order_id uid shop_id
订单id 用户id 商户id

用户表:

uid nickname shop_id
用户uid 昵称 商户id
阅读 3.3k
1 个回答

问题一:
1、金山的Kingshard
https://github.com/flike/king...

2、百度的heisenberg
https://github.com/brucexx/he...

3、58同城的Oceanus
https://github.com/58code/Oce...

4、淘宝toddle(不维护)
https://github.com/alibaba/tb...

5、当当网的sharding-jdbc
https://github.com/dangdangdo...

问题二:
没有表结构,不过一般情况下都是这样的。订单表里包含订单信息和订单人的编号,人员表里包含人员编号和人员姓名,然后做连接查询:

1select 订单信息 from 订单表 join 人员表 on 订单表人员编号=人员表人员编号
2where 人员表人员姓名='xxx'

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏