一文讲透应用层数据库架构选型及设计

Posted 了不起的计算

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文讲透应用层数据库架构选型及设计相关的知识,希望对你有一定的参考价值。

在市场变化充满了越来越多不确定性的今天,企业的每一个决策更要做到行之有据、掷地有声。而数据由于能够延伸企业“观感”、赋予企业洞察,已经被视为当今时代新的生产要素。如果不能掌握和利用好数据,企业就没有“灵魂”。在这其中,数据库一般担当着数据共享、保持数据一致性和独立性、实现数据集中管控等诸多“重任”。

所以,拥有一个数据库对企业来说已经成了必选项。但是,由于数据库领域种类繁多、产品复杂,要选择一款适合自己的数据库产品其实并不容易。与此同时,针对不同的业务场景,企业对数据库的性能要求也不尽相同,如何进行合理的数据库架构设计则是另一个重要课题。因此,在本文中,我们将围绕数据库的“选型”和“设计”这两个话题展开。

数据库类型多、选型难

那么,数据库产品选型究竟有多复杂?这要从数据库的发展历程说起。

20世纪70年代,关系型数据库出现,经过40多年的发展,如今,包括Oracle、mysql、SQL Server、PostgreSQL等数据库已经得到广泛使用,成为众多应用的核心支撑。

不过,传统数据库大多采用的是集中式架构,随着企业数据量爆炸性的增加,数据库面临海量数据的处理需求,只能走向分库、分表,而分库、分表对应用程序是侵入性的,常常要涉及应用程序的修改,存在很大安全隐患,导致这些数据库很难再支持企业业务的发展。因此,分布式数据库逐渐得到应用,由于可以动态扩展,并且增加开发行为的可追溯性,分布式数据库受到越来越多行业和企业的青睐。但还有另一个问题,传统分布式数据库部署成本较高,如需要专用设备,就会影响其普及。

所以,近年来云原生数据库也流行起来。相比传统数据库,云原生数据天生具有资源弹性,可以灵活扩展、动态伸缩,还能享受到各种最新的技术红利(如RDMA、傲腾内存),而且成本更低,被认为是未来的发展方向。在技术细节上云原生数据库常常采用计算与存储分离的架构,从而极大地提升了存储数据量,同时改进了数据库的性能,并通过数据的多副本(如3副本)来确保数据安全。

当然,数据的存储,最终目的都是为了分析,所以除了OLTP事务处理数据库之外,OLAP分析处理数据库的作用就在于此,它可以在增删改之外,对数据进行统计和分析。具体来说,OLAP可以帮助企业提取数据中的特性,用于更深入的业务价值挖掘。这二者的结合,还进一步衍生出了HTAP混合事务和分析处理数据库,不但避免了繁琐且昂贵的ETL操作,而且可以更快地对最新数据进行分析。

除了上述多几种关系型数据库,随着互联网发展,近些年来,非关系型数据库(NoSQL)也开始盛行起来。具体来说,面对互联网场景下的海量数据激增,关系数据库在处理超大规模和高并发的业务时以及复杂的数据类型时已经显得力不从心,此时,非关系型数据库则由于易扩展、高性能、灵活等特点得到了非常迅速的发展。当然,非关系型数据库的类别也非常多,包括键值、文档型数据库、图型数据库,并且每种类别下的数据库类型也不少,比如MongoDB、Redis、Infinite Graph等等。

百度智能云数据库产品理念:全、稳、智

总的来说,数据库种类琳琅满目,并且各有特点。对企业来说,要做选型,首先就要清楚自己的业务场景需求。对此,百度智能云存储和数据库产品方向负责人崔剑表示:“首先,企业要非常了解自己的应用系统有哪些模块,每个模块可以提供什么样的应用场景和能力;其次,企业还要搞清楚各个数据库的特点,了解它们的优劣势。然后为不同的应用场景匹配对应的数据库。”

以金融行业为例,在向客户提供贷款的业务中,金融机构需要充分了解客户的基本信息、消费行为、信用卡使用情况等各类信息以确定信用等级,这个过程涉及跨表数据处理和分析,因此,使用图型数据库的网状结构就可以更容易且直观地实现金融风控。

再以游戏行业为例,如今的手游最大的特点就是迭代速度非常之快,而每一次功能上新都会对表结构进行改变,从而影响升级。在这样的场景中,以MongoDB为代表的文档型数据库就会更适用。

对此,百度智能云提供了非常全面的数据库产品矩阵,从底层的数据库服务,到OLTP和OLAP,再到NoSQL,覆盖企业业务的各种级别需要。“全、稳、智——这是百度智能云数据库打造产品的一个理念。”崔剑表示。

首先,是“全”。据崔剑介绍,在百度智能云上,用户可以找到很多数据库类型。比如,对于MySQL这样的开源产品,百度智能云除了提供托管服务以外,还投入很多人力进行了大量优化开发,向个人提供更高的性能和体验;再比如, OLTP小型数据库方面百度智能云上有DRDS,OLTP中型数据库方面百度智能云上有DRDB,OLAP方面百度智能云上有PALO,HTAP方面百度智能云上还有FusionDB。

其二,是“稳”。由于数据库承载了企业应用系统的命脉,所以稳定性是一个基本前提。崔剑表示,在过去十年中,百度智能云数据库已经在百度内部业务覆盖了100多个业务线,积累的数据量达到PB级,每日访问峰值PV达到千亿级。而在这样的高流量情况下,百度智能云数据库还能保证其业务95%以上的SOA不出问题。

其三,是“智”。基于百度智能云ABC三位一体的战略,其数据库产品中也融入了大量人工智能技术,形成了一套完整的数据库周边服务性工具,用于辅助用户进行数据库的日常维护,包括数据同步、数据备份等等,都可以通过人工智能技术提供的自动化能力来实现。

数据库架构设计“方法论”

崔剑强调,更重要的是,百度智能云向企业提供的数据库不仅仅是一款产品,更是一项服务。他表示,“如果只是把产品做出来放到云上让用户自己使用,我觉得是不够的。在服务客户的过程中,我们会结合每个企业具体的业务场景,与客户一起分析诉求点,然后提供最合理的选型和配置方案。”

具体在实践中,百度智能云有自己的一套“架构设计方法论”,崔剑称之为“金字塔模型”。

“金字塔”的底层,关键词是可用性。在这一层,百度会和企业一起梳理场景需求,确定不同场景下的具体数据库方案。举例来说,对于金融这样对安全合规要求比较高的行业来说,要实现跨地域的热活,就可以在两个地方各自构建一套MySQL,然后通过网络节点实现跨地域甚至全国范围内的流量调度和分配。

第二层的关键词是一致性。一方面,要保证数据库主库和从库之间的一致性;另一方面,还要保证数据库与上层缓存节点的一致性。这个问题要视业务对数据的可用性要求,以及对读写性能的要求级别的不同情况来看。比如说,业务对数据读取要求不高,可以通过强制读主库来保障一致性;如果是一个“写少读多”的业务,就可以做读写分离,选择性地配置半同步复制或强同步复制;而如果是读写要求都非常高的业务,还可以从架构入手,比如在MySQL上架一个Redis,根据具体情况灵活采用选择性读库方案,既保证性能同时确保一致性。

第三层是不可或缺的安全性保障。崔剑表示,数据库的安全分为几个层次:首先是在用户使用数据库外围时把风险挡在外面,主要办法是做好用户权限分离;其二,是在SQL层通过防火墙以及数据库审计等核心引擎提高整体安全能力;其三,是在数据层通过完善的备份和数据加密方案,防止数据丢失和数据被盗。

第四层是可扩展性。不同的数据库产品有不同的扩展方式,比如MySQL可以在数据量达到一定规模后做合理的数据分区、分表和分库;比如MongoDB则可以进行分片,甚至是横向扩充分片。

第五层是性能。对此,崔剑认为,性能的提升可以分操作来看。通常来说,要提高查询速度可以建索引,要提升读操作性能可以通过流量负载均衡实现读流量的定量分配管理,要提升写操作可以对主库进行分布化从而分散写流量压力。与此同时,对于复杂的业务场景,企业还可以一步步通过复合的办法实现整体性能的最大化。

再往上,还有非常关键的一层,就是体验。这方面主要体现在数据库的运维过程中,譬如,通过上面提到的人工智能技术就可以帮助技术团队完成简单的开发和运维,以及数据同步、数据备份等工作,从而释放企业更多的人力。

“总的来说,企业设计自己的数据库架构需要结合业务的复杂程度来进行。对于相对简单的业务,通常可以选择标准化的方案,而对于复杂的业务,就需要我们基于场景梳理,根据‘金字塔’架构逐层进行方案设计。”崔剑总结说。

以上是关于一文讲透应用层数据库架构选型及设计的主要内容,如果未能解决你的问题,请参考以下文章

一文讲透支付宝沙箱的基本应用

一文讲透单点登录架构思想(SSO)

转太强了!一文讲透了标准Web系统的架构分层~

电商数仓笔记1(数据仓库概念,项目需求及架构设计,数据生成模块)

大数据项目之电商数仓数据仓库概念项目需求及架构设计

项目需求及架构设计