本文由一刻talks发表邵宗文,腾讯云数据库专家副总监。十余年数据库从业经验,2009年加入腾讯,曾负责腾讯网,新闻客户端,快报,视频,财经,体育等数据库平台部署、规划及运维支持工作。本文是邵宗文在一刻talks第100场演讲局「先见·未来大会」上的演讲实录。每个行业对数据库有不一样的要求,云上数据库通过智能化运维,数据会越来越多,准确度也越来越高,模型也会越来越精准。腾讯云上数据库如何满足用户多样化的诉求?一起来听听听吧。
1
为用户提供数据库服务
大家下午好,我是一刻talks讲者邵宗文。我今天给大家带来的是关于云上数据库及智能DBA的分享。
我们是怎么给用户很好的数据库服务的?
首先我们会给客户按模块划分,比如它是电商的或者是金融的客户,因为每个行业它对数据库的要求是不一样的。金融的客户,他会要求数据库的强一致性,对吧?数据是不能丢失的。如果说是一些电商,它有一些双11的活动,它可能会要求数据库有瞬间的这种支撑高并发的能力。
然后首先通过第一步,先让用户能够迁移上云,并且能够在我们的云上直接进行数据的快速传递和搬迁。第二,通过智能化的一些运维,现在还在持续不断做,因为智能不断进化,随着你数据越来越多,你的准确度会越来越高,你的模型会越来越精准。
我们帮助客户支撑这么大的数据量之后,用户可能会有更多的想法。
比如说这些数据能不能进行商业的分析,对吧?能不能订阅到他自己的一些商业专用的数据库里面去,挖掘出这些数据的价值。有时候为了时效,他想能不能延迟比较低一点,可能几秒,几十秒就能把我的这些数据传到我的商业数据分析里面去,可能能做到实时的一些推荐,帮助客户能够在这种竞争激烈的这种行业中能脱颖而出。
另外我们也能看到云也是一个生态,它不光是说我把数据库做好就OK了,很多用户可能是需要这种生态来帮他解决问题。比如说有些金融客户还有审计的需求;有些游戏客户也需要通过审计来查找,有没有人在盗用、盗取他们的数据;有一些客户可能需要这种相关的快速备份和恢复,比如一些游戏要不断地升级它的版本的时候,需要快速的备份。
另外我们也需要支持丰富的多类型数据库。像我们用到一些迁移的亮点,就是能支持数据库的多种类型。因为数据库也是不断在升级迭代版本,所以说云的话才有这样的人力去做这样的事情。否则像一家小公司它可能开发人员也非常少,如果还去投入去做这种维护各种版本升级的工作,其实是得不偿失的。
2
数据迁移到腾讯云
我们能支持有用户自己在本地机房迁移过来,也可以通过用户说我从其他云上迁移过来。因为大家可能担心在一个云上,可能万一出问题,我的数据什么都没有了。
另外我们有自建的,因为刚开始可能用户说我可能对你的云数据库不太了解,对吧?我原来是什么样的,我现在放下来我还是什么样,我用CDM自建,但是自建的过程中可能他感觉到,就像我拜访一个客户的时候,他感觉到你的订阅功能非常好用,如果我自己去搭,或者我自己去维护的话,我的成本是非常高的,可能需要投入两个研发同学去做这样的一些组件。
然后还有跨区。大家也知道我们腾讯是有非常多的海外机房,或还有很多像东京,像其他国家这种资源,很多的公司要出海,他如果是自己去建,成本也是非常高。所以说通过我们迁移可以实现整个世界的打通。
3
数据库审计
用户遇到审计的问题,首先你要审计记下来,存储量也是非常惊人的,就是大家知道每个请求的操作,正常情况下是记不住的。它可能只记一些慢日志,或者只直接写操作,我们要把这读写全部记下来。这个存储成本是要求非常高,需要一个分布式的存储来支撑这个量。
我们也是有这样的,腾讯基于这样的一个技术背景,其实完全能够帮助到用户去解决这样的存储问题。几十亿条、几百亿条数据,我要查一个什么状态的数据,我能不能快速地去查到,这个也是需要我们这个系统,能够强劲地支持。通过我们研发同学的不断努力,也是实现了这样的一个快速的响应,在30亿级的数据量情况下,差不多6到8秒的响应。
审计应用场景,就是国家三级甲等的一些要求,还有一些是技术人员的风险,另外还有一些技术的这种SQL注入的问题。
这是一个大概的简单的一个界面,就是可以看到我们对谁做了哪些SQL命令,可以进行一个查找,并且可以快速地知道都有哪个时间点,哪个用户做的这样操作,避免了以前出现没有这种审计情况下,我们需要大海捞针一样去找。
然后可能是某个同学误操作了,他可能不承认,现在的话有这样的一套系统能帮助你快速的去寻找这些痛点。
然后还有支持很多命令,比如说某个ID的话,我还要知道超过多少毫秒的到底有多少,这样可以帮助它可以解决一些慢日志的问题。
4
数据订阅
现在很多公司对数据重视起来。我们的数据订阅,针对用户可以做可配置化,他说我可以需要订阅哪些库,哪些表,因为有些全订阅也没有必要。基于我们通用的一些像,可以把我们的数据订阅到Kafka,Kafka是一个非常通用的数据的中间存储,你可以通过Kafka去消费到你的各种相关的一些商业的数据库里面去。
我可以在数据库做一个操作,然后通过我的数据定义功能,马上Kafka的主题就收到了我这个数据库的Insert操作。这样的话可以根据这种固定的格式,我可以把这个数据转到比如说像Redis,对吧?我可以只写一个数据库,我就可以操纵我的中间缓存,或者我通过我的数据库直接可以到我的数据的仓库,而不需要说我还要再额外的去做很多额外的成本,这是我刚才说的,就是基于通过我的对数据库的增删改查,去影响到我的缓存,降低开发者的这种缩短开发的一些工作内容。
另外还有数据订阅的别的场景,就是用户可以通过,比如说我没有在你的云上数据库,但我可以通过自建迁移,然后迁移到你这个数据库,然后在这个数据上去开启我们的这样的一个订阅。对已有的数据库,我又不想在我主库上影响性能的话,你可以再从库上,我们也可以进行这样数据订阅。外部的,这种通过我们的迁移工具,然后可以通过外部云上迁到我们这,然后我们也可以帮他实现这样一个数据的功能。
5
智能DBA
最后我们现在结合本次主题的亮点就是智能DBA,因为我刚才说到了,我们现在云上有大量的这种用户业务,就是说有非常多的用户业务,然后可能有近百万家的企业在云上。
如果说让用户进来给他的很多的数据是比较抽象的,比如说多少毫秒的延迟,多少的慢日志数,其实用户是无感知的,因为很多用户是小白用户,他可能会想到能不能告诉我,我整体这个业务现在质量得分是多少,对吧?0到100是满分,我现在是90分,我可能很开心,我的业务是稳定的,如果说50分是不是我的业务就有问题了,我得查一查是什么原因。
所以说我们去做这样的一些智能方向,就是把所有的大量的数据,可能很多维度数据去做这样的质量得分。然后另外我们会把这些库表,就是用户经常会遇到这些问题,我们会提前去分析。
可能有些用户说我之前SQL语句什么都没改过,为什么我现在变得非常慢,那我可能会说有一个很好的比喻告诉他,就是你刚开始是个小孩的时候,你这件衣服是够穿的,对吧?但你这个孩子是在不断成长,你的业务也在不断成长,可能原来一张表只有不到100万的数据,现在一张表已经有1000万的数据,这个衣服已经无法承载你这个发展,所以说你的SQL语句虽然没变,但是你的业务数据量发生了变化,所以你就成为慢日志了。所以你要去进行优化。
另外还有一个问题就是用户说,我想知道比如说一些企业会做一些预算,我到底明年会用多少你的数据量,或者你的访问量会有多少?我们通过AI,我们可以跟进用户,比如说半年内的数据,我可以预测出来它未来半年或者未来几个月,它的数据量可能会达到多少,或者它的访问量比如说会比现在翻多少倍,这样用户大概对未来的访问量有预知的话,他可以提前做好一个规模的预算。
这个其实可以看到,通过用质量得分的形式,就让用户知道我的订单模块,购物模块目前是一个什么样的情况,如果是90分,看看还有哪几个是影响他的,大概他是什么原因。
然后另外就是我们自己在不断的尝试一些demo,我们会做一些模型出来,质量得分,然后告诉这可能是什么原因,是cpu过度,可能是一些复杂SQL,还有一些其他的维度、碎片、索引是否合理。
然后另外我会对这种死索,就是数据库经常会遇到问题,也会进行智能的分析。相当于用户只要知道我的得分,然后顺藤摸瓜,大概就能知道自己的问题,然后还能知道自己对应的请求SQL语句的问题。
今天我的分享就到这,然后之前我说的很多像智能化的这种数据,其实在腾讯已经非常多的在去推广起来,如果大家能够尽快的去应用我们云的话,可以节约很多的时间,像我们的一个大客户,就三年上市的某团,大家也看到了,他就是在我们云上,基于我们的云上的这种基础服务,得到了一个快速的发展。今天的分享就到此结束,谢谢大家。
此文已由作者授权腾讯云+社区发布