创意电子

标题: 数据库架构面面观 [打印本页]

作者: 数据库技术达摩院    时间: 2020-11-4 13:30
标题: 数据库架构面面观
作者:韩锋


本文为近期加入dbaplus社群在线直播活动摘录。作为一个数据库领域资深从业者(好吧,我是个70后)。近些年来,重要从事数据库产品、架构等工作。下面将以我个人感受,谈谈数据库架构工作的多方面影响因素及发展、实践话题。盼望能给大家带来些思考。


<hr>

ONE环境篇

下面的分享,将从外部环境对数据库架构的影响?当前架构中若干热门的技术问题?之前的一点架构实践经历及个人如何发展等方面谈谈感受。

                               
登录/注册后可看大图

首先谈下外部因素对架构工作的影响。有些同砚,可能会感到疑惑,架构问题不是技术问题嘛?为什么还要考虑外部因素?这里是有个误区的,架构的本质是为了解决企业的业务问题,针对某一问题可能有很多种解法,选择最为合适的(而非最优的)是检验一个架构师的核心本事。正如上图中右下角所描述的,“脱离企业环境的架构,都是耍流氓”。那么影响架构的外部因素有哪些呢?


1).单元属性
单元属性,包括企业、事业、军工等。差别单元属性,对架构诉求点是有差异的,粗浅的理解企业单元是寻求利益最大化的、事业单元更多会从公共视角考虑问题、而军工则会从国防安全角度思考。


2).行业属性
行业属性,包括互联网、金融、制造业、能源、交通等等。差别行业属性,同样存在差异。比方互联网企业往往比较激进,轻易考虑一些自研、开源产品;金融企业则相对稳健,多从稳定安全角度考虑等。


3).用户属性
用户属性,可简单划分为C端、B端、G端,对应个人用户、企业用户、政府用户。个人用户需求,对架构灵活度、可扩展本事往往有较高要求;而企业客户则更为强调稳定服务、生态兼容等因素;政府客户则对数据安全、高可用方面有着更高的要求。


4).发展阶段
企业处于差别发展阶段,对架构的要求也差别。初创期的企业,往往看重架构快速构建本事,满足业务发展初期的多变性和时间性;快速增长期的企业,则看重架构扩展本事和演进发展本事;稳定期的企业,看重架构的稳定服务本事和TCO;而衰退期,看重架构的TCO和可裁剪性。


5).外部大环境
外部大环境,对整体经济面影响,也会影响到企业对于架构的选择。当经济下行的时候,更多的企业会考虑架构稳定和TCO,而非创新。


6).新增长点
在某新兴领域的增长点,对于架构往往会带来特殊的要求。这也是业务特点所导致的,需要有个技术逐步摸索的过程。比方物联网、直播、电商等都如此。会有非常鲜明的带有特殊背景的技术诉求。

                               
登录/注册后可看大图

下面从一个较为传统的企业客户视角,看看其表里部对数据库架构的核心需求是什么?这些因素都将对后续的架构设计,带来很大的影响。


1).外在需求
对于外在需求部分,可分为如下几个方面(有优先级顺序)





2).内在需求
对于内在需求部分,可分为如下几个方面(有优先级顺序)





                               
登录/注册后可看大图

企业、部门、团队的环境,也会对架构选择有所影响。


1).公司因素
如之前环境篇开篇谈到的问题,公司所处行业、性质及发展阶段对架构选择存在差别影响,这里就不赘述了。


2).部门因素




3).团队因素




TWO技术篇




                               
登录/注册后可看大图



数据库架构在近些年来正在发生一些变化。下面的技术篇中,将从企业利用数据库方式及对当前一些技术话题(开源、云、国产化)谈谈个人观点。



                               
登录/注册后可看大图

1).商业数据库 + 商业服务
这是较为传统的一种方式。企业购买大型商业数据库软件,并对应购买服务支持工作。在过去三、四十年里,这是主流方式。可以说也很好地满足了各类企业的快速发展。只是随着近二十年来,互联网化的厘革,对此种方式产生了不小的冲击。这种方式得当传统企业,对数据库要求较高,自有技术本事有限,未来发展相对固定的环境。未来发展随着商业数据库的发展而变化,从总体来看,未来云化的需求对其冲击较大。此外,在国产化、自主可控化等要求下,也会对这个模式影响较大。


风险分析


本钱分析


2).商业数据库 + 自主服务
这一方式也较为常见。在前一方式中,随着企业利用商业软件的深入,自有服务需求就变得急迫起来。通过建立自有服务体系,可以更好地满足企业自身需求。这种方式,得当有一定技术积聚的传统企业。未来发展随着商业数据库的发展而变化,总体相对稳定。


风险分析
在风险方面,与前者雷同。其中技术风险上,自有人员对商业产品的把控,较原厂照旧有所差距。固然对应人员风险就降低,通过自有人员对产品把控力更大。


本钱分析


3).开源数据库 + 商业服务
随着开源数据库的日益成熟,越来越多的企业开始利用开源数据库。但相较于商业数据库,开源方案对企业自有技术本事要求较高。因此,很多考虑搭上开源海潮的企业,接纳这种方式。适用于转型中的企业,从商业走向开源,这种方式可以在一定程度上规避风险。但一样寻常为过渡阶段,长期来看照旧要培养企业自有的服务本事。


风险分析


本钱分析


4).开源数据库 + 自主服务
这是范例的“互联网”玩法,也是较为常见的一种方式。适用于规模较大,企业定制化要求较高的场景。发展成熟可考虑向企业内部私有云或数据库产品、方案方向发展,甚至对外赋能。


风险分析
风险分析与上者雷同,突出人员风险,需长期培养投入。


本钱分析


5).开源定制数据库 + 商业服务
这是方案3的一种特殊环境。企业不是利用原生开源产品,而是利用第三方公司定制开源方案,可能是纯软件,也可能是软硬一体式。这类方式,会针对开源软件的不足,做定制化改进,满足企业级软件的需求。但这种方式一样寻常企业无法自己独立运维,需要借助第三方公司的商业支持。对数据库的企业级特性有较高要求,但原生开源数据库又无法满足的环境。对于短期内有去除商业数据库的需求场景,非常得当。随着国内对开源数据库利用水平不断深入,有越来越多的此类初创型企业出现。非常看好这种模式的未来发展。


风险分析


本钱分析


6).私有云 + 云化服务
企业私有化部署方案,是一种云化折中方案。受限于一些特殊国情,有些企业无法直接利用公有云,但又急需雷同公有云的平台本事。因此,某些云厂商或数据库厂商提供了一种私有云化部署方案。可简单理解为将云搬回家。过去有种说法,说私有云会逐步萎缩,公有云会一统天下。但从近两年的国内云市场发展来看,私有云的发展速度某些指标甚至凌驾公有云。当我们现在大谈”toB”市场成为下一个蓝海时,这种模式也是toB服务市场的一个重要构成部分。这种方式,得当于大型企业,长期看好。


风险分析
其风险点除了在财力方面,更多是考虑在对厂商的技术依靠性。相较于传统方案,这种方式的依靠性甚至更高。厂商一样寻常提供很好的私有云,及对应其自有公有云的买通方案;但对其他公有云或企业自有平台,则较难买通。


本钱分析


7).裸云 + 开源数据库 + 自主服务
这是一种上云利用的初级阶段,企业仅利用云的Iaas部分,其余均自建。这种方式可充分利用公有云带来的弹性优势,将企业原有的技术积聚延续到云端。对于企业来说,这种方式也是最为“平滑”的,甚至应用可以不做更多感知,仍然像利用企业内部IT资源一样,利用公有云资源。很得当于有多云、跨云需求的场合。但缺点是无法利用云厂商技术本事带来的附加值。


风险分析
风险不大,仅仅是依靠公有云底层,很轻易迁徙到其他云厂商或迁回自有。


本钱分析


8).裸云 + 商业数据库 + 第三方服务/自主服务
这是一种较为特殊的环境。企业选择将商业数据库,构建在公有云上。但其没有选择云厂商提供的,而是自主构建或选择第三方厂商协助完成。这往往是一些中小型的企业,其规模不足以支持私有化部署,而应用又依靠于商业数据库产品。企业想要充分利用云的弹性,因此组合出这种利用方式。


风险分析
风险在于,某些商业数据库针对云场景的不予支持,企业有一定技术风险。要么有比较强大的自主技术本事,要么依靠于第三方服务厂商。


本钱分析


9).云数据库(开源) + 云平台服务
这是云厂商推出的最为“传统”的数据库服务,也是目前最多的一种选择。云厂商基于开源的数据库版本+自有的平台服务,构建其数据库产品。其核心的数据库与开源的版本,是完全一致的,各家比拼的更多是平台服务本事。这种方式对于企业的运维要求很低,根本可以依靠于云厂商提供的本事(除了个别高可用、容灾需求外)。这一方案比较得当于初期上云企业,可逐步摸索云与原有方式的区别。


风险分析
数据库自身风险不大,究竟其利用的与开源同一版本,技术上可迁徙至其他云厂商。当数据库版本升级后,也可以享受到对应的技术红利。但对平台服务,是存在一定依靠的,各家本事差别,需要有适应过程。此外,运维依靠云厂商,也存在一定技术风险。自主的技术本事,会逐步丧失。


本钱分析


10).云数据库(开源定制) + 云平台服务
云厂商除了提供与开源一致版本外,一样寻常还提供私有定制版本。它往往是基于某开源数据库某一版本的深度定制,针对某些特性做了增强。固然有些以反馈社区的方式,回馈给开源(可能未来会merge入新版),但很多仅存在在”云私有D”。如企业有针对某一特殊场景(如秒杀)或其他方面(如金融级数据同步)的强需求,可考虑利用此方案。固然利用也意味着与云厂商深度绑定。此外,在平台服务方面,与上面环境雷同。这种方案比较得当于对数据库有一定要求,而原生开源版本又不支持的环境。


风险分析
风险在于绑定单一厂商,一样寻常很难下来。这与利用大型商业数据库的环境雷同。固然可以在应用端做个设计,尽量减少对特性的依靠。此外,由于是定制版本,未来开源版本的升级可能不会短时间内支持,甚至可能不会考虑支持,完全走向独立分支的道路。针对这点,企业也是需要关注的。


本钱分析
与上一种环境雷同


11).云原生数据库(自研) + 云平台服务
某些大的云厂商,除了上述两种外,可通过自研数据库方式,增加未来的产品竞争力。从最新的Gatner报告来看,更多的云厂商加入进来,这也给数据库整体市场带来了活力。从预测来看,均一致看好云原生数据库的未来发展。相较于前两种方式,这类数据库更是诞生于云,从设计之初就更多考虑了云化环境特点,因此极具竞争力。固然,从目前来看,现有云原生还处于”初级”阶段,未来在解决了更大规模扩展性、多读多写本事等后,其将真正进入井喷式发展。现有各大厂,在这一领域纷纷重点结构,加大投入。对企业而言,无疑又多了一种选择,特别是某些场景(如海量数据等),原生开源、扩睁开源产品均无法满足。


风险分析
风险雷同上面,甚至有过之。企业应用将完全依靠于厂商产品。只管很多是宣传兼容开源或商业数据库,但究竟不是同一产品。这点还需要企业仔细评估。此外,针对兼容性、备份恢复、高可用、数据同步、跨云容灾等,都是值得投入研究的。


本钱分析


12).云数据库(自研) + 云服务 + 云托管平台
这是一类小众的方案,其背景是缘起于数据库厂商与云厂商的蛋糕划分问题。有些数据库厂商(如MongoDB)不盼望将云数据库市场由云厂商主导,而是盼望可由自身主导,构建不依靠于云厂商的独立生态。目前这种方式国内见得不多。



                               
登录/注册后可看大图

受到众多互联网公司的影响,很多传统企业对于开源方案也是跃跃欲试。但在选择之前,也要看到,开源方案并不是免费的“蛋糕”。让我们来看看,开源方案的利与弊。


1). “利”的方面
价格 = 采购 + 维护 + 人员 + 时间 + 机会




2). “弊”的方面









                               
登录/注册后可看大图

1).云DB与传统DB的差异
核心功能
对于托管类数据库产品而言,其核心功能照旧要跟官方产品走。固然,各个大厂都有着自己多年丰富的实践履历,并具备一定的内核研发本事。于是,往往针对原生产品做一些定制化的改造,进而提供与原生产品差异化的本事。改造方向上,往往倾向于下面几类:


针对上述定制化后产品,偶然就成为某种“银弹”,对于企业客户很具吸引力;但事变也具有两面性,对于这些特殊之处的依靠,也会导致客户对产品的依靠。这也是某些客户犹豫之处。在我看来,这个问题的要点在于企业处于的发展阶段。差别阶段的企业,核心诉求差别,在此处的考虑角度也会差别。


外围功能
除了核心功能外,还有些非数据库核心本事,但对于企业利用必不可少的功能。比方:监控、备份恢复、优化、容灾等等。如果没有云的话,这些本事往往是需要企业泯灭精力去自建的。哪怕企业数据库规模不大、利用复杂度不高,利用开源数据库也能满足需求,但上述需求照旧要满足的。于是,前两年平台热很火,很多企业都自建了自己的内部运维平台,构建上述本事。固然这种方式有利有弊。利之处在于,企业可以根据自身需求度身定制,满足个性化需求;弊之处在于,构建本事及泯灭资源长期维护。


云功能
如果说,上述功能企业照旧可以较轻易具备的,那么云功能则相对门槛有些高了。这里所说的”云功能”,是指比方弹性扩缩容等类。这类本事,往往需要依托于强大的底座本事,是需要较大的研发投入和长期积聚才能具备。在某些特定的场合下,这一本事对企业很具吸引力,比方业务形态、幅度变化很大的企业客户。


生态功能
企业选择上云,往往不是仅依靠一两款产品,而更多是看中云端生态功能。对于企业来讲,如何通过云端买通技术瓶颈,快速具备业务本事成为核心。比方从数据埋点、数据捕捉、数据存储、数据盘算到分析展示,如果全流程都可以在云端无缝集成,对于企业来说,是很具有吸引力的。


2).如何看待上云本钱
从人力、财力、时间、风险四个维度分析其本钱问题。






                               
登录/注册后可看大图

1). 产品技术成熟
作为三大核心基础软件之一,数据库在整个IT技术中占据重要的位置。随着近些年来中国经济的快速发展,特别是巨大的生齿基数带来的红利效应,互联网技术在中国发达发展。甚至在某些技术场景下,相较于国外有着更高的要求。这也促进国内企业在IT基础技术(包括数据库)上取得了长足的进步。国内企业对数据库的利用大抵走过了“商业->开源->开源+定制->自研”逐步演进的道路。近些年来,随着技术、资源、人才的积聚,国内的数据库领域取得很大的突破。从数据库技术自己而言,随着分布式、云原生软硬一体化、人工智能等技术的出现,为自研数据库代替大型传统商业数据库,实现弯道超车提供了可能。同时这些技术的出现,也解决了很多传统数据库固有的问题,突破了旧有架构的缺陷,更好地满足客户对海量、弹性、安全、性能等方面的要求。没有传统数据库厂商的历史包袱,新兴厂商站在更高的起点上,实现对传统厂商的超越。


2). 履历积聚丰富
虽然有些企业在去除大型商业数据库实践上,已经有十余年的时间;但大多数都是限于企业内部。受限于其内部场景,很多实践履历是很难复用到外部企业。且也没有一个完备、成熟的商业化产品提供此类服务。但是近些年来,已可以显着看到一些变化,以云厂商为代表,正在将企业内部多年的履历积聚以产品的化的方式输出,资助广大客户完成这一过程。针对这样一个基础软件的更换,我们需要苏醒地熟悉到,不是简单的“苹果换成桔子”的过程。这需要从架构设计、步伐开发、运维安全等多个角度去看待。之前很多企业在抛弃传统商业数据库上举步维艰,正是由于缺乏必要的履历指导,无法将好的技术快速落地并稳定运行。在这里需要重点强调的是,很多企业以为选择一个功能非常强大的数据库,就可以帮着自己摆脱传统商业数据库。其实,这是一个大大的误区。功能强大的产品,不一定是得当你,要想完成这一过程,云数据库厂商的实施履历不可或缺。只有“好的产品+丰富履历+良好服务”,才能最终达成这一目标。


3). 服务方式提升
企业(特别是传统企业)在数据库利用上,按需求的优先级排序,可分为服务、生态、自主、本钱等多个因素。这里最被企业看中的,正是“服务”一环。很多企业利用大型商业数据库多年,已经习惯于传统数据库厂商的“交钥匙”工程,非常看重其完备的服务本事,使得企业可以安心于业务。即使每年付出昂贵的服务费,企业仍然可以接受。这点也是国内厂商的短板,要在短时间内建立其等同于国外数十年积聚的企业服务本事,不是一朝一夕的功夫。这是需要国内厂商静下心来,苦练内功,加大投入。颠末几年来的积聚,国内的云厂商已具备了较为成熟交付服务提醒,形成了规范化的服务本事。


4). 本钱收益驱动
传统大型商业数据库,颇令人诟病的一点就是“贵”。究其根本缘故原由,一方面是其商业策略有关,此外也有人力本钱、服务方式等因素有关。此外,还有很轻易忽略的一点,就是旧有架构的问题。随着新架构的演进、技术的突破,特别是“数据库+云”的结合,为客户提供更灵活、更具性价比的数据库方案成为可能。


5). 业务模式创新
随着数字经济的到来,各类企业都在做着数字化转型,新的业态也不断涌现。这对于支撑企业数字化转型的重要基础设施—数据库,提出了更高的要求。如何满足快速多变的业务模式创新?如何满足快速发展的业务规模需求?等等诸如此类的问题,都是数据库产品需要考虑的。国产数据库正是站在这一高点,从国内环境出发,有针对性地推出很多功能,满足这种创新。


THREE实践篇




                               
登录/注册后可看大图



下面以笔者之前在某公司的实践过程,谈谈对架构实践的理解。这里将从需求、资源、路径、发展角度来谈。



                               
登录/注册后可看大图

第一步,就是现状分析。俗话说,磨刀不误砍柴工,只有对现状充分的了解,找出核心痛点,才能有助于问题的解决。无论是从架构调整照旧其他工作都是如此,只有解决痛点才是对公司有价值的。



                               
登录/注册后可看大图

第二步,就是路径演进。很多架构工作或其他技术工作,都不是一蹴而就的,而是有个逐步演进的过程。正如上面提到的,在之前公司的数据库开发设计规范的落地,也是走过了文档化->技术宣讲->自研平台的过程。



                               
登录/注册后可看大图

团队的环境也很重要。只有统一思想、明白方向,才能有助于最终落地起效。


FOUR发展篇




                               
登录/注册后可看大图

最后,我们谈谈对架构师作为个人发展方向的一些问题。信赖很多做技术的同砚都存在上述的问题?做技术照旧做管理?年龄因素怎么看?技术革新太快,如何破?等等



                               
登录/注册后可看大图

首先我们从企业内部数据应用条理来看,从最为原始的满足事务型处理需求,DBA更多是充当救火队员的角色;到逐步规模化、体系化,DBA通过平台处理运维工作甚至可做到预防性运维;再到运维工作已不是重要矛盾,企业开始关注数据库设计、开发质量问题,DBA需要更多考虑架构侧问题;最终到脱离具体库的形态,而从更高维的数据层面考虑企业内的数据架构问题。企业内部对数据的应用条理的演进,其实也是DBA从运维、平台、设计、优化、架构的演进过程。可以说,伴随着企业发展,数据一线从业者都会慢慢具备一定的架构类职能。这也是技术人,比较理想的一个发展路线。



                               
登录/注册后可看大图

从一段时间来看,DBA职业正受到很大的冲击,这里包括:



                               
登录/注册后可看大图

这是个老生常谈的问题,做技术照旧做管理?我的观点是,选择哪条路径,取决于个人特质,差别的思维方式得当做差别的工作。不要勉强自己做不得当的职业选择。



                               
登录/注册后可看大图

技术的路能走多长?这是很多人的疑问。岂非每个人都能发展成为CTO吗?显然这是不现实的。无论是技术路线照旧管理路线,其发展都是有阶段性的。对于迈入到更高的台阶,都存在一定比例的选择率。大部分人,是无法上升到更高的阶段,要理性地看待这一问题。并在到达自己阶段瓶颈后,找出后续的发展路线。说句时髦的话,就是所谓第二发展曲线。



                               
登录/注册后可看大图

承接上面,每个人发展都是存在一个阶段性上限。当到达这一阶段时,你会发现很难突破自己,此时可以考虑所谓T字性人才发展策略,即横向发展。但这里需要注意的是,一定是在某一领域内靠近自己所能到达上限,由于这会决定你的“视野”问题。在横向发展的选择上,可以有很多。比方右面列出的技术上的其他领域、业务方向的沉淀大概加入人的工作(管理)之中。


文章泉源:DBAplus社群
作者: 业春林    时间: 2020-11-4 17:47
转发了
作者: 羽林润之    时间: 2020-11-5 06:12
不错
作者: IT杨    时间: 2020-11-5 07:03
转发了
作者: qhs8848    时间: 2020-11-6 19:14
转发了




欢迎光临 创意电子 (https://wxcydz.cc/) Powered by Discuz! X3.4