范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

分库分表技术及技术方案

  一、分库分表的必要性
  分库分表技术的使用,主要是数据库产生了瓶颈,如单库的并发访问或单表的查询都超出了阈值。对系统使用造成一定的影响,不得已而产生的技术。
  通过分库分表技术来解决此类问题,但正因为使用此技术,会产生ACID一系列的问题,各类中间件解决此类问题各有各的优势。
  提示:如场景无必要,千万不要使用分库分表。
  二、分库分表的思路
  1、垂直区分
  垂直分库:从业务角度,一个库分成多个库,如把订单和用户信息分成两个库来存储。这样的好处就是可以微服务了。每块的业务单独部署,互不影响,通过接口去调用。
  图1 单库到多库
  垂直分表:把大表分成多个小表,如热点数据和非热点数据分开,提高查询速度。
  2、水平区分
  水平分表:同一业务如数据量大了以后,根据一定的规则分为不同的表进行存储。
  图2 单表到多表
  水平分库:如订单分成多个库存储,分解服务器压力。
  以上一般来说,垂直分库和水平分表用的会多些。
  三、分库分表的原理分析
  分库分表常用的方案:Hash取模方案和range范围方案;
  路由算法为最主要的算法,指得是把路由的Key按照指定的算法进行存放;
  1、Hash取模方案
  根据取余分配到不同的表里。要根据实际情况确认模的大小。此方案由于平均分配,不存在热点问题,但数据迁移很复杂。
  图3 hash方案
  2、Range范围方案
  range根据范围进行划分,如日期,大小。此方案不存在数据迁移,但存在热点问题。
  图4 range方案
  四、分库分表的技术选型
  1、技术选型
  解决方案主要分为4种:MySQL的分区技术、NoSql、NewSQL、MySQL的分库分表。
  (1)mysql分区技术:把一张表存放在不同存储文件。由于无法负载,使用较少。
  (2)NoSQL(如MongoDB):如是订单等比较重要数据,强关联关系,需约束一致性,不太适应。
  (3)NewSql(具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性):如TiDB可满足需求。
  (4)MySQL的分库分表:如使用mysql,此种方案为主流方式。
  2、中间件
  解决此类问题的中间件主要为:Proxy模式、Client模式。
  (1)Proxy模式
  把SQL组合、数据库路由、执行结果合并等功能全部存放在一个代理服务中,而与分库分表相关的处理逻辑全部存放在另外的服务中,这种设计模式的优点是对业务代码无侵入,业务只需要关注自身的业务逻辑即可。
  图5 proxy模式
  (2)Client模式
  把分库分表相关逻辑存放在客户端,一版客户端的应用会引用一个jar,然后再jar中处理SQL组合、数据库路由、执行结果合并等相关功能。
  图6 client模式
  (3)中间件的比较
  图7 中间件
  由于Client模式少了一层,运维方便,相对来说容易些。
  五、分库分表的实践
  根据容量(当前容量和增长量)评估分库或分表个数 -> 选key(均匀)-> 分表规则(hash或range等)-> 执行(一般双写)-> 扩容问题(尽量减少数据的移动)。
  在这里我们选用中间件share-jdbc。
  1、引入maven依赖     io.shardingsphere     sharding-jdbc-core     ${latest.release.version} 
  2、spring boot规则配置
  行表达式标识符可以使用${...}或$->{...},但前者与Spring本身的属性文件占位符冲突,因此在Spring环境中使用行表达式标识符建议使用$->{...}。sharding.jdbc.datasource.names=ds0,ds1  sharding.jdbc.datasource.ds0.type=org.apache.commons.dbcp.BasicDataSource sharding.jdbc.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver sharding.jdbc.datasource.ds0.url=jdbc:mysql://localhost:3306/ds0 sharding.jdbc.datasource.ds0.username=root sharding.jdbc.datasource.ds0.password=  sharding.jdbc.datasource.ds1.type=org.apache.commons.dbcp.BasicDataSource sharding.jdbc.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver sharding.jdbc.datasource.ds1.url=jdbc:mysql://localhost:3306/ds1 sharding.jdbc.datasource.ds1.username=root sharding.jdbc.datasource.ds1.password=  sharding.jdbc.config.sharding.tables.t_order.actual-data-nodes=ds$->{0..1}.t_order$->{0..1} sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.sharding-column=order_id sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.algorithm-expression=t_order$->{order_id % 2} sharding.jdbc.config.sharding.tables.t_order.key-generator-column-name=order_id sharding.jdbc.config.sharding.tables.t_order_item.actual-data-nodes=ds$->{0..1}.t_order_item$->{0..1} sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.sharding-column=order_id sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.algorithm-expression=t_order_item$->{order_id % 2} sharding.jdbc.config.sharding.tables.t_order_item.key-generator-column-name=order_item_id sharding.jdbc.config.sharding.binding-tables=t_order,t_order_item sharding.jdbc.config.sharding.broadcast-tables=t_config  sharding.jdbc.config.sharding.default-database-strategy.inline.sharding-column=user_id sharding.jdbc.config.sharding.default-database-strategy.inline.algorithm-expression=ds$->{user_id % 2}
  3、创建DataSource
  通过ShardingDataSourceFactory工厂和规则配置对象获取ShardingDataSource,ShardingDataSource实现自JDBC的标准接口DataSource。然后即可通过DataSource选择使用原生JDBC开发,或者使用JPA, MyBatis等ORM工具。setDataSource(targetDataSources, DataSourceType.SHARDING.name(), "shardingDataSource");

唐小鱼穿高开叉裙,光脚上树,路人称对其好感全无不得不说如今的网红圈实在是太热闹了,似乎只要对自己足够自信就能加入到网红这个行列中来。不过想成为网红虽然容易,但想要在网红圈中长久地发展下去,确实还需要在各方面好好考量。有的人依靠2023春夏四大时装周4站13场,超模刘冰冰再创佳绩10月4日,2023春夏巴黎时装周落下帷幕。本季2023春夏时装周终于重回正轨,呈现出久违的蓬勃生机。从纽约出发,经伦敦米兰,到最后的巴黎,本季的四大时装周正式画上了圆满的句点。随国安耻辱之败,却要广州城队为此买单久古2022年足协杯第二轮国安01不敌泾川文汇之战的余波,是一个经典的蝴蝶效应。获胜者狂欢的同时,中超的另一支球队广州城却遭殃了,很可能心在滴血!赛后至今,舆论对国安非常不利。除了苹果安卓机拿什么和iPhone斗?8Gen2还不如A16昨天,高通正式推出了旗下最新移动CPU芯片骁龙8Gen2,发布会上公布的各项数据那是相当强悍,安卓手机厂商看得口水直流,纷纷紧跟着表态自己是8Gen2首批搭载厂商,想要衡量一款芯片比特币的周期规律1。什么是比特币比特币是由网名中本聪的加密算法工程师于2008年创造的一个互联网软件,全称为一种点对点的电子现金系统。这是一个网络记账软件。若干台电脑安装这个软件以后,运行这个软件2大国产CPU厂商的X86授权,能被英特尔取消么?众所周知,目前在PC领域,X86架构是当之无愧的王者,占了全球90以上的份额。X86架构为何这么牛?一方面是因为它是复杂指令集,在执行PC操作时,有一定的优势。二是X86架构,绑定人民财评保持信心,推动消费市场恢复增长来源人民网观点频道原创稿据国家统计局消息,今年110月份,社会消费品零售总额360575亿元,基本生活类商品销售和网上零售较快增长。限额以上单位粮油食品类饮料类商品零售额分别增长9浪淘沙世界杯将至,非法网赌再燃火苗!有赌球网站标榜自己为官方认证四年一度的卡塔尔世界杯即将来临,当球员们在赛场挥洒汗水时,激动的球迷观众也会在心中暗暗下注预判比赛结果,但下注如若涉及金钱赌博则变了味新黄河记者注意到,每逢大型球赛,都有不法分子利感情到最后,拼的是这两个字点上方听一禅第1953次和你说晚安文一禅主播一禅每个人在生命中会遇到谁,在前世就早有定数。在漫漫的轮回之路上,总会有那么一个人,看一眼就惊艳了余生。这一生所有的遇见,其实早已命中注飞机上有三样东西是免费的,乘客不要求,空姐一般不会提出现今,我们出行有多种可选择的交通工具,比如汽车火车高铁飞机等。这些交通出行方式在极大方便着我们的生活,无论是在出行时间还是距离上,都在给乘客提供着出行保障。但是,如果跨省或者出国,为什么有的人很有本事,但却没有草根挣钱多中醫疑難病證指南作者鄔學芳2022。11。16日本事就是能力,能力应该涵盖心能与体能。如果双管齐下,从政与艺业争钱都是如鱼得水,岂能会争不到钱呢?如果争不到钱的话,那可能这个人没有
盟重冰雪你见过那些真正可以打金的传奇了么?今天给大家介绍的盟重冰雪手游,就是一款可以打金的传奇。那游戏里到底怎么打金呢?第一种方式,游戏内有拍卖行,打到的装备,材料,元宝,经验等都可上架,拍卖行的物品是游戏内的灵符进行买卖百年日企尼康被国产手机打败,10年销量跌了95,半年亏了562亿曾几何时国内掀起过一股摄影风潮,众多摄影爱好者纷纷在高端摄像机上花钱投入,但时至今日,似乎已经没有多少人再去大力购买这类产品了,风靡一时的相机究竟是如何淡出历史舞台的呢?一直以来日央媒表示要过紧日子,提前做准备,手持4样东西心里不慌在过去的20年是我国经济发展突飞猛进的20年,各个行业都在迅速发展。其中发展最快的行业要数行业莫属,随着我国房地产行业的崛起,我国的房价也快速上涨。在2000年我国的平均房价还只有在县城开咖啡店,不卖凉皮是我最后的倔强决定在县城开一家咖啡店后,黄文庆每天都在小红书淘宝和抖音上刷两三个小时,把全网最火的网红单品都搬到了店里,他坚信大数据能发现人们的喜好,不仅是装修,连饮品和甜品也跟着短视频现学现卖我们最近又买了6个100元左右的好东西我们希望通过百元乐享栏目跟大家分享编辑作者们最近买了些什么新奇有趣的产品,让他们自己来谈谈这些百元左右的东西好不好用值不值得推荐。索尼WH1000XM3专用贴纸入手渠道淘宝入手价格世乒赛意外情况!樊振东下下签面临内斗,伊藤美诚再遇克星孙颖莎万众瞩目的休斯顿世乒赛不日就要开打,赛前最关键的抽签仪式目前也已经落下帷幕,下面我们就来一起看看男单女单男双女双这四个项目的抽签情况!世乒赛意外情况!樊振东下下签遭遇挑战,伊藤美诚红毯生图,娜扎皮肤细腻状态惊艳,张嘉倪全身化妆背后脱妆露bug现在明星们的精修图越拍越精致,越拍越高级,但也掩盖了大家的真实状态,这一期我们来看看近期明星的红毯生图。(本文图片都来自getty)baby宋祖儿状态佳,娜扎惊艳,姐姐们有法令纹也一洗头就掉很多头发,真怕自己秃了!问题出在哪怎么解决才有用?头发对我们来说有多重要?拥有一头乌黑浓密的头发不仅可以为你的美貌加分,还可以根据不同性格来修剪对应的发型,以此来为气质添彩。最让人心动的是,它的存在,让整个人散发着浓浓的青春气息!坚持吃黑芝麻的人,身体能收获哪些好处?健康有知识黑芝麻的养生功效特别强大,黑芝麻是一种价格低廉且种植广泛的食物,也是最接地气的平民滋补食品,中医认为,黑芝麻性平味甘,归肝肾和大肠经。同时,黑色入肾经,对于肝肾不足诱发的46岁一杭州女士,长期靠维生素E来淡斑,现在怎么样了?女性朋友不同意男性朋友,女性朋友几乎当中的胶原蛋白以及水润程度,一方面取决于自身的体质原因,另一方面则是跟随自己的肌肤变化而选择的护肤产品,无论哪一种方式人体一旦到了衰老的程度,再跌落人间的仙境,世界最美梯田之一,一生值得去一次老柴村在哪里?老柴村位于越南老街省沙巴镇东南约78公里处。老柴村位于山谷中,被黄连山和咸荣山两大山脉包围。抵达老柴村,可以欣赏到雄伟的未受破坏的大自然之美。村庄周围是拥有数百年历史