大家好,我是楼兰,那这次呢,咱们这个分股表的话题啊,就进入了第二个章节,小事牛刀,那在之前第一个章节曲径通幽,咱们主要是在大方向上跟大家聊了一下分股分表这个事, 对吧?最后也给大家演示出了啊,分库分表以及他内饰的一个场景,多数据人切换之间的区别。我们提到了说呃多数据人切换,他的关注点是在数据源,是一种比较轻量级的解决方案。而分库分表他的重点呢是在蛇口 啊,是一种比较重的解决方案,但是到底重在哪?还有很多问题没有去验证,对吧?所以咱们这一章节的内容呢,主要是实战,通过一些简单的实战 来印证我们之前提到的一些观点啊,让大家对于分工分秒这个事呢,有一个更加呃真实的体验。 然后咱们整个后续的这个演示过程呢,会用下定 sphere 这个产品来作为基础来进行演示,因为毕竟他是 这个分公司表目前来说最有影响力的一个,成一个框架了。然后咱们的也是重点呢,主要是这四种标准的分片策略啊,音耐、 standard、 complex 和 hint, 那这四种策略其实就是 shandisfere 进行分库分表的四种基础的策略。这四种基础的策略单独拿某一个来说的话,通常都是比较简单的,然后使用的业务场景呢,也是比较有限的。而 所以通常我们如果到了一些企业级真实的去解决这种分工方案的时候呢,单独用某一个策略可能还是不够的,但是他们就好像是啊,这种搅手架,就我们说的这种常规武器 啊,通过他们的一些自由组合可以衍生出很多复杂的企业及这种分库分表的一些啊策略, 所以呢咱们这一章节既是验证之前的一些观点,同时也是给后续呃下一个章节大展身手章节呢 啊去讨跟着带大家一起来聊这些企业级的解决方案啊,分股面解决方案的时候的一些基础对吧,咱们有了这些基础的工具你才可以想象我们聊出来的后续设计的这些企业级的分股分秒策略到底如何去落地,然后呢大概是一个什么样子对吧?好,那 在那我们现在呢就开始第一个问题就是了解下定 sphere 这个产品,那关于下定 sphere 这个产品相信很多朋友都不陌生对吧,或多或少你都应该了解过,所以呢咱们这一块就尽量的简约的去聊一下啊, 那下点 shift 呢,目前已经是阿帕奇的一个顶级项目啊,这边呢是他的一个官网,官网还是今年应该是二月份还是三月份啊,才改改版成这样的,做了一次大的改版,你其实也可以见下点是非的活力对吧。 嗯关于下定 sphere 呢,我们这它有三个重要的产品,一个是 gdbc, 一个 proxy, 一个塞的卡,塞的卡目前有,但是呢还没有成型,比如说具体要干嘛其实还不太确定啊,更多的是呃与这种零元声可能有一些呃规划。 然后呢关于 jdbc 和 proxy 这两个产品啊,相信朋友们应该都比较熟悉了,那他们做的事都是虾顶分库分表啊,只不过做这个事的形式不一样,那 jdbc 呢,是一个工具包, 他可以嵌入到我们的夹板应用当中啊,在夹板应用当中,我调用工具包的这些功能去帮我完成分库分表。而 proxy 呢,它是自己部署成一个独立的 my circle 服务, 部署一个麦收口服务,然后我们应用只需要像连接单机麦收口一样的去连接这个 proxy 的服务,然后呢,呃,通过 proxy 去帮我们把这些收口的操作进行分库分表啊,整个这个这个操作过程, 但是他们实现虾鼎的实现虾鼎分部分表的思路其实都是一样的啊,那么接下来大家再看这么一个图啊。呃,这个图,这是虾鼎是菲尔自己一个产品定位的一个图, 从这个图中可以看到什么呢?就早期最开始下定,也就是 gdpc 这一种思路,对吧?也就是这一个产品, 就是在我的应用当中做一个工具包,当把这个思路开始慢慢的往后完善了之后,又引出了 pro 是另外一个产品, 对吧?啊,有这两个产品之后,就形成了阿帕奇的虾定 sfere, 就是这个 sfere 是个生态的意思嘛,形成了以虾定为核心的这么一个技术生态。那再往后,我们当前是在五点叉这个版本,对吧?你看五点叉,六点叉、七点叉这几个版本时间干些啥? two plugable 是让整个内核呢变成可拔插 two developers 是简化它的一些扩展的一些接口 啊,就是他的过程 spi 那些扩展接口会得到简化,并且呢会做一些规范,对吧?支撑更多的说出个方言啊,这些事,七点差 to economic system 啊,去经济策略,这个 他想就是说想要构建一个以下定 spic 为核心的这么一个生态系统,那未来他可能就是一个数据库, 他可能就是一个真正面向业务的这么一个数据库,然后呢,将传统的这些产品,像麦斯克、奥瑞克这些产品作为他数据库的一个存储啊,当然这是他后续的一个构想。那我们从这里可以看到这个主线是什么呢?就是说从这个主线可以看到,其实 从四点叉往后的五点叉、六点叉、七点叉这些版本,那目前来看都是属于一些修修补补的升级的版本, 对吧?啊?然后呢,到了四点叉这个版本的时候,其实他整个沙顶分库分秒的这个思想已经大致的确定起来了啊,就是我的基础已经确定下来了,后续呢是构建上层应用的一个事。这就好比用这个 spring 呢, 我们说现在用 spree, 基本上是,呃,我们很多朋友都是在说 spree 已经成了我们吃饭的一个工具了,对吧?我们现在有,其实,呃,我了解过有很多很多朋友跟他们聊天的时候,有百分之七八十的朋友 可能都在,都无法想象说没有 spring, 那我怎么就开发啊?其实这事,嗯,在我看来也不是,这不是很正常,在我当年 开始参加工作的时候啊,那个 spring 还没有这么火,呃,所以其实整个生态还会更加活跃一点啊。但是从 spring 这个时候我们可以看到什么? spring 正是因为它的 ioc 和 iop 这么两条主线已经很早的确定下来了, 对吧?并且这个主线呢,在早年间已经得到非常多的验证,他们的基础已经非常的强壮,由此才可以构建出上层整个 supreme 的这种庞大的生态体系,对吧?像 spring mvc 啊,啊, spring data 啊,有 spring cloud 的 string 呢,还有像 spring uh, 直奔布塔等等一系列这些框架,对吧?那其实虾顶是非常目前来看啊,它的整个思路也大概是这样,就到我们当前这个版本呢,整个处理虾顶的这个思路,处理分公分面的这个思路 已经很明确的确定下来了,后续实际上是一些修修补补的版本。所以我们在熟悉这个虾点 sphere 产品的时候啊,对于他们的操作,其实 呃不是我们去了解的一个重点,这些重点相信啊朋友们都有一些开发经验了的话,那你去随便看一看这个视频,一两个小时就能搞定了啊。那我们重点是想跟大家分享聊一聊的是整个这个虾顶的处理思路, 我们咱咱把这个思路给聊明白了,那后续你再去使用的时候,即便你不会,稍微看看文档,马上就会了啊, 那这个思路大概是一个什么样子呢?其实这里涉及到分不分辨的几个核心的概念,那核心的概念是什么?我这里有一个自己简化的一个图啊,这个图是跟网上别人的总结都不一样,其实我们关注的重点是什么呢?就这几个 概念,就是虚拟表、分片件以及分片算法啊,重点就是这三个概念,具体是怎么回事呢?首先这是咱们的应用 app 对吧?因为 app 他与真实表交互的时候, 与正式表直接交互去做分库分表很难,中间有很多问题要处理,对吧?然后下领 sphere 整个店的中间帮我们做了这么一层啊,中间分库分表的功能,那其实不管是 gdbc 还是 proxy 呢? 他们的核心思想都是说我们应用当中需要接触的是不需要考虑分库分表逻辑的这种虚拟表。 比如说我一个 order 表,我按照 id 取模分成了十个片,对吧?如果我直接操作十个片很困难,那我就中间做一个虚拟表, 就是 order 这么一个虚拟表,它并不一定真实存在,我应用就可以像操作一个真实表一样的操作 order 这个表。然后呢,虾点 sfield, 它的产品会把我们将对 order 的操作 进行转发,转发到最后真实的十张 order 的纸表当中。 order 的真实表当中啊,这是它一个处理的思路啊。 然后呢,在整个处理过程当中还有两个基础的概念,就是分片件和分片规则, 比如说这个分片键代表成你的数据按哪一个关键字段来进行分片,对吧?分完片之后,你按一个什么算法分布到真实表当中这个分片,呃,这个分片的算法和这个分片的键就共同组成了我们说的一个分片的策略,这个分片策略 注意一下,他不光影响到数据的分布,也影响到数据的查询,那这几个概念到底是怎么回事呢?呃,接下来就给大家演示一下,我们说一下我们后面的这个演示的环境啊。呃,这个虾顶这个模块, 下面这个模块就是我们后面有给大家演示的一个基础的环境啊,首先从他的这个 pose 文件,它是一个 miving 项目嘛,然后从这个 pose 文件上看一下它的一个功能,咱们主要引入了什么呢?呃,下面引入了一些基础的啊,是 bring boot 的项目 啊,然后用 span bottle 来进行测试,对吧?然后下面是引入了一些基础的 oym 操作,咱们用啊德鲁伊的这个数据员连接去买 c 口。然后呢与数据库的操作呢,咱们引入一个 my bias plus, 这样简化我们去写 c 口语句的这些 过程啊,我们就可以不用不用写那些复杂的蛇口语句了。然后呢,我们核心上面核心是引入了下定 gdbc 的这么一个核心依赖,这是下顶级 dbc 提供的与一个是 prin 框加集成的这么一个核心依赖,基本上也是我们呃,开发过程当中的标配了。 然后下面这两个依赖啊,这两个依赖是 spring, 是这个 shadding sphere 提供的两个分库分布式事物的实现主实现杂件啊,实现的一个主见, 也是说下令 sphere 对于分布在分库分表场景上的分布式事物给我们提供了一些啊现成的方案,你就这两个主见, ok, 好。然后呢,我们整个应用会是什么样呢?我们这个应用会用 spring but test 方案进行直接进行测试, 那测试的时候这里是一个基础的构建的应用,对吧?这是我们 spring boot 的启动类。然后呢,下面我们会用 spring bootcom test 的方式构建这么一个测试的样例啊,测试样例在这里面,这些迈克, 这些 mipe 就是我们啊,去与数据库操作的时候是用麦麦里子 plus 进行了一些接口啊,标准的增生改查操作,像这种银色的啊啊,像这种,呃啊,不带的,这种操作呢,就咱们就不需要自己去写收口了,对吧? 当然你如果要定制一些其他的复杂车口,咱们也可以自己通过这种方式来定制啊,这是 my bad is plus 的基础用法。呃,然后呢,给大家说一下我们的接下来一个关注,就是它的一个配置项,对吧?那这个配置项是 bring, 呃,是 bring boot 集成,这个下列是否有它的配置项呢?大概是长这样 啊,大概是长这样。这个配置文件咱怎么看?一看起来感觉很多很乱,对吧?其实呢,我们针对之前这些概念是比较好理解的。首先咱们配的是一个 沙顶 sphere 的 data sauce, 也是说我们这里实际上是用 gdpc 来沙顶 gdbc 来集成嘛。那下顶 cdbc 在我的应用当中它就会表现成一个带有分库分表功能的 data sauce, 他在形式上跟我们直接使用的这种 deadsoulse 是一样的啊,只不过这个这个 deadsoulse 他有分库分表的功能, ok? 呃,然后呢,我们这里定义了说两个,这是两个真实的数据库啊,点 names 表示两个真实的数据库 m 一和 m 二。接下来这里就有配置 m 一和 m 二的他们的真实 直库的地址啊,正式库地址也是我们这里配了两个库,一个 costv 和 costv 二进行分购。后面的测试好。然后呢,我们要看的是一个虚拟表的概念,虚拟表概念在哪?就在这一块啊, 呃,整个关于 spring 下,嗯, spring 布特下的这个下点 sphire 配置这一块开头是固定的,对吧? tables 表示要配置虚拟表,这是一个关键字,然后后面的这个 cos 就表示我要定义的虚拟表的名字,你说我定义了一个叫做 cos 的虚拟表, 这个 x data notes 表示它的真实表,真实表。其中这个东西啊,它是一个 groupid 啊,表达是,表达是,这怎么看呢?这个表达是其实还比较简单,就是你只要记住到了大括号啊,到了大括号这一段就是一个变量就可以了啊。例如说我们, 我们这个变量时间代表的是什么呢?就是,呃,表示 m 一点 cos 下划线一,然后呢, m 一点 cos 下划线二, m 二点 cos 下滑线一, m 二点 cos 下滑线二,这样四个真实的数据库地址,也说我们是一个真实的数据分片,对吧?分到了这四个表当中,那就用这一个 grove 表达式来表示啊, 这个 cos 就是我们说的真实表。然后呢,下面就是一系列的分片的策略了,其中分片策略主要配置 table 是吹得起分表的策略,以及 database 是吹得起分片的策略。在分辨策略的时候,通常都要有一个 沙丁拖冷,这表示分片见,后面呢,这个就表示分片的算法,那这一些配置配到一起,就相当于定制了一个策略,对吧?这一块, 呃,这一块,这个 k 加的 rat, 这一块呢,实际上就是对他的主见进行一个生成,我们说主见要采用一些啊重新的策略来进行定义,对不对?那这里实际上就是使用呃,美团开元的这个,呃,这个是推特开元的这个 slowflack 雪花算法 来生成分布式的主见, ok, 其实整体来看他的配置就是这么几个啊,一个是什么呢?虚拟表, 对吧?分片键、分片算法核心就这几个。那接下来我们的操作,接下来我们这个 test 当中的操作呢?啊? test 的样例当中的这些操作,比如说这个 cos 表的操作,实际上他 就是针对 cos 这一个虚拟表进行操作啊,理解吧?就是 mibelis 操作方式嘛,对吧?他默认默认情况就是与这个类名相同的这个表去进行操作,这里对应表的一个阶段,所以我们操作的是 cos 这样一个虚拟表, 然后他的真实表分布在啊这四个分片上。 ok, 那这就是我们基础的一个环境,接下来我们就是主要是通过配置的方式,配置不同的策略来来形成不同的一些啊,是演示的结果。 ok, 好,那就是关于这个前面那个基础的介绍啊。
粉丝2.7万获赞3.2万


开元江湖不只聊开元,大家好,我是阿蒙,今天和大家聊一聊另外一个阿帕奇的顶级开元项目,十二零索菲尔。这个项目呢,是在当当诞生的,然后在京东发展起来的。二零一五年,十二零索菲尔的前身十二零 gdbc 诞生。二零一六年,正式开元,二零一八年十一月,正式更名为十二零 sufpar, 并进入阿帕奇基金会开始。 二零二零年四月,经历一年半,沙林此废业从阿帕奇毕业,成为阿帕奇基金会的顶级开源项目。沙林此废业是一套开源的分布式数据库增强计算引擎,它通过可插拔架构 构建基于数据库之上的生态系统,实现了包括数据分片、弹性、伸缩、加密、脱敏等功能。二零二一年四月,十二零词费尔的商业化公司此费业一 x 成立。二零二一年十一月,发布十二零词费尔五点零 ga 版本,是基于四点零的可插拔架构的全面升级,也是 database plus 的 首个理念实践版本。据了解,目前三零四分业项目总计一百多万行代码,累计贡献代码超过千万行,并且被全球两百多家企业登记使用啦。以上就是本期的开源分享,我们下期见,拜拜!

啊,从我来看,开源其实是一种商业的手段,那么啊,开源也好,闭眼也好,其实都是一家公司去实实现他的商业目的的是一种途径。那么有一些项目他可能非常适合去做开源, 然后呢?去做商业化,然后有一些项目他可能不一定适合去开源,所以说有的项目可能是碧源,去商业化也会很成功,然后呢,有的项目开源商业化也会很成功,那么有的项目也许他可以开源,也许他可以很流行,但是他可能不太会去商业化,这个其实是由项目的特征所决定的。

今天来讲一下垂直分库和垂直和水平分库。那我们刚才已经讲了为何要分库分表,那分库分表他的目的就是什么呀?就是呃,是减少什么呀?我们的性能就是 优化我们性能。一般我们什么时候分表呢?一般有人说是阿里给的一个什么,一个操作就是什么呀,大于五百万数据,然后点击币,然后我们就可以进行什么进行分库分表, 那他里面就可以什么呀?那如果你要增加 ccpu 和内存,然后确认量,那这种是什么?比较昂贵。所以说我们可以通过分库分表的方式,然后去来 增大我们什么样。我们的开发新词就是性能,就是新词就是我们的呃,硬件的性能。那我们分库分秒一般可以有垂直拆分。什么叫垂直拆分呢? 所谓垂直拆分,它里面首先可以按库进行垂直拆分。比如我们这边是一个产品,就是以前是一个数据库,这个数据库的时候,如果我们垂直是不是拆分?就是把什么呀?把我们的产品表,然后拆拆,分成什么单独的一个产品库。我们的订单表 产生定了一个是地南库积分表,然后有个积分库,那就是这边就是所谓的垂直,这就是垂直。 垂直他其实是一种简单的逻辑分割,比如我们的数据过程里面有什么 part 啊,然后 out, 然后死高,那这边是积分,我们把它分成不同的库,那这本就叫垂直才分。 那就是一个库定一个表,一个库,一个表,一个库一个表。那垂直分库的一个优点,他能 根据业务场景进行什么进行孵化,比如一个单一的场景,那只用到什么呀?两到三张表。那基本上那应用和社区货可以拆分出来,然后对应呢?你啊对应的服务。 那我们还有什么垂直分表?所谓垂直分表说比如这一个商品表,里面有很多资段,那资段说比如我们这边商品,我们常用的资段只有什么呀,一到五, 那我可以把什么呀?把它分成一个什么呀?单独的一张表啊,六七八九十到二十,他是一单蹲单独表,那这张两张表合成一张整体的表,那这种就叫什么?就叫纯植非表。 那垂直飞表说那这边就是我们刚刚说的一百个字段,前二十个字段是一张表,后八十个字段是一张表,他整体凑成一十一十一百个字段的一张表。那这种就是我们所谓的什么呀, 我们的飞表。那就是像什么商品表,然后商品的表额表 s 也是,是浮表和主表。 那垂直拆分的优点和缺点?优点就是跟着业务进行分割,和最近流行的微服务相似,然后它里面是方便五合和管理扩展,那它里面可以拆分多台服务的。什么 cpu io 性能比较提升, 那缺点就是什么?我们这两张表就没有办法,什么他没有在一起,他就无办法,是不是没有办法进行什么?进行招人操作。那这边就是什么呀?无法招人操作,因为从很大的改造,那只能是通过聚合的方式,然后进行实现。增加了什么呀?开发难度。 那当库是当是当单库中的数据指标实际上增大的时候,依然没有得到有效解决,那分公式事务也是一个对应的难, 那说明是缺点。那水平三分。那当某张表达到一定什么样程度的时候,那前面说的我们两两千万以上就会出现什么性能的,呃,是瓶颈。 那我们怎么进行拆分呢?那这边就是通过水平拆分的时候,就是一张表,比如我们有一到一千是奥德一,然后一千万到两千万,然后再放在奥德二里面, 那两千万然后到三千万放在奥特三里面。我们会把一张表按照什么呀?按照一定的方式,然后给他进行水平猜歌,水平猜歌图,然后放到不同的什么呀,第一呢,表里面。那这种就是我们所谓什么呀水平拆分。 水平拆分。那水平拆分的时候,那你比如这边就是我们的订单表,然后放到什么呀?根据低音的什么低音的范围,然后落到一二三四,低音的 什么就能库上面。那这边就是按照怎么样按照它里面进行什么进行分库,那就是水平拆分过后,然后放在不同的库上面。那这就是我们所谓什么呀,我们的水平拆分。 那如何拆分呢?拆分的水平拆分一般规则有定什么时间硕值列表,然后按照地域,然后什么按照地区,然后进行分类,然后它里面哈西,然后分片,然后到已知性哈西,那还有多种符合查询。 那水平产品的特点就是免,就是无限扩展,就是能无限扩展。他优点是无限扩展,那不存在谋获 某个表过大的情况,那能够有更是较好的应对。高并发,那改动比较小。缺点就是什么呀?就是无法招引,然后需要一部分路由,然后进行计算,那这边就会有一致性问题。 那这就是我们所谓什么呀,我们的这一个优点和猜的意思和缺点。那这边就是我们的什么水平拆分的优点和缺点,那这边就整体的时候。那你就知道我们什么叫垂直拆分。垂直拆分的时候就是按照不同的库,然后进行拆的,是放到不同的什么库上面。 水平拆分就是一张大表,按照一定的规则,然后把它拆分成小表,那这就是我们所谓的水平拆分。

大家好,我是代言,我是解决方案工程师。我是吴伟杰,我是研发工程师。 我是苗丽瑶,是沙丁斯菲尔 onclog 的工程师。我是赵锦超,我是沙丁斯菲尔的研发工程师。我是孙九香,我是 ui 设计师,我是慧欣,我负责商务合作。 我们是斯菲尔盖茨团队。我们这次的参赛项目是 sharing sophire 阿帕奇。 shinning sphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性、伸缩、加密等能力对原有数据库进行增强。我们希望让更多的企业能够享受到 开源数据库增强引擎的便利和高效,为企业的商业创新加速助力。 我们相信全球顶级开业项目的技术实力,我们也期待与优秀伙伴同行,携手创造更加开放共存的技术世界,共同见证这个行业的不断突破和进步。一二三加油!