粉丝2.1万获赞9.5万

计算机专业转 ai 就 给你三个月时间,我们该如何安排?别再重复踩坑了,地雷指南带你起飞!第一个月变成语言和框架很多人有疑问, java 和 c 加加能搞大模型吗?答案是基本不能。 java 生态差, c 加加仅限底层优化学习的首选语言是 python, 拥有最大的 ai 开源生态框架。学 python, 学 python 领域第一支持框架。 接着去学基于神经网络的深度学习,这部分你需要有一个十分清晰的框架,先搞清楚什么是神经网络,神经网络中的主流模型有哪些,比如自然语言领域里面的 gpt l s t m, 计算机视觉的 c n n 卷积 v i t, 最后动手搓一遍 transformer 就 可以了,因为涉及到算法,我用简单通俗的视频教程独自拆解了,放在视频最后。第二个月两个选择,如果你时间充裕,建 议做一个小的项目,可以简单的微调一个 burt 模型,目的就是承上启下,把知识连贯起来。如果你着急就业,可以直接学习应用层技术,这部分主要学习基于 r a g 的 工程技术。这里的雷区就是不只是搭建一个简单的知识库,就 是掌握 r v g 了,而是先学习 r v g 的 工作机制,比如有哪些组建工作原理和向量模型,学会解决大模型幻觉、上下文丢失这种问题。 第三个月学习 a 阵的搭建和设计。注意避雷的是一定不是用一些低代码平台,在别人搭建好的工作流上拉拉拽拽,这不是学会了 a 阵,一定是未来企业的一线需求,一定要去拆解 a 阵的设计模 块如何针对实际的场景去设计思维链?如何让 ai 自主调用工具去完成任务?这个板块百分之七十是设计能力,只有百分之三十是大模型本身。 如果你也没有方向,不知道从哪里学的话,我把视频中提到的知识都对应拆解成系统的教程,总共一百八十九级的大模型核心知识,感兴趣可以拿去看看,一定比你网上找到零碎的教程更有含金量。

第三句这么长,当然它其实里面有一个分号,你也可以人为的把它直接断开,写成两句话,不然我们的动词太多了。你看啊,中国持续开展,这是第一个动词,全面实施。第二个动词,大力推进 啊,包括消除污染。你看这一大串的动词,你不可能说一个原型,后面跟了一堆这种非谓语,这光这一句话中已经有很多非谓语了,那你就把它断开吧,好不好?来第二个,同时大力推进,这不是又,又是他的动作,开展 房屋和什么什么的这种建设,努力为啊,什么创造,努力创造,是这样的吧,让城市更美丽, 让城市更美丽、更宜居。你看这多少个动词?所以当我们看到如此之多的动词时,你可以直接把它断成两句,无非就是在这再加一个主语吗?同时中国又做了另外一大串事,是不是?好,这就是啊,它的一个结构。 那么知道了这些之后呢?我们就把这两句话分开来翻,行不行?分,分开来翻啊?好,我们来内部的去分析一下。首先中国持续开展,开展什么呢?开展的是城市生态修复和功能修补,其实这两个还行,我们还可以把像这种什么城市 生态的修复,可以找着一个形容词,也可以找着城市的这样的形容词。那咱就不用调蓄功能,修补那功能,那功能咱们就可以用功能的功能的修补。同学们,我自动的,其实都会给你加上一个的,因为他本来就有这样的一个修饰关系。 好,接下来全面实施,他在动词前面都加了一些副词,发现没有什么持续开展,全面实施,大力推进。如果这样的副词你会写,那更好,如果你实在不会写,你哪怕把这个副词不写也是可以的。好吧,也是可以的。他没那么的关键,只是说语义上没那么完整,但是语法上他肯定是对的。 好,全面实施城镇老旧小区改造,哎,他指的就是城镇老旧小区的改造。那既然我们在这又出现了一个什么的什么,那这样长的一个定语呢?他好像没办法直接放在前面,那我们直接就可以说他实施改造。 对谁实施改造呢?哎,对这些城镇的老旧小区,可以把它当做定语,往后放行不? 往后放啊,这是可以的。好,接下来我们来继续啊。再往后看,它提到了大力推进城市园林绿化, 哎,这个可以不调,因为我们会有固定的短语表示城市园林园林绿化消除污染。那么这个消除污染呢?你可以把它,哎当做一个,整一个新的结构。对, a、 o b 的 结构啊,你可以当新的结构。你也可以选择 说大力推进园林规划去消除污染,行不行?代表着一个目的,把他俩整合到一起,因为动词太多了。同学们,我们并列 一二三啊,一二三四太多了,那我并列四个,把这个大力推进这一块整合到一起,说推进园林绿化去消除污染,这样是不是更简洁一些?好,那么处理完这些之后呢?剩下的就是词,因为语句咱们已经搞定了。那咱来看一下啊,主语叫中国 持续,而我刚用了一个词叫 continuously, 那 咱换一个词吧, constantly, 同学们,考试的时候你不会换词,你就不换了行不行?你不会换词你就别换,你不能说非得为了追求词汇的多样化,你写错那不太好,是不是好说啊? constantly, 开展开展叫 carry out 或者是 conduct 都行,但是在这儿啊,我们要用到它,它的第三人称单数的形式,英文主语变成了 china。 好, 你可以用 conducts, 你 或者用 carry out 都行。什么呢?城市生态,城市 urban 生态, ecological。 其实像这样的文章还好写呢,为啥呢? 它就是词汇的罗列嘛,对吧?所以它其实比较机械的话啊,比较机械好,城市的生态的修复,修复啊,我们可以用 restore, 大家都知道这个词叫恢复,那既然我们在这儿,因为是要用一个名词,所以咱就用 restoration 就 行,和 功能的修补功能哎,我们说 functional 修补修理,小时候就学过这个词,叫 repair, 知道这个词吗? repair 可以的,是不是好,这是啊,第一个词搞定了,第二组呢,咱们用 i g 的 形式全面实施,又出现了,实施,对吗?同学们,刚刚,哦对,这儿出现了实施,刚出现的是一个,哎,这个叫什么呀? 叫开展,开展实施,都可以用同一个词啊,都可以用 carry out, 但是我已经用过了,那我就换词, comprehensively, 全面的 又是一个副词来修饰动词 implement, 知道 implement 这个单词哦,非常好洗牌。说得很对,是不是 implement 确实是什么呢? 改造,改造,改造指的就是我们要对这些老旧小区进行一个翻新,翻新啊, renovation, 知道这个词吗? renovation 叫翻新,翻新,革新好, of 一 些老的,一些城镇的老旧社区啊,那你就可以说 of old 老旧小区啊, residential nebranches 行不行?老旧社区啊, neighborhoods, neighbor。 少了一个 g, 是 不是少了一个 g 啊? g h。 好, 那我们就写啊,说要对这些老旧社区进行一个改造, 来,接着第三个大力推进。又出现大力推进了啊,你还别说,这篇文章中用的这些词重复率非常高,所以对我们来说 挑战就更大了一些,因为我们有时候想避免重复嘛,对不对?你可能就会难免的会写到重复的词,没关系啊,不要强求自己,先保证,对吧,好不好?先保证。对啊,好,我们看一下大力推进。我们有一个非常官方的表达叫 vigorously, 我 们都知道 vigorous 这个单词表示, 哎,非常。怎么样啊?充满活力的是不是强有力的推进?我们又用到了 promote, 用它的安静形式 promoting 啊,城市园林绿化城市园林绿化啊,用的是 urban landscaping, 这是一个非常标准的表达方式。 非常标准的表达方式叫 urban landscaping to 消除 eliminate pollution。 我把后两个动词整合到一起了,我没有去再写一个 eliminating pollution, 我 直接整合到一起。好,这就是啊,我们见到的整个句子。 同时,中国大力推进城市基础设施体系化建设,哎,它其实指的就是体系化的建设, 对不对?体系化的建设,哎,这可以当做是一个名词短语。而这个体系化的建设呀,是对谁的体系化建设,是不是对基础设施的体系化建设,所以啊,我们就可以把这个体系化建设放在设施之前, 对吗?放在基础设施之前。哎,很好,你说的很对啊。好,那么这个之后知道之后呢?来,接着啊,来看第二个,开展房屋 建设和市政建设普查,他做的事情就是开展普查,咱们一定要抓住最核心的以及安全隐患排查整治,他要做的事情是要去排查整治安全隐患,是不是 要对这个事情啊,进行一个安全隐患的排查整治。那么所以我们在看到这些之后啊,咱们就知道 咱要调序,没问题吧?咱要去开展,开展什么呢?开展排查整治这些安全隐患要把它调序。那么前面呢?要去开展普查,对什么的普查呢?哎,我也把它往前放,行不行?往前放会更容易一些啊,那我就往前放,或者说遵循一致吧,遵循一致我也往后放,要去开展 这些东西,对这些东西的普查,也就是说要去普查这些东西,所以这样一调序之后,咱们的这个语序就通了,就跟中英文就一致了,是不是?好,接下来第三个努力。卫士民啊,这不就是也是一个修饰民,修饰语吗?那他指的就是卫士民,卫士民干啥呢? 为市民去创造高品质的生活环境,所以我要说创造高品质的生活环境,为市民,这叫壮语。往后放行吗?让城市更美丽、更安全、更宜居,这三个就可以把它放一起来用了啊,直接并列就行。 对,凯恩说的 simultaneously 真棒啊,这是一个非常高级的词汇了,你会用是不是?当然,如果同学们达不到这种程度,那我们有很多替换的,简单的,最简单的就是 at the same time, 可以, 还可以用 meanwhile, 还可以用 in the meantime, 这都是关于同时的含义。那么这个 simultaneously 不 仅仅是我们得知道这个单词还得会写,对,真棒啊,特别好。这就是我们提到的这个开头叫同时,同时结束之后呢,接下来我就可以写主句了,说中国 大力推进,刚用了一个词,叫做 uh vigorously promote。 现在呢,我再换一个词吧,我用 forcefully。 force 大家都知道,指的是强有力的 forcefully 推动推进,我还用 promote, 用原啊,用第三人称单数就行了。推进什么呢?城市 基础设施体系化的建设。我先说体系化的建设,哎,我可以说 systematic sister。 哎,我咋,我咋不会写单词了? sister 啊,这样来写 systematic construction of urban infrastructure, 非常好啊,这就是我们见到的基础设施,这个单词也是有点难度。 infrastructure 好,这是啊,第一点,第一点,中国大力推进啊,大力推进城市基础设施的体系化的建设,所以我把这个体系化建设往前放了。好,这是第一个部分。第二部分要去开展普查。 那么同学们,第二块啊,要去开展。开展普查是啥意思?是不是就是做调查的意思?那么做调查咱们就可以选择一个,嗯,我刚用的 conduct, 是 不是 conducting service, 当然 carry out 也行,都可以。对什么进行普查呢?欸,对这些东西的普查啊,一个是房屋建筑和市政设施。房屋建筑 of houses and public facilities。 同学们,你看啊,这个地方我没有把这个建筑非得写上,因为房屋本身就是一种建筑嘛,所以我人为地把它去掉,可不可以呢?市政设施,我把它翻译出来就行了, 那么这也是减轻大家的负担,因为有时候我们翻译的时候会比较生硬,你真的会字,对字,这时候你就要考虑这个意思到底是啥,对不对?意思到底是啥啊?好,那么他要去普查,对吧?他要开展,开展普查,他不仅仅要开展普查,他还要做另外一件事,因为这个 conducting, 他 后面啊,是要加两个动作的,两个, 第一个动作是普查,第二个叫排查和整治。排查,排查就是调查,嗯啊,以及 the investigation, 这叫调查以及整治,我们可以用 prevention 防止预防。调查和预防什么呢?安全隐患,也也就是说有一些潜在的这种安全方面的 safety。 hazard, 同学们知道这个单词吗? hazards, hazards 表示的意思就是,哎,这种隐患,这种危险都行啊。好,这是第二块搞定了, 到了第三块呢,努力这块就简单了,努力创造,哎,努力创造,哎,那它指的就是它非常啊,怎么说?嗯, in an, in an effort 可以 不?或者说还用老师刚说的 try to 或者是 spiring no effort, 那 我换一个 making efforts, 咱还有这个词,是不是 making efforts to? 努力去创造高品质的生活环境这块儿很简单,因为刚提到过高品质的叫做 high quality, 咱直接放在前面就行了。 living environment 还是环境啊? 为谁呢?嗯啊,努力工作, working hard 也行,可以啊,为谁?为市民 citizens 就 行了。最后一个啊, and making。 第三个,最后一个应该不是第三第四个是吧? and making cities, 让城市 make cities 更加的漂亮, more beautiful, 好,第二个呢,叫做更安全, more safe, 我 都尽量用一些简单的词,就是大家能够得着的词啊, and more livable, 你 会不会这个词 livable 一 一句的,如果这个单词不会,那我们就把它变成 more suitable。 我 们都知道, suitable 表示适合的 for living 解释一下也行,对不对?哎,也解释一下也行, good, 可以 啊。好,那我们看一下。你看,这一项,一解释就是更适合居住的,这不就 ok 了吗?是不是? 好,那么整个啊,你看我说这句更长吗?当然,这里面都是替换词,你们选择一个自己喜欢的,自己会用的就行了。这个不影响这个词写的高级或不高级,影响不大。好吧,来,咱看啊,第一个动作说,中国大力推进第一个动作。 好,接下来第二个动作, conducting, 开展调查。那么第三个 making efforts, 努力去干啥?努力去啊,创造环境 好。第四个 and making。 一 般啊,我们都是把最后一个和倒数第二个用一个 and 并列,这样的话就形成了 这四个词的一个并列。那我们采取的措施还是啊,保留主干的谓语动词,剩余的用 i n g 的 形式,用到非谓语的形式,你可以理解成在这儿就是一个伴随状语的形式。在英语中,伴随状语这种写法还是挺常见的。

这才是双十二普通人五千出头最强版本装机,答案全部花在刀刃上,没有一点浪费,小白可以闭眼放心操作业。 cpu 你 就选 amd 锐龙七五千七百乘九百五十元,原生态八核心,十六线乘三十六兆的大缓存,三点四个字的基础频率,加速频率可高达四点六,轻松驾驭网游核三 a 主板,华硕 b 五百五十 mk 二个五百元低 g 加棒,数字供电控制, 全面散热焊智能调校,后置两个 usb 二点零焊四个 usb 三点二接口,双 m 二扩展接口,且支持二个不登校调节显卡,华硕 rtx 五零六零 o 八 g 血爆两千五百二十元欲知不觉,选华硕就对了,采用双滚珠轴承风扇, 低功耗八 pin 独立供电,双八 os 设计,金属通风背板一开分辨率下可畅玩市面上所有主流游戏。内存自己随便淘,两根金士顿十六 g 三千六百赫兹六百元左右组成双通道游戏,性能提升百分之十。由于内存价格虚高,建议在不影响性能的情况下,能 省则省,毕竟我们是普通人。酷派幻享 s 五零零 p 幺五百一十二 g 四百五十元精选 tlc 颗粒,高效主控石墨散热, 他们家 s l c 智能缓存读数高达三千两百兆每秒。散热器,赛普雷 g a 六零零八十五元十二厘米智能温控风扇,自带炫彩灯效, 全动力反氧化六热管,与 cpu 零距离接触,快速导热,温度更低。电源,国货之光先码出去。六百五十一百七十五元八十 plus 认证主动 p f c 十二厘米静音风扇出厂,标配全套编织线,三年质保,只换不修,记得点个免费的关注哦!



呃,大家好,这里是 ocean base 第一节课程,这个课程的观众有一些可能已经使用过 ob 了,但是还是会有一些观众还没有接触了解过 ob, 所以 第一节的课程是对 ocean base 数据库的一个简介, 对部分没有接触过币的同学来说呢,可以对币有一个比较全面的认识啊,同时也为接下来的课程打好基础。这次课程内容主要会对币的发展历史、币的各种核心特性,适合币的业务场景以及币的周边生态工具这几个方面进行一个介绍。 首先我们先简单回顾一下分支数据库演变的历史,我们选取了其中一个角度来进行介绍啊。十几年前的时候,大部分的企业的核心数据库基本都是 i o e 的 架构,也有一些是 b two, 但是 l e 和 d b two 都是传统的集中式数据库,并且它的性能和核显都依赖比较特定的高端硬件。呃,比如像 ibm 的 小型机, emc 的 高端存储设备等等。这类集中式的数据库如果要扩展,一般首选都是会进行垂直的扩展, 但是加硬件的成本是很高的,而且可能到了后期因为机柜的限制,或者说像奥瑞克 rek 本身的一些限制,水平扩展的上限会是比较低的。 那为了解决这个问题,慢慢就开始有了一些分布式数据库中间件的产品,通俗的来说就是分股分表的产品开始流行起来了。大家知道有很多开源的比较著名的中间件啊,比如像 mycat, 还有阿里早期开源的中间件 ko 吧等等。中间件主要解决的一个问题就是水平扩展的问题, 在中间键下面会对接一批买私募的数据库,这套系统都可以运行在普通的叉八六服务器上,这样就去除了高端硬件的限制,但是这样一个架构,它也会带来一些新的问题,尤其是跨库的查询,还有跨库的事务, 在这些查询和事务上面会有诸多的限制啊,使用过的人都是深有体会的。第二个就是数据库的扩容啊,它会涉及到一些数据的重分布,还有数据的迁移之类的问题,可能需要 dba 人工进行介入,因为还是比较麻烦。 然后分库分表又向着原生的分库数据库来演变啊。原生的分库数据库一般都会有原生的色控引擎啊,支持分库的查询和分库事务。对于业务来说呢,色控的写法和传统的单机数据库的色控的写法是一致的, 业务就不需要去关心这个查询是不是快捷点啊,是不是有分库事务啊等等。而且部署模式比中源件的价格也更加灵活,高可用和自诺的覆盖能力也比中源件有很大的提升 啊。 osbase 就是 原生分布数据库里面的一个代表啊,它是完全自研的,从伺候到存储,自顶向下都是自己设计的 啊。接下来我们来简单的了解一下 osbase 的 发展历史啊。 osbase 跟我们每一位观众其实都有着密切的关系啊 啊,大家应该都用过支付宝,支付宝里面你最重要的那些数据都是跑在 osbase 上面的,但是 osbase 最早的一个业务是淘宝的收藏夹业务, 二零一零年的时候, owen face 的 项目立向啊,就是为了解决淘宝收藏夹的问题啊。到目前为止,淘宝的这个收藏夹业务还是跑在 owen face 上面啊。收藏夹的特点就是数据量很大,然后市里很多像购物车这种 商品,数量上限一般都是一两百,但是收藏夹的这种商品数量上限往往都是好几千啊,考虑到淘宝的这个用户基群,基群规模早就已经破百了,就好几百台接点 啊。这些年 obi 一 共有五个大的版本, osbench 早期的零点几版本像是一个分布式的一个 kv 存储, 然后在二零一六年的时候完成了一个重构,就是一点零时代和二点零时代。那重构之后呢, osbench 就 变成了一个原生的分布式数据库,有完全自研的搜索引擎和存储引擎,还支持多副本和高可用。 osgate 对 外商业化是从二零一六年一点四版本开始的啊,南京银行是第一家上线到 osgate 上面的外部客户,我们最早也是从金融行业的客户先入手,但是现在实际上早就已经扩展到了各行各业啊 啊!到后面三阶版本的时候, osbench 在 h type 方面的能力得到了一个很大的加强。最后到现在的四阶版本, osbench 提出了一个单机分布式一体化的价格,让小规格的机器也能够以单机的模式来进行来运行 啊。 osbench 在 单机部署的时候,性能可以不输传统的单机数据库,分布式部署的时候呢,又能提供扩展性,在水平扩展的时候可以自动地进行赋载均衡。 那接下来介绍一下 osbase 的 几个核心特性。在介绍这些核心特性之前,我们先来简单看一下 osbase 的 整体架构。右边这张图,它就是一个 osbase 三副本部署的架构图,比较常见的部署方式一般是单副本、三副本,还有五副本。 那图中这种部署方式下面业务的数据是有三份的啊,我们叫三副本,其中有一份叫主副本啊,主副本就是对外提供服务,也就是读服务和写服务。 那三副本的话呢,它就是会有三个可用区,也就是三个纵啊,每个纵里面会有一份完整的数据副本,那每个纵里面可以有一个或者多个 o、 b、 c 的 节点。 这张图中可以看到每一个纵里面是有两个 o、 b、 c 的 节点的啊,有三个纵就是六个。那每个 o、 b、 c 的 节点,它同时都是具备计算能力和存储能力,是存在一体的。 observe 和 observe 之间功能也是对等的。那我们在建表的时候,是可以指定表的分区方式,比如说哈希分区、润志分区、丽思分区,当然我们可以不指定,不指定的话就是一张表一个分区, 比如说我们有一张表有八个分区, p 一 到 p 八,你就可以看到有四个分区在上面这台 observe 上面,然后另外四个分区在下面这个第二台的 observe 上面。 那单机的场景和分布式的场景,它的持久性的保证是不一样的。在分布式的场景下面,当你有一台机器,当你在一台机器里面把这个日制给落盘啊,并不能保证说一定能做到持久性,因为分布式的环境下面节点是不可靠的,它随时可能会宕机,随时可能会下线。 那这个时候呢,我们一般会引入一个高可靠的一致性协议,那所有的一致性协议,它从本质上来说都是 paxos, 也就是当你的多数派系成功的时候,才可以认为说是真的持久化成功了。 osbench 里面,它的不同纵的相同分区之间,它会构成一个 paxos 的 group, 就是 paxos 组,那通过这个 paxos 的 协议就可以实现分区级别的高可用。 大家可以简单理解成一个派克族里面包含一个分区的三个副本,也就是我们刚刚提到的一个主副本和两个从副本那途中我们可以看到三个 p 七分区的副本,有一个蓝色的主副本,还有两个灰色的从副本。三个 p 七分区的副本会分布到三个不同的纵里面。 osbeth 整个架构的高可用性和数据的强一致性就是通过多副本还有派克斯特的协议来保证的。 o b 的 上层它还有一个叫 proxy 的 一个组建,它是一个返向代理, 它的作用就是把 circle 路由到最合适的这个 o b c 上面去执行。那我们通过一条 circle 来访问数据的时候呢?如果 proxy 可以 直接的根据这个 circle 的 固立条件来确定这个数据分布在 p 一 分区里面, 那 proxy 就 会把 circle 给路由到纵一里面上面这台 o b c 上去执行。因为这台 o b c 上面有 p 一 分区的主副本,也就是蓝色的这个 p 的 副本。 那这个所谓的 o b 的 核心特性啊,是同时适用于 ocean base 的 企业版和社区版,它是最底层最基础的能力。 那 ocean base 它总结下来的话就是主要有这几个优势啊,高可用、低成本、高兼容、水平扩展、 h type, 还有多租户。接下来我会逐一的简单介绍一下这几个特性。 而 osbase 第一个特性就是高可用,这个特性也是分布数据库原生具备的一个优势,传统数据库像 oracle 或者 my sql 都是基于这种主备的模式去做高可用,像 my sql 基于主从复制啊,在对数据一致性要求比较高的场景下,是很难达到用户的需求的。 那 osbase 是 原生的分布数据库,基于 paxos 一 致性协议,它底层就可以保证我至少有一个从副本和主副本的数据是相一致的, 那所以 osbase 原生就具备整高可用的能力。少数派的副本发生故障的情况下呢,集群就会自动的把业务流量切到另外一个健康的副本上,对于集群来说,它可以保证数据不丢,也就是这些 ppt 上面写的这个 ipo 等于零。 我们在四点叉版本上 osbase 它的故障恢复时间我们可以做到小于八秒,如果主副本所在节点发生故障,在八秒之内就可以选出新的副本作为主副本,然后继续给业务提供服务。 那沃申贝斯的集群是可以跨机房,也是可以跨城市来进行部署的啊。如果对可用性要求比较高的话,常见的部署方案有两地三中心部署或者三地五中心的部署。 右边这张图就是一个两地三中心部署的一个势力,在深圳有两个机房,然后杭州有一个机房啊,在这种部署的方式下面三个机房中有任何一个机房出现了故障啊,因为多数派的副本都还在,所以整个集群依然是可以对外继续提供服务的, 那高可用能力对于运位来说是非常友好的啊。 dba 可能刚刚收到告警,说有一台机器宕机了,当他登录上这个服务器的时候,业务流量可能都早就已经帮你自动切换完毕了,并且在底层的原理上面会帮你保证了切换的时候绝对不会丢失数据啊。这个是相比马斯扣一个很大的优势 啊,刚刚刚刚提到了说分布式数据库会比传统单机数据库有各行各方面的优势,那我们就顺势的介绍一下最开头提到的这个 osbench 四点叉版本的一个重要特性啊。单机分布式一体化, 我们来看一下这个单机分布式一体化对用户的业务存在怎样的价值啊。对于很多企业,它都是有一个从小从小到大的过程, 这个业务存量大的过程里面呢啊,很多厂商采用的方案往往是上面这个样子,就一开始可能他们因为量比较小,用的是一台小规格的机器,然后部署一个买侧会就够了,那当他的数据量再变大一点,那这个时候他肯定会选择换成 oracle。 那业务量再大的时候呢,可能单机的 rico 也支撑不了了,他需要一定的扩展性,他就会用 rico 的 rack, 但大家知道 rico 的 rack 它的扩展性是非常有限的啊,当 rico 的 节点数达到十几台的时候,他再往上加节点,性能就很难再继续提升了。那实在不行,后面大家可能就只能选择一些小型机配上 d b two。 那这样一个路径,它其实存在一些问题,一个是说你的扩展性它仍然是有天花板,并不是能够无限扩展,这是第一个问题。第二个问题就是说当你的业务量在逐渐变大的过程中,每做一次数据库的重新选型和价格上面的调整,对上层业务来说都是一次翻天覆地的变化。 我是为此就是想给大家提供一个呃,更简单的路线,我们在底层把数据库的扩展性给做好,那上层的业务就可以更加专注于自己的业务研发。 osync 提供的这个路径就是最下面这条路径,就是当你的数据规模还没有这么大的时候,可以用一个小规格的机器部署一个单机单副本的 o b, 那 单机性能在单机部署的时候是可以做到和单机数据库相当的, 那随着你的数据的规模上涨,你可以做一个垂直的扩展,用一个更高规格的机器来部署 osync 啊。如果后面你对高可用有诉求了, osync 还可以提供一个刚才提到的三副本的形态, 那如果你的扩展性达到了一个极限的话, ocean base 还可以让你去加机器做水平的扩展,作为更大的集群,那这样上层业务就可以完全专注于自己的业务研发啊,自始至终都无需关心底层的数据库选型上有什么变化, 那 o b 从单机部署变成分布式部署的这个过程中,可以选择类似于马斯克的这种主备库的架构,主存的架构,那如果用户考虑到说这个主备库的 rpo 不 为零,可能会因为有一些延时带来丢数据的问题,那可以从主备库动态的升级到一杠一杠一这种三副本的高可用的模式 啊。如果用户觉得不管是主备库还是三副本,这些东西理解起来,掌握起来都比较复杂,那用户也可以直接继续使用这个单机的模式,因为 osbench 的 单机模式下面也具有非常好的垂直扩展的能力,可以做成更大规格的单机 o b。 那如果业务规模持续的增长,就比如说从一个中型的业务变成了一个大型甚至超大型的业务,那么可以把这种一杠一杠一三纵三节点的这个部署模式进一步扩展成右边这种二杠二杠二甚至 n 杠 n 的 这种部署模式。当然纵的数量也是不限于三个,也可以继续进行扩展, 比如支付宝这种对于高可用要求非常高的超大型业务。蚂蚁主站这边,它的部署模式就是三 d 五中心,也就是有五个纵分副本。 那沃森贝斯无论是单机转数据,呃,单机转储备库,还是说垂直扩展增加单机的规格,呃,还是说水平扩展,增加纵的节点数,或者是增加纵的数量,都是不需要停机停浮,对上层业务都是无感, 而且对业务来说啊,呃,从一个小业务成长到大业务的这种过程中,技术站自始至终都是 o b 的, 这条技术站相比频繁的更换数据库选型那条路线可以降低不断更换技术站带来的平均成本。 那 o b 从单机部署变成分布式部署的这个过程中啊,就需要利用到 o b 的 水平扩展的能力,这就是 o b 的 第二个特性。 o b 水平扩展这个能力分成两种,一种是说,呃,用户的数,数据的数,数据量在持续增长的时候呢啊,宗内可以添加新的机器 啊,添加节点之后数据会做自动的加载均衡啊,而且这个自动加载均衡的过程是不需要停幅的,是对业务无感的,只需要 dba 进行一条命,执行一条命令啊。在纵类增加新的机器之后呢,可以快速完成数据的自动加载均衡啊,整个过程是不需要 dba 去接入的 啊。第二种扩展就是可以动态的增加纵的数量 啊,加可用区的目的就是可以增加集群的容灾能力啊。五副本就比三副本可以容忍更多的副本故障。 这个动图的例子就是三个纵扩展成五个纵,三副本变成五副本啊。副本同步过去之后呢,会根据给各个纵设置的优先级来选出新的主副本,就是新的 leader 啊。一般我们蚂蚁刚才说的这个主战的核心业务就是这种部署模式,三立五中心就是图中这种五纵五副本的形式 啊。这张图是我们做的一个 t p c c 的 测试,横轴是我们机器的数量,我们从三台机器扩展到一千五百台机器啊。纵轴是系统的事物处理能力。 t p m c t p m c 就是 指每分钟可以处理多少条事物 啊? t p c c 里面是包含了百分之十的分布式事务的啊,即使在有这么高比例的分布式事务的情况下,性能也是可以做到无限扩展啊。比如图上的最右边,当集群的数量啊达到五百台,接电的时候, t p m c 大家可以看到是两亿多, 那扩展到一千五百台节点的时候呢? tpmc 可以 达到七亿多,节点的数量增长了原来的三倍,性能也可以变成原来的三倍。那我们一九年和二零年参加过两次 tpc 的 打榜,两次都是世界第一,这两次参加 tpc 的 测试,结果也可以反映出来,威士贝斯有一个比较良好的新型扩展的能力。 接下来简单的介绍一下 osbench 的 存储引擎,那 osbench 它的存储引擎是基于 lsm tree 的 架构,它把数据分成基线数据和增量数据啊,其中基线数据是只读的,一旦生成就不再被修改了啊。增量数据支持读写 那数据库 dml 操作的插入、更新、删除这些操作,它会首先写入到内存的 mem table 里面,所以在写入性能上面就和内存的数据库是相当的, 因为它本身就是在写内存。等到 moment table 它达到一定的大小的时候,它会转储到硬盘上面,而成为增量的。这个 s s table 转储到硬盘上的这个过程是批量的顺序写,相比一些数据库,它是用 b 加数这种离散的随机写,它会提高写硬盘的性能。 当增量的 s s table 达到一定规模的时候呢,它会触发增量数据和基建数据的合并,然后把增量数据和基建数据做一次整合。基建数据和呃在合并完成之后呢,它就不会再发生变化了,直到下一次合并。 同时,每天业务的高峰期,我们一般默认是凌晨两点,系统也会自动地进行每日合并。我们在进行查询的时候,是需要分别对 s, s, table 进行查询,然后把这个查询结果进行一次规定,然后返回给色构层。 那我们为了去减少这个龟并带来的一些额外的开销,我们在内存里面实现了 block catch, 还有 row catch 两层缓存,来避免对基建数据频繁的随机读 啊。一些数据库,它的存储引擎会选择刚才提到的 b 加数的加勾啊, b 加数的更新是原地更新死板,会不停地随机写,所以很难做压缩。那 l, s, m tree 的 加勾里面呢?它的基建数据平时是只读的,只有到了合并的时候才会发生一丝变化,所以我们可以用非常激进的压缩算法 o c 贝斯。它目前的这个版本现在还是按行去做切分,把表中的数据按行切成十六 k 大 小的一块,就是图中的这个 row group 啊。 row group 内部呢,它会在按列进行编码压缩。编码的规则有一些大家可能都知道的,比如说像字典编码、流程编码等等。每一列的编码压缩结束之后呢,它会进一步地基于列和列之间的数据关系, 对多列进行再一次的编码,比如说可能列和列之间有等值关系,差值关系或者子串关系。 那在列和列之间的编码压缩完成之后呢,还可以根据用户指定的通用压缩算法,像 lz, 四 cd, b, c, s, t, d 等等,再进行一次无损的通用压缩,我们这样就可以进一步的提升数据的压缩率。而且编码压缩还可以在查询的时候,根据列内的数据特征, 把过滤条件的这个计算给下压到解码之前啊,这样就可以解决传统数据库很难平衡存储压缩比和查询性能的问题 啊,这样的话,我们的存储引擎就会有一个更低的存储成本。这个测试是 tbch 一 百 g 的 一个场景啊,我们可以看到说 osbench 四点叉的一个存储成本只有马斯扣的四分之一左右 啊。 cryptocurrency db 也是类似的,我们也是只有它的四分之一左右啊。另外第三个是 rocks db, ob 的 成本大概也是只有它的一半左右 啊。 h type 这个功能啊,这个核心特性是 gatner 在 二零一四年提出的啊。 h type 的 意思就是说在一个系统里面,既能做在线的事务处理,例如在线的交易支付,在同一个系统里面它也能做在线的数据分析。一个完背的业务一般都是会包含这两块的。 我们来看一下啊,这个传统的做法是要怎么做的啊?业务它如果同时设计 tp 和 ap, 传统做法一般就是会用这两种数据库,比如 tp 用 my circle, oracle db2, ap 用 star rocks 或者 doris have 这种做法,它就需要用 etl 做一次数据的转换,通过卡夫卡 link 把 tp 的 业务呃,把 tp 业务里面的数据导入到 ap 的 数据库里面进行 ap 分 析。 但这种传统做法会有一个问题,就是它一是会有延迟问题,二是会有数据不一致的风险。而且这里面 e t l 软件,它的整条链路全部都要保证高可用,哪里出了问题,业务马上就会过来找你,尤其是核心的交易支付的系统,几秒钟的延时可能业务都无法接受。 而且这个多个系统之间还有很多领域的数据啊, t p 要存一份数据, a p o 要把数据再存一遍啊,这种做法成本上去了,因为也变得更复杂了,而且连查询的延时都得不到保证。 如果我们能用一个系统既做 a p 又做 t p 的 话,那中间这个一 t l 的 数据传输的开销就给省了啊, t p a p 共用同一份数据啊,存储成本也降低了啊。同时它的这个数据分析也是没有延时的,都是实时的,现在树仓一般都是 t 加一,要延迟一天。 呃,所以我们这种 h type 的 系统,它的实现肯定会比原我们传统这种做法要变得复杂很多,但是它的业务价值也是非常明显的 啊。 h type 这个数据库面临很多挑战,很多问题,比如说数据怎么组织?行存还是列存啊?有一些 h type 数据库可能用两种副本同时来存,一份存行存副本,一份存列存副本。还有就是像液化气,它如何选择这个数据访问模式,它什么时候选择行存,什么时候选择列存 啊?不同的访问模式是不是还得对应着不同的 sql 的 存储引擎和 sql 的 执行引擎,还有 sql 执行引擎去怎么去缓存这些计划啊?这些东西我们这次都不讲啊, 那我们这次主要会讲一下用户经常来问的一个问题,就是在 openbase 里面, ap 和 tp 的 资源是怎么分开的,就是怎么做到读写分离的啊,这个目的就是为了防止 ap 的 计算影响到 tp 啊。在介绍这个之前,我们先来简单的介绍一下这个业界是一般是如何打造这个 h type 系统的。业界打造这个 h type 系统的方式有很多啊,一类就是原本是 t p 类的数据库, 它是逐步补齐 a b 方面的这 a p 方面的能力,比如像奥瑞口。还有一类是原本是 a p 类的数据库,它是在逐步的补齐 t p 方面的能力,比如像 input, 像 grimplum, o b, 它是其实属于第三类啊,就是 t p 能力和 a p 能力,它基本上是齐头并进的。 osync 就是 用同一套色控引擎,它同时满足 ap 和 tp 的 业务需求。那我们这里就简单介绍一下 theob 里面 tp 业务和 ap 业务是可以通过什么方式来实现图解分离的。 我们这张图就是举个例子啊,可以看到这张图里面有四个纵,这个比较奇怪,一般都是三个纵和五个纵,那这四个纵,四个可用区,它就会有四四份副本。前三个蓝色背景的纵,它里面的副本是全功能副本。第四个灰色背景的纵,它里面的副本叫只读副本,是一个新的副本类型。 那如果是 t p 业务呢?用户就可以选择是用强一致性读啊, o b 在 查询的时候默认就是强一致性读,强一致性读就会去读 o b 的 主副本,也就是这三个副本里面的这个绿色副本, 那强意志性读会保证可以读到最新的实时数据,那如果是 ap 业务用户可以选择使用弱意志性读,弱意志性读就会被路由到从副本上面啊,也就是前三个纵里面这些浅黄色的副本,这样的话就可以分散主副本的压力 啊。但是因为弱意志性读,它不能保证从主副本读到数据,所以可能对,所以可能比较适合这种对实时性和数据一致性要求不高的 ap 的 分析的业分析的业务 啊。大家可以通过执行 circle 的 时候去指定一个 hint, 或者来通过在绘画上面去配置这个弱读属性来让 circle 去走弱读,这样的话这个 circle 就 会去就近去读背复本。 那除了弱智性读这种方式以外呢?我们还可以通过设置只读复本来实现读写分离啊,就是我们这个最后这个灰色的诵里面的副本,比如说诵一、诵二、诵三上面的副本都是全功能副本,刚刚提到的主副本和从副本都属于全功能副本啊,全功能副本的含义就是可读可写,也可以参与 ppt 的 选举。 还有一种副本就是叫只读副本,只读副本,顾名思义就是只可读,不可以直接写入数据的副本 啊,它只能从全功能副本去同步数据。只读副本,它也不参与 paxos 协议的投标和选举,它只是作为一个观察者,它实时追赶这个 paxos 成员的日记,然后在本地进行回放。所以只读副本它并不会增加事物提交的延时 啊。有了主读副本,我们就可以让前三个纵服务于 t p 业务,然后把第四个纵上的副本给设置成主读副本,然后配置一个单独的 proxy 报表业务,就可以走这个 proxy 专门访问主读副本,这样的话,纵四就可以服务于 ap 分 析类的业务 啊。在 ap 的 分析业务里面,无论是你用弱智性读还是用主读副本啊,虽然它都不能保证数据和 主副本强一致,但是实质性也都是很好的。就算再退一步,我们去用 ob 的 主背库,主库做 tp, 背库做 ap 这种实质性稍微差一些的方案, ap 业务的延时也可以做到在秒级。 除此以外呢,如果是 tp 和 ap 类的 circle 同事甲的集群里面,我们还有一套叫。我们还有一套判定大查询的方式 啊,当我们判定一条 solco, 它属于复杂的大查询,那我们就会把它给放到这个大查询堆类里面。我们会限制这种大查询的资源使用,优先保证小查询还有 t p 业务,让它们获得更充足的资源。 o b 默认它是会把这个执行时间超过五秒的查询判定成大查询,大查询会被丢到刚才提到的一个大查询堆类里面。 大查询堆类里面的这个查询默认只能用到百分之三十的资源啊。这个五秒和百分之三十都不是写死的。用户都是可以自行进行配置的,但是一般的用户往往他是并不了解这两个对应的配置项的含义,还有调整之后的影响,所以并不建议随意去进行配置。 呃。接下来要介绍的一个 o b 的 核心特性是高兼容呃, o b 在 创建租户的时候是可以选择呃租户的兼容模式,企业版它支持创建兼容 arco 模式的租户,还有兼容马斯克模式的租户。那社区版目前只开放了创建马斯克模式的租户, 并且我们配有配套的迁移工具叫 o m s 啊,可以把其他的异构数据库,比如像马斯克, orrik, teddy bear 啊等等都给平滑的迁移到 openbase 上面。 那不管是哪种模式的实力,马斯克也好, openbase 也好,我们都是在语法层面进行了兼容,底层的 openbase 引擎和存储引擎都是 openbase 完全自研的引擎,在 openbase 开源的底层代码里面,你是看不到这个马斯克和 openbase 的 影子的。 osyncase 的 社区版对于马斯扣的协议,语法还有特性都已经做好了兼容,对于马斯扣的一些周边工具,像 navy, cat, d b, ewer 等等也都已经做好了完全的兼容。在这些工具里面,大家可以是直接把 osyncase 里面的马斯扣模式的租户直接拿去当成马斯扣来使用。 呃,现在要介绍的一个 o b 的 核心特性是多租户呃,多租户的能力,它也是 osyncase 区别于马斯扣一个比较特别的地方, 虽然部署的时候他还是按照集群的模式来进行部署,但是这个集群部署好之后呢,他对外提供服务的时候,在同一个集群里面可以创建多个租户, 每个租户都是相当于一个独立的马斯克的实力,这个实力是按需分配的,那并且只要集群还有多余的资源,随时都可以创建新的租户,也就是新的马斯克的实力,这种体验其实有点像云数据库 啊,当你的业务方向,当你的业务方,他说他想要一个新的马斯购数据库的时候,如果是传统的数据库,那 dba 可能需要花一两天的时间去来准备,那在 osha 里面呢啊,当集训部署好了之后 业务,他说我需要一个新的数据库 dba, 两分钟就可以把这个集群里面,在这个集群里面生成一个新的马斯购的实力, 并且这个实力它的规格也是可以后期调整的,一开始不需要一下子就给很多资源,按需追加就好。如果这个租户的资源一开始给多了,后期发现某个业务租户,他实际用不了这么多的资源,也可以再收回来 啊。租户和租户之间除了数据是隔离的,资源也是隔离的啊,包括 cpu 资源、内存资源以及 ios 资源 啊,这个多租户的特性,它就比较适合做成微服务的价格,尤其是适合一些云上的 sars 服务商啊,这些提供微服务的 sars 服务商,他很多提供的都是多租户的多租户的服务 啊,多个业务租户,他的数据库如果要放在同一个单机数据库里面,简单的做一下名字空间的隔离啊,大小租户之间它会互相影响。如果每个业务租户他使用一个独立的数据库,成本又太高, 几十到上百套分散的数据库环境,因为工作也会变得比较复杂啊,同时扩展性也会受到一些影响,那 ob 的 多租户能力就可以很好的平衡隔离性还有成本,而且大小租户还可以独立进行扩缩容 啊。接下来啊,就给大家介绍一些社区版常见的业务场景呢,刚好前几天在梳理了一次这个开源用户的所有的业务场景, 这里简单列出了几个呃最常见的用户业务场景。第一个场景就是呃使用 mycircle, 但是 mycircle 的 实力规模很大,有很多不同的 mycircle 的 实力 啊。这种场景就很容易遇到各种各样的运维问题,运维成本会很高,一般会需要一个自动化的运维平台啊。马斯克有一个很严重的问题,就是马斯克他如果出现了异常,档机需要切换机器的时候啊,储存价格会有一定的概率会出现不一致的情况,这样维护起来就会比较麻烦 啊,一出问题就需要 dba 的 介入。早些时候我们淘宝的马斯克规模也是很大的,和大家一样,我们也是从这条路趟过来的,所以也经历过这些痛苦。 o b 酒特别适合这个场景,因为一开始介绍 o b 历史的时候,我们说过, o b 最早例向就是为了解决淘宝收藏假市值数量多,数据规模大的这个问题 啊。这个主要就是会用到刚刚提到的 o b 的 多租户的能力。我们在蚂蚁集团内部有非常多的业务,有上万台服务器都在使用 o b, 那 这些 d b 同学怎么去管理上万个马赛克的实力,这是一个非常大的挑战,因为规模化运营的场景下面,人力始终是有限的。 蚂蚁的第一批同学就是利用了这个 ocean base 的 托租户的能力,让每一个马斯克实力都有一个租户啊,可以把大量的马斯克实力集中到同集中到一个或者少出几个 ocean base 的 集群里面 啊,这样就把集群的数量控制在一个非常可控的范围之内。在蚂蚁集团内部啊, dba 还会通过一些 o b 的 周边工具,比如一会马上就要介绍到 o c p, 通过这些工具获得很多自动化的运维手段啊。多套业务库放在同一个集群里面是很方便运维的,而且是对业务无感的 啊。解决方案里面的这个写的高可用啊,说的就是业务迁移到 o b 的 集群里面来啊,不需要担心宕机的问题,它可以保证数据不丢啊。 同时因为 o b 还有水平扩展、弹性伸缩的能力,所以如果用户想在某一个时间段进行一个大促,对 o b 进行扩缩容也都是很方便的啊。所以我接触过最多的用户场景都是从这种传统的数据库升级到 o b, 从马斯扣分表签到 o b 啊。第二个场景就是马斯克的数据量非常大,存什么很高。我也接触过很多用户啊,他们是在马斯克里面去存了历史数据啊,这个数据量确实很大,有些是在云上 ecs 自建的。这个马斯克实力使用的是云盘,但是云盘会有一个容量上限。 如果这类历史库还有归单库的场景,迁移到 o b 上面来啊,它就会享受到 o b 自身的这个数据压缩率高,然后存储成本低的优势。刚刚也提到了, o b 的 这个存储成本大概只有马斯克的四分之一左右啊。这个四分之一其实还是一个比较保守的说法, 实际在很多用户 poc 测试的过程中,他们会发现 ob 的 存储成本可能只有买次扣的十几分之一的情况啊,这个可能是和表中有哪些列,以及这些列是什么数据类型有关,那总体上来讲,在买次扣里面,如果你存了几十 t 的 数据啊,迁移到 ob 里面来,可能也就只有几 t 的 样子了。 第三个场景就是业务压力很大,尤其是业务量增长快、变化大的场景啊,变化很大一般是出现在有大促活动的场景啊,这种业务量增长快、变化大的场景,用户一般会使用一些基于马斯克改造的分布式数据库的中间键, 也就是大家常说的分库分表的技术啊。但是在业务增长很快的时候,往往需要 dba 同学去人工的拆库拆表,这种拆库拆表的运维成本很高,而且引入了额外的中间件啊,所以还会增加使用过程中的风险。 还有就是分库分表会对事物和思考增加一些限制啊,而且还需要对中间件去完成这个跨库的查询操作,跨库的性能肯定是会受到影响的, 当这个查询结果的数据量非常大的时候,中间建的这个节点可能还会因为 o o m 导致服务一段时间不可用。 ob 的 解决方案就是创建分区表啊,分区表其实也是需要进行拆分的,这里需要注意的就是,在 ob 里面创建分区表也是要根据业务指定分区时段,我们可以一开始就指定好这个分区的类型,然后把分区数给给足, 后面的扩容就由 o b 来自动完成这个分区数据的赋值均衡, 这个赋值均衡它的过程是 o b 自己来做的,不需要再手动进行拆表了。如果一开始分区数给的比较少,那 o b 也是支持通过执行一些 d、 d、 l 来进行分区分列的啊,通过分区分列来增加分区数。 第四个场景的话就是,呃,我们 oltp t p 业务上面存在少量复杂的查询啊,这种场景刚才也提到了,就是常见的做法,就是把 t p 业务的数据汇总到大数据平台,或者汇总到书仓上面去,然后再在上面去做报表。 在 o b 上面呢,用户就可以探索一种比较新的解决方案,就是直接在交易的数据库上面做一些复杂的查询,这样就不需要额外的做数据同步的方案。 呃,至于 tp 和 ap 如何进行读写分离啊啊,如何来控制这种复杂的查询对交易场景的影响? ob 也是会有很多种不同层面的方案,刚才提到了其中两种,一种是弱意志性读,一种是止读副本啊。其实我们还可以通过主备库来实现实现读写分离,主库写,备库读, 我们后面马上要发布的一个四点三版本,还会支持列存,有了列存之后, o b 怎么做 h type, 然后怎么实现多页分离,它的方案就更多了 啊。今天由于时间的关系,我们就暂时只介绍这几种最常见的场景,更多的场景事件,大家可以详见一下 osbench 的 官网。我印象中 o b 的 官网首页上面好像就有不同场景对应的解决方案,以及不同解决方案对应的用户案例。 呃,最后就是介绍一下 openbase 的 工具体系啊。 openbase 它是有一个配套的工具体系的,能够从替换 o b 之前,然后向 o b 迁移的过程中,以及在使用 o b 之后这些不同的阶段提供不同的帮助。 ob 常用的周边工具主要是这三个,就是 o c p, o m s 和 o d c, 还有一个是 obd ppt 里面没有列这几个配料的工具,在社区版里面也开放了二进纸文件供大家下载和使用。 o d c 这个开发者工具和申贝斯的数据库内核一样,都是对源码进行了开源。 obd 全称是 ocean based deployer 啊,是 ocean based 安装部署工具,它可以通过命令行部署或者白屏界面部署啊,它可以把复杂的配置流程标准化,然后降低集训部署的难度 啊。 o b d 它的部署模式有命令行图形化两种,命令行可以支持用户直接去编辑配置文件,可以更灵活地进行配置啊,比较适合一些需要深度了解 osbench 的 用户,有应的使用门槛啊。图形化界面,它的配置会更简单,可以通过页面引导来完成这个集训的部署。 它适用于一些需要快速体验,然后构建一个标准测试环境的用户。那集训部署之外呢? obd 还提供了集训管理、版本升级然后等等常用的运维能力。除此以外, obd 还 obd 还集成了一些工具,比如说压缩工具、诊断工具等等。 呃,这个就是官网上面快速上手的这个页面的链接啊,只要有一台可用的机器,在黑屏下面就可以通过 obd demo 快 速去部署一个 osha 四的数据库,用于进行测试。 呃,需要用户做的就是去复制 ppt 左边这三条命令,去执行一下这三条命令在 ob 的 这个官网上的快速上手库克斯大的页面就能看到 啊。通过 obd 部署 obd 的 这个过程也非常简单啊,前两天两,前两天身边有一个不是特别懂技术的妹子,她也能根据这个快速上手的页面把 ob 的 环境给部署好。这里就是一个通过 obd 部署 obd 环境的演示。 呃,他执行的第一条命令就是下载这个叫 o b o n one 的 安装包啊,这个安装包里面就把 o b 所有的内核啊, o b proxy, 反向代理,还有一些其他的组建,像这里显示的普罗米修斯, grafana 等等,呃,全部都给囊括了, 需要用户再去逐个的下载每一个包啊。第二条命令和第三条命令就是安装这个 all in one 的 安装包啊,还有快速部署一个 oceanbase 的 集群啊。这个安装和部署的过程大概要花费一分钟左右的时间,我们就直接跳到一分钟之后。 呃,现在就已经安装完了。呃,我们现在执行了一下这个 o b client 打头的这个连接 o b 数据库的命令。呃,就可以看到出现了 o b client 打头的这个命令,好像提示符就说明我们已经连接上 o b 了。 我们通过在这个数据库里面执行 select 呃, select version, 你 可以看到我们刚刚部署的这个 o b 的 版本是四点二社区版 啊,现在就可以在我们的这个刚刚已经通过 obd 部署的这个 o b 环境里面去做各种事情了,我们的演示也就到此为止啊。大家可以感受到通过 obd 来部署 o b 整体的部署流程还是比较傻瓜化的。 然后要给大家介绍的一个运用为管理工具叫 o c p 啊。首先用户可以使用这个 o c p 去进行资源管理啊,可以对集群、租户、主机、软件包这些资源对象进行一个全生命周期的管理啊,包括安装运用、为性能监控、配置升级啊这些功能。 第二个功能就是监控告警啊,除了默认的监控告警之外呢,现在 ocb 还支持自定义告警,比如我们可以定制磁盘内存,达到了怎样一个水位线的时候会进行报警,可以满足用户定制化告警的需求。还有两个功能,分别是备份恢复 呃和在运维过程中可以支持进行一些自动化的指南功能。 obd 和 ocp 它都是部署集训的工具,那区别是啥呢啊?简单来说,我个人理解就是 obd, 它常常被用来部署测试环境和演示环境, 它更加清亮。 obd 刚才我们提到了白屏化,但是 obd 的 白屏化只是在部署集训这一小段操作是白屏化的后续的操作,比如说监控告警、备用恢复,它就不再支持白屏化了。 那如果是要部署会因为一个生产环境,那建议大家直接使用 o c p, 因为 o c p 它自始至终都是它的全部操作都是白变化的。而且 o c p 还有一个在后台常驻的进程,可以用于监控和告警,并且 o c p 它在展示监控数据的时候也可以展示的更多更清晰。 呃,而且 o o c p 还支持一个白平衡的 r p m 包的管理,用户可以自己去下载想要的具体某个版本的包啊,自己可以控制这个集群的各个组建,这样就可以用不同版本的组建来组合成大家的这个集群。 那后面的第二期课程会有专门的同学来给大家介绍如何去使用 obd 和 ocp 来部署测试环境和生产环境,以及 ocp 和 obd 的 具体的区别,还有使用过程中的各种注意事项等等。我们这次概书里面就不再详细展开 这些 ppt, 它是一个 ocp 白屏页面的几个功能的截图。我们首先可以通过 ocp 看到这个集群和租户的资源情况,比如说任意的分布资源水位。 我们还能用 ocp 去做集训级别的集训级别和租户级别的性能监控,比如说 qps 等等啊,性能监控除了 qps, 还能看到像 tps, 搜索响应时间,还有物理、 i o 等等相关的信息 啊。第二个工具是 oms, oms 是 一个数据迁移的工具,用户可以用它去把其他 e 购数据库的数据迁移到消息中间件里面去。 它的第一个功能就是数据迁移, oms 可以 支持把马斯克、泰迪 b 等等一购的数据库在线迁移到 osbase 里面啊,完成切换之后,还支持把 o b 上面所有的数据变更反向的同步到原端的数据库里面去。 第二个功能就是实时的数据同步, oms 可以 支持 osbase 与自建的卡夫卡呀 rack mq 之间做一些实时的数据同步, 主要是应用在实时树、实时树仓这一类的场景。第三个功能就是数据校验, o m o m s, 它提供了很多种数据校验的方式,可以很有效的保证数据的正确性, 当数据真的出错的时候,还可以展示出有差异的数据啊。这个就是 o m s 使用过程中的一张截图, o m s 和 o c p 是 一样的,都是完全白平衡的工具。 o m s 还提供了这个数据迁移过程中全生命周期的管理,在这个管控界面上就可以完全的完成数据迁移和数据同步的任务的创建、配置、监控、管理、交互是非常简单方便的。 呃,下面这个工具是? odc 是 一个开发者的工具, odc 和 dbeeware, netflix 的 这种 dba 在 上面可以通过写缩口或者写存储过程来操作数据库的白云化工具比较像,但是它还支持导入导出安全神器,还有对用户的变更流程做管控这些功能 啊,很多使用过 o b 的 用户啊,基本上都使用过刚刚介绍的前面两个工具 o c p 和 ms 啊,而且后面几期还有专门介绍 o c p 和 ms 的 章节啊。所以前面两个工具我刚才都是一笔带过, 但是用过 o d c 的 用户数量并没有那么多啊,所以我这次会对 o d c 这个工具多唠叨两句。 最近发布的这个 odc 四点二点三版本,它不仅支持用 osbase 作为数据源,同时还支持买 circle 作为它的数据源啊。这张截图就是 odc 对 于买 circle 进行 circle 开发的一张截图啊,在编辑 circle 的 能力上,它是可以完全替代像 netcat 一 类的工具的 啊。除了 circle 窗口内的编辑能力啊, odc 还给买 circle 数据源和币数据源都提供了生成测试数据的能力 啊。现在无论是测试性能还是验证功能,只要你需要大量的模模拟数据,都可以通过 o d c 去快速生成一批用于测试的数据。而且 o d c 现在还支持根据不同的字段啊去配置不同的数据生成规则。 o d c 还有一个重要的能力就是变更管控的能力。变更管控指的是说 o d c 可以 对操作数据库的不同用户进行权限的限制啊。在 o d c 的 这个团队空间里面,数据库的项目负责人可以对不同的项目成员授于不同的权限, 比如可以指定 odc 的 某个用户对某些表有访问的权限,另外一个用户对某些表有增删改的权限。而如果项目成员要对某些比较重要的数据,比较重要内容进行变更啊,项目负责人还可以通过一些配置,让项目成员在 odc 上面走一个完整的审批流程 啊。在安全合规方面, odc 还支持对数据脱敏进行配置,项目负责人可以去 在某些表或者某些试图上面配置一些敏感列啊,像姓名、电话之类的信息啊,这样就可以让项目组的成员只能看到透明之后的数据。 o d c 变更管控这个功能的目的就是想让数据库的变更更加安全,更加合规 啊。 o d c 还有一个功能是数据规划的功能,我们把蚂蚁内部自己做数据规划的这个解决方案集成到了 o d c 上面,像历史库规划库的场景都是可以用 o d c 的 数据规划能力。 历史库的场景就是说啊,有某个业务的数,某个业务库的数据越来越多,其中部分的历史数据基本上不会再有业务去使用了啊,所以需要定期的去精简这个在线库。 odc 就 支持在不影响业务稳定的前提下,可以周期性的去把这个在线库的数据,在线库的历史数据给搬迁到历史库里面去 啊。这个就是在 odc 上创建数据规范任务的一张截图,我们可以通过 odc 进行配置配置说用哪些表,表里面有哪些数据,这些数据到了哪个时间节点之后就属于冷数据了啊,配置完成之后,这些冷数据就会被定期的迁移到历史库里面 啊。还可以配置说迁移之后在线库的对应数据是保留还是清理啊,并且我们可以自定义的这个我们可以去自定义这个规章任务的调度方式,比如说可以是立即执行或者是定期执行啊,亦或是周期性的执行 啊。置业 ppt 上的这张截图就是我在 odc 上面创建了一个数据归当任务,这个数据归当任务会在每个周五晚上的二十三点,把泰斯特库 t 一 这张表里面一周前的旧数据周期性的给归当到另外一个叫泰斯特二库的 t 一 表里面去 啊。所以 odc 它的数据规当能力是用户使用 o b 做历史库和规当库一个非常简单的解决方案,只需要在 odc 这个白平衡的工具上面创建一个数据规当的任务,然后把这个规当的规则给选择好就 ok 了。 而且 odc 不 仅支持从 o b 归当到 o b, 从买次口归当到买次口,还支持从 o b 归当到买次口,以及从买次口归当到 o b。 我们刚刚也提到了说 ob 的 存储成本大概只有买次扣的四分之一左右,那考虑到 ob 它在存储上面这么高的压缩率,再加上 odc 的 这个数据规范的功能,那么用 ob 来做历史库的解决方案就会是一个非常好的选择 啊。最后这个是一个 osbench 的 开源生态架构图, osbench 不 仅仅开源了 osbench 的 数据库的内核啊, osbench 社区版还与其他的开源产品像 flink、 kano 等等做了非常深度的集成和融合 啊。另外一个方面, oenface 它的平台工具刚才提到 ocp、 oms、 odc 它也都提供了社区版啊,社区用户也可以使用这些平台工具去打造一个企业级的产品。 那社区版和企业版它在 ob 的 内核方面最主要的区别就是社区版它不支持创建 or 接口兼容模式的租户, 社区版的其他能力基本上都是和企业版保持一致的。如果大家想了解具体还有哪些详细的区别,我们直播之后应该会在这个呃群里面去发布一个 dba 入门教程第一张的学习资料文档,大家可以直接通过这个学习资料来进行了解。 除了内核以外呢,这些周边的配套工具,社区版本也都是开放了二维码文件的下载和使用,并且在使用过程中,如果大家遇到任何问题,都是可以在社区论坛或者问答区,或者是技术大集群里面抛出来,我们会有值班的同学来负责处理这些问题。 这个是 oceanbase 开源的内容,开源的地址就是在 github 上面,我们在开源中国 g d 上面也途关了我们的代码 哦。目前除了开源了 ob 的 内核代码以外,我们还对周边的很多工具也做了代码的开源,像部署工具 obd 啊,像图形化的开发者工具 odc, 还有 ob 的 诊断工具 obag 等等,都是做了代码的开源啊。详细的开源内容大家可以直接到 github 上面去看 啊,今天的内容就到这里啊,我们这个 dba 入门教程第一节的内容啊,主要就是简单的对社区版的 ob 做了一个概括性的介绍,内容不多很少啊,但是希望大家看完之后能够有所收获啊。最后也欢迎大家来关注一下我们 github 上面的这个 ob 的 开源项目 啊,大家在使用 o b 的 过程中,如果遇到任何的问题,都可以在 github 上面提一就给我们,右边有两个二维码,一个是微信上面的社群小助手,一个是钉钉群上面的这个技术答疑群, 大家如果有需求的话,也可以扫描一下加入这个群啊,我们第一期的课程就到这里啊,谢谢大家的观看。