84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
B2C电商,假如有用户表,订单表,商品表,针对用户ID,进行hash后,分库,假设分为A,B,C,D四个库,相应的不同用户下的订单也存放在对应的A,B,C,D库里,商品表做冗余存放在所有库里,那如果要在后台订单里看到所有的订单,这时候要怎么处理,把A,B,C,D的订单合并起来再排序?这套规则有组件可以实现吗?还是要自己写代码?
认证高级PHP讲师
订单表结构是一样的,建议在数据库层去处理,sql语句union联合查询,然后进行order by,limit处理,程序端直接拿到处理后的数据;代码解决会吃内存
分库分表本身就是一把双刃剑,如果单量在10玩,百万级,不建议现在就分。对于你说的这个查询条件,如果需求还蛮大,查询时候也蛮多的话,我建议单独搭建一个库,将之前分库的数据再汇总过来(只汇总有查询需要的),自己读bin log,写ETL就行,这样除了解决你的需求外还有个好处就是分析统计很方便。或者直接用阿里的开源中间件,将数据库和业务程序隔离开也行
你这个按用户维度分库分表的,如果要实现查询,需要按订单维度再次进行分库分表,所以会数据冗余
订单表结构是一样的,建议在数据库层去处理,sql语句union联合查询,然后进行order by,limit处理,程序端直接拿到处理后的数据;代码解决会吃内存
分库分表本身就是一把双刃剑,如果单量在10玩,百万级,不建议现在就分。
对于你说的这个查询条件,如果需求还蛮大,查询时候也蛮多的话,我建议单独搭建一个库,将之前分库的数据再汇总过来(只汇总有查询需要的),自己读bin log,写ETL就行,这样除了解决你的需求外还有个好处就是分析统计很方便。
或者直接用阿里的开源中间件,将数据库和业务程序隔离开也行
你这个按用户维度分库分表的,如果要实现查询,需要按订单维度再次进行分库分表,所以会数据冗余