阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

不考虑可运维性的数据库选型都应该“枪毙”

  • 2019-12-17
  • 本文字数:4031 字

    阅读完需:约 13 分钟

不考虑可运维性的数据库选型都应该“枪毙”

本文由 dbaplus 社群授权转载。


本次分享主要有三个大的方向,一是从职业规划的角度看为什么我会认为数据库选型很重要,第二个方向会根据这些经验说说选型的基本原则是什么,最后总结一下这些年数据库选型的路线图,希望能对大家以后做数据库选型时有帮助,可以根据你们公司的场景进行套用,当然这不一定适合所有场景,主要还是提供思路以方便大家借鉴。

一、从职业发展看选型

DBA 这个行业有很多年了,随着时间的变化职业规划也有着不同的变化。我放了一张 DB-Engine 的图,这是 DB 的排名,前三的就不说了,老三位没什么可聊的。但是看下面的排名,除了常见的数据库,还有 ES、HBase、Neo4j 这些我们之前不太认为是 DBA 管理范畴内的 DB。



我经常跟团队小伙伴说咱们 DBA 的思维不要光局限于前面的老三位或者 TOP5,我们是不是可以考虑到更多的数据库也是 DBA 可以从事的行业。比如你可不可以做 HBase?你可不可以管理 ES?这些东西都体现在这张表里,我们可以扩展自己职业的领域,这也是职业发展方向的一种横向扩展方式。


这张图是我对比去年和今年变化的展示图,去年关系型数据库(蓝色部分)占了半壁江山,今年关系型数据库仍然是第一,但是已经有很多份额被多用途的数据库占去了。



多用途数据库是厂商选择的趋势,他们研发了越来越多支持多用途的数据库。厂商为什么会这么做?供给侧的改变来源于需求侧,因为有很多需求已经不是单一的数据库能解决的了。


在这种场景下,厂商迫于这种需求开发了很多能适应更多场景的数据库。这种趋势对 DBA 来说意味着什么?这提醒我们,对多种数据库的掌握是现在这个时代对 DBA 的要求。


这是一个必然的发展趋势,因为你要解决的场景会越来越多,你需要掌握的数据库领域也越来越广,这就意味着之前「一招鲜」的玩法已经落伍了。


我们再看现在岗位的设置,往前其实是纯自建时代,现在的时代是云时代,这两个时代有着本质的区别。



自建时代的 DBA 更多意义上是运维领域区分出来的一个更专业、门槛更高的职业领域,再往前都没有 DBA,都是 Ops 管理的。后来出现 DBA,再慢慢演化到 DBA 做一些细分,出现了开发 DBA、内核 DBA,还有部分同学转去专门做大数据,这就是在自建时代的整个状态。


但是云时代会有一些什么样的变化呢?其实自建时代的传统 DBA 现在还存在,因为有混合云的存在。那么变化是什么?是无论如何都不可能完全不谈云,一旦上云,自有的运维体系受到冲击是其次,主要还是业务可以选择的服务就多起来了。之前由于基础设施导致需要业务适配数据库的情况就会变成需要 DBA 掌握更多的数据库类型来满足业务了。


更有甚者是有的公司已经全部上云了,之前赖以生存的工作都变成了云服务,这时候的 DBA 要做什么转变?最后还有一种变化是云内 DBA,作为云公司的 DBA,孵化一个产品和提供对内服务又完全不是一回事。未来基本上我认为 DBA 就是这三个领域里面打转了(混合云 DBA、云上 DBA 和云内 DBA),但是无论哪种都需要掌握更多的数据库,这个是不变的。


综上,这个时代对 DBA 的要求就是需要掌握的数据库领域越来越多的,甭管你是在哪个线上的,都需要懂很多领域,至少精通一种,掌握 N 多种,这是我这次演讲想传递给大家的一个概念。

二、选型原则一二三

原则 1:不讲场景的选型都是耍流氓


在座做过数据库选型相关工作的都知道场景很重要,但不是所有人都能把这个概念深入到骨子里。比如这个场景,我相信大家应该都有实际经历过。



你的用户对数据库的了解是没有 DBA 熟的,他的出发点跟你的出发点是不一样的,你想要的是长治久安,他想要的是把功能搞定。



如果你要做业务选型一定要对场景进行划分,如日志类、搜索类、离线需求等等,这些全部要跟线上分别开。业务模型是怎么样的?活动型还是规律型的,你是多读还是写多的?然后数据增长方式是怎样的,不能光满足上线一刹那的需求,业务增长是日期型的还是用户型的、位置型的?这些都需要跟你和业务聊清楚了,如果问不清楚,后期就面临一个最严重的问题:数据迁移。而数据迁移本身就可以成为一个主题,这就意味着这个事情会花费巨大的成本,如果能从初期就避免掉尽量从初期避免。


原则 2:没有数据就没得聊


没法度量的东西就没法管,放在数据领域一样,没有数据就没法谈。



这是一个场景,你找业务聊天的时候一问三不知,经常会遇到,业务也确实没有办法。但我想说的是我们一定要让业务方拍出来的一个数据,因为我们所有的决策都是基于这些数据的,没有数据就没法决策。



另外也期望可以让整个业务链条的同学养成有数据的习惯,评估多了自然就能积攒下来一些方法论来解决「拍数」的问题。这其中关键的几个点,也是最后选型图上关键的点,一个是 size,第二个是 qps,还有一个是 rt。


另外我们还需要提供一些基准数据。什么叫基准数据,像刚才那个场景,你问业务,他一问三不知,还有一种情况是业务问你 MySQL 能扛多久,你说我也不知道,咱们先跑再说,这肯定是不行的。


你如果管理一个类型的数据库一定要对自己的东西有一个非常基准的认知,这个场景来了,我是给他做一主两从还是分布式,要不要上来就千库万表,还是用分区表等等,这些都一定要门清的。


最后有一个 tips,评估是可以类比,只要逻辑说得通就行。来了一个需求你也说不清楚到底是多大量,你就看之前这个部门做没做过类似的活动,是在什么时间点做的,它跟你这个是什么样的逻辑,是否是近似的逻辑,如果是近似的逻辑我们就往上套。比如上次热点事件的峰值是多少,如果这个产品功能也可能和热点页面相关联,那么就按照上次热点事件的峰值进行对应的预估也算是符合逻辑的。



这里给大家展示一下基准测试,这是我们在做混合云运维解决方案时做的测试,因为我们需要用多家厂商的数据,需要门儿清,我把这个服务部署到那家云上性能到底有什么样的波动,也方便业务方对业务有更直观的理解和认知。


原则 3:不考虑可运维性的都应该枪毙


最后一个原则跟前两个区别比较大,前两个原则基本都是知道的,但是难在落地。第三个原则其实很多 DBA 也不太关注,但真的是很重要的一个原则,那就是可运维性。


我开始说了,DBA 跟业务方评估不一样,你的 KPI 也不一样,需求的点也不一样,业务要求上线,你要求可运维性,这关系到你的幸福度,关系到你的起夜率。如图的这个例子就很经典,业务和 DBA 双方根本没有在一个频道上沟通,最后只可能是不欢而散。



我认为的可运维性是什么?有四个方面:



一个是社区活跃度,社区活跃度决定着你获取信息的难易程度。获得信息的难易程度决定了什么?关系到你出现了故障的定位速度甚至是能不能定位出来,如果社区很活跃,自然就能得到更多的帮助。


第二个是有没有 USER CASE,最好是自己认识的人,因为眼见为实,耳听为虚,认识的人往往能告诉你一些真实的「坑」,而不是宣传用的「功能」。


第三个是自身团队的情况、上手成本。你这个团队有多大,团队具备了什么样技术储备?毕竟你开辟一个新的战场,每一种数据库都不是这么简单的,可能三四个人都不见的搞得定,但是实际业务到底使用多少却说不清楚,这就很麻烦了。


最后一个是很隐性的事情,所谓的市场人才情况,这是可持续的成本。你如果选择了一种数据库,但如果市场对应的人才很少,那么一旦出现人员流失,就会让这种数据库处于无人维护的情况,这对于公司来说是绝对不允许发生的事情。

三、选型路线图

最后给大家聊一下选型路线图,如果你没有一个专门的 DBA 团队,云就是最好的选型,没有了。至于这几家之间他们到底谁好,我认为根据投资关系选更合适一点,至于原因你懂的。


再讲讲这个技术选型路线图,这是我根据这么多年团队经验做的一个选型路线图:



首先一定要做场景分析,到底是线上业务、离线业务还是统计类业务必须分出来,如果是离线的那么走 hadoop 生态,如果是统计监控类的可以走专门的时序数据库或者 ES 等,即使不走也要严格和线上的区分。


然后是线上,特殊需求走特殊的数据库更合适,如果是一个纯粹线上 TOC 端的产品需求,我们需要进行 QPS 的判断。如果是中低的 QS 那往下面走,根据 size 来判断扩展性,如果有高扩展需求那么选目前比较火的分布式数据库是个好选择,如果不高,那么再往下看 SQL 复杂程度,一般简单的互联网应用 MySQL 足以,如果是用了很多存储过程或者复杂大查询的,那么 PG 更适合一些。


返回刚才的分叉,如果 QPS 高的话,那么基本就是 kv 数据库的天下了,我们需要先根据 size 来判断,如果可控那么纯内存的 kv 数据库是最佳选择。接下来是基于 RT 的判断,如果 size 也大、rt 要求也高,那就只有分布式内存 kv 数据库(RedisCluster)选,如果对于 rt 要求不那么高,那么 Pika/Aerospike 都是比较好的节省成本的选择。



最后说一下我们目前的最佳实践,我们目前常规需求都使用 MySQL+Cache 的方案解决,特殊需求交给云 RDS 去解决(比如 PG、MongoDB 等),并且选择了一种 HTAP 的分布式数据库来解决扩展性问题。


Q & A


Q:现在所谓的云原生 DB 比较流行,但是我们目前还没有使用到。一些宣传上说云原生 DB 是可以扩展的,并且和传统数据库也是类似的,我想问一下对于传统数据库来说它的不足在哪里?


A:这个不足点就是它要求升高了,分布式数据库的门槛变高了,对业务来说,在功能、扩展性上它现在是全面是超过了传统的数据库。但是对于 DBA 的要求来说,有非常高的门槛,这对我们之前的问题分析、调优、故障定位思路都会有很大的冲击。


作者介绍


肖鹏,前新浪微博研发中心技术副总监,主要负责微博数据库(MySQL、Reids、HBase、Memcached)相关的业务保障、性能优化、架构设计,以及周边的自动化系统建设。经历了微博数据库各个阶段的架构改造,包括服务保障及 SLA 体系建设、微博多机房部署、微博平台化改造等项目。10 年互联网数据库架构和管理经验,专注于数据库的高性能和高可用技术保障方向。


原文链接


https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=2650783469&idx=1&sn=a5c4a50698644d722dd3a70e2e2a8226&chksm=f3f90b78c48e826e37e88cf7532d4b73cdcd7a7faa4e188f4b6e11eb7163dfa4893308f6e7d9&scene=27#wechat_redirect


2019-12-17 09:302439

评论

发布
暂无评论
发现更多内容

[NLP] langchain-ChatGLM 本地知识库

alexgaoyh

知识库 私有化部署 langchain ChatGLM-6B

9 个值得推荐的 VUE3 UI 框架

互联网工科生

Vue UI VUE 3.0 源码

用这个开源项目,网络小白也能搞定容器网络问题排查

阿里巴巴云原生

阿里云 容器 云原生 KubeSkoop

低代码——前端开发人员的利器

伤感汤姆布利柏

2023年,低代码秀起了肌肉

树上有只程序猿

PoseiSwap IDO、IEO 结束,即将登录 BNB Chain

威廉META

构建数字工厂丨数据分析与图表视图模型的配置用法

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 6 月 PK 榜

高可用只读,让RDS for MySQL更稳定

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

软件测试/测试开发丨接口测试学习笔记分享

测试人

Python 程序员 软件测试 接口测试 Mock

探秘华为云盘古大模型:AI for industries的身体力行

华为云开发者联盟

人工智能 华为云 盘古大模型 华为云开发者联盟 企业号 6 月 PK 榜

走进用友BIP数智人力,揭开中国企业智慧管理的神秘面纱

用友BIP

数智人力

QCN6274 QCN9274 What is the difference?|WIFI7 Solution|Wallys

wallyslilly

qcn9274 qcn6274

面试了一个前阿里P7,Java八股文与架构核心知识简直背得炉火纯青

程序员小毕

程序员 后端 高并发 架构师 java面试

Postman Test 校验入门指南:轻松进行接口测试并验证响应

Liam

Java 程序员 Postman 开发工具 API

活动预告|周五晚,一起来看图数据库如何为构建行业大模型降本增效

悦数图数据库

图数据库 AIGC AI大语言模型

产品能力|AIRIOT数据采集与控制引擎在物联网项目中的硬核应用

AIRIOT

物联网

如何用低代码开发平台快速实现单据打印功能?

力软低代码开发平台

Spring Cloud 如何引入云原生网关,创新微服务架构

阿里巴巴云原生

阿里云 微服务 云原生 Higress

拥抱jsx,开启vue3用法的另一种选择

快乐非自愿限量之名

Vue JSX

PoseiSwap IDO、IEO 结束,即将登录 BNB Chain

鳄鱼视界

免费开源项目管理工具有哪些

PingCode

项目管理 项目管理软件

升级数智底座助力快速构建创新应用

用友BIP

低代码 数智底座 Pass平台

是时候了!MySQL 5.7 的下一站,不如试试 TiDB?

编程猫

AI开源:国际化开发潮流与低代码平台的崛起,探析其积极影响

EquatorCoco

人工智能 AI 低代码 AI开源

6 大场景落地全面预算管理闭环

用友BIP

全面预算

预约直播 | 展心展力MetaApp:基于DeepRec的稀疏模型训练实践

阿里云大数据AI技术

人工智能 模型训练

HTML5 游戏开发实战 | 贪吃蛇

TiAmo

html html5 6 月 优质更文活动

全球化数字经济时代,国产替代成为重中之重!

用友BIP

国产替代

广州丨阿里云 Serverless 技术实战营邀你来玩!

阿里巴巴云原生

阿里云 Serverless 云原生

教你如何用Vue3搭配Spring Framework

华为云开发者联盟

前端 开发 华为云 华为云开发者联盟 企业号 6

未来已来!探索AI医疗与低代码开发平台:引领健康浪潮的科技巨潮

不在线第一只蜗牛

人工智能 医疗健康领域 AI医疗

不考虑可运维性的数据库选型都应该“枪毙”_软件工程_dbaplus社群_InfoQ精选文章