java多用户商城系统架构篇——分库分表

    目前公司数据量已经上来,单表较大已经5千万,之前使用分区表,用起来有很多需要注意的地方,以及坑等。
    所以就在年后准备做分库分表,筛选了N多中间件、框架,似乎都不满足。主要在以下几点。
    比如用阿里的myCat,需要学习、研究,因为我们目前有点急,需要安排人去研究,而且需要深入研究,结果就是搞了几天没啥头绪。但是原理就是做代理,这个了解透了。
    在看当当网提供的sharding-jdbc分库分表案例,也是同样问题,没那么多时间研究,而且这几家提供的东西,居然官网都是英文/中文,中文文档也是按照老外风格写,尽量给你增加门槛!!!

    于是乎就萌生自己写分库分表。
    废话不多说。
    1、首先是老数据问题,这个是网上所有文章没有提到的,没有提到这个问题的文章,可以说99.99%没玩过分库分表。
    对于5000万的数据量,做切分,一张表控制在100万,你手动去复制粘贴???,每隔一段时间手动建库???
    据说当当是手动,应该是写的程序手动的。。。。伤不伤???
    其实很简单,我用JDBC写的,查到老库所有表名,create table newTableName like oldTableName;这样可以把表结构、索引结构都拷贝过来到新库,但是不会拷贝数据,网上有另一条SQL,我想大家已经玩过了,那个索引、主键不会拷贝。。
    2、如何做数据分散存储
    很多人肯定看过文章,ID取模呀。那如果数据量又达到瓶颈咋搞?阿里的单表12年就已经100亿了。。。。
    所以说ID取模并不是仅仅这么简单,还需要数据量控制,我这里有个更好办法,其实就是简单数据量控制。
    达到100万就Next,ID是自增的,出去100万,余数为0则Next。当然ID取模这么流行的方法都是阿里、58、京东这些架构师出来讲培训说的,其实你实际去操作,有其他N多方法,没有必要照搬。。。。
    3、多表、关联关系如何建立?
    你怎么知道User表包含哪些Order表呢?,如果一个user出的订单既有在N库,也有在N+1、N+2库里面呢?
    通过user_id查询order。一般单库做关联查询,其实多库也可以,只是索引会失效而已了。然后2千万*5千万扫描。。。。
    我看过唯品会的解决方案,他们是Order_id中间一段是user_id,**不,很**。。。。
    但是,我们已经有5000万数据了,人家唯品会有的是钱,拉500人团队搞呗。。。2个月搞完。
    我们几个人?就是我一个人。。。。伤不伤吧。。
    所以这个方案不行,唯品会文章中丢弃的一个方案就是建立中间对应关系。
    就是user_id和order_联合加上order_id所在库。他们丢弃的原因是中间表会巨大,确实。
    但是如果放在redis缓存中就没有这个问题了,redis缓存只要空间足够大,性能2~3个亿没问题。
    redis缓存还可以做切分啊,也算是**符合我们这种小公司了吧。

    4、如何取数据?
    对于一对一查询,以前关联查询、子查询,现在都用子查询,分为两次查询。这个时间上只是毫秒差异。不用联合多库查询。(题外话,做互联网公司项目,几乎不会需要用外键、关联查询的。。。一般都是分多次查询,或者通过缓存系统拿空间换时间,怎么玩?比如微博一个用户发文章,不做文章表,所有文章放在user的下面,每个user下面都是自己的,那么查询起来就是查user就OK。)
    对于一对多查询,就是2里面提到的,已经知道库了,那么具体查询方案我们还是多次查询。
    对于多对多,更简单了,中间关系建立好,比以前多对多查询更简单了。这会还是一对多查询。

    以上就是我们对于分库分表的解决方案。其实分库分表非常简单。我一个人搞了一个月吧。。。

    如果你需要电商,B2B2C商城系统,并且支持分布式、分库分表,可以联系我探讨。
    其实有N多解决方案,较好是团队讨论,更方便沟通,文章也不能全部说出来,我写的过程遇到过N多有意思的事情以及各个框架急需提供对于扩展大数据量的问题。。。



    无锡红猪网络科技有限公司专注于java,b2b2c,多用户商城等

  • 词条

    词条说明

  • java b2b2c多用户商城源码

    较近公司要开发商城,让我多方咨询,最后看了很多,要不就是代码、表字段注释不全,要不就是bug多,要么就是文档缺少,最后决定自己开发一套商城。下面是开发的一些心得体会,权且记录下来,给自己做个记录把。之**直都是在从事电商相关和互联网金融开发,处理过亿级数据量,所以被目前这家公司看重。由于Java是开源的,较近几年Hadoop等开源产品越来越成熟,而且是基于Java的,所以较终选择Java最后后台开

  • java多用户B2B2C商城源码仿京东源码

    本系统可以重新开发源代码,主要用于二次开发的开发人员学习和参考使用,不明白仔细购买的源代码,因为时间有限,不会安装联系人,我肯定有时间购买安装服务 Java多用户B2B2C商城源代码模仿京东源代码支持MySQL购物中心系统是一个用Java语言开发的多用户购物中心系统。SpringBoot、SpringCloud、MyBatis作为基本开发框架,应用保卫框架管理系统权限,结合URL重写技术

  • java 多用户商城系统源码仿京东淘宝

    电商多用户商城购物系统中,php商城系统和java商城系统是电商系统的两个大门派,一直在暗自较劲,但是也是胜负难分。今天来和大家聊聊关于java多用户商城的那些事儿。    什么是java多用户购物商城Java多用户电子商城,顾名思义,就是使用java程序语言开发、支持多个用户一同建设网上商城的电商购物系统。Java多用户网上商城就像是淘宝商城一样,很多的商家都可以在

  • (十一)Java springcloud B2B2C o2o多用户商城 springcloud架构- - SSO单点登录之OAuth2.0登录流程(2)

    之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一、oauth中的角色client:调用资源服务器API的应用Oauth 2.0 Provider:包括Authorization Server和Resource Server(1)Authorization

联系方式 联系我时,请告知来自八方资源网!

公司名: 无锡红猪网络科技有限公司

联系人: 周庆达

电 话:

手 机: 17503009512

微 信: 17503009512

地 址: 江苏无锡滨湖区222号

邮 编: 123123

网 址: redpigmall.b2b168.com

八方资源网提醒您:
1、本信息由八方资源网用户发布,八方资源网不介入任何交易过程,请自行甄别其真实性及合法性;
2、跟进信息之前,请仔细核验对方资质,所有预付定金或付款至个人账户的行为,均存在诈骗风险,请提高警惕!
    联系方式

公司名: 无锡红猪网络科技有限公司

联系人: 周庆达

手 机: 17503009512

电 话:

地 址: 江苏无锡滨湖区222号

邮 编: 123123

网 址: redpigmall.b2b168.com

    相关企业
    商家产品系列
  • 产品推荐
  • 资讯推荐
关于八方 | 八方币 | 招商合作 | 网站地图 | 免费注册 | 一元广告 | 友情链接 | 联系我们 | 八方业务| 汇款方式 | 商务洽谈室 | 投诉举报
粤ICP备10089450号-8 - 经营许可证编号:粤B2-20130562 软件企业认定:深R-2013-2017 软件产品登记:深DGY-2013-3594
著作权登记:2013SR134025
Copyright © 2004 - 2024 b2b168.com All Rights Reserved