一文读懂火山引擎云数据库产品及选型

1. 为什么要做数据库选型

1.1 数据库选型的重要性与难点

发展数字经济是当下各行各业的重要方向。支撑数字经济的底座是软件,特别是基础软件,可以说基础软件是整个数字经济的坚实底座。在基础软件领域,有三大基础软件,分别是操作系统、数据库系统和中间件。我们每天日常生活中的方方面面,背后都离不开这些基础软件的支撑,其中数据库系统是业务数据的载体,比如银行卡上的余额,是非常重要的数据,不能有任何差错,数据库在所有 IT 系统中的地位都是重中之重。

数据库作为基础软件的重要性不言而喻,各行各业的数字系统都离不开数据库系统。但不同行业特点不同,行业需求也就不同。面对着业界上百种数据库类型,到底应该如何根据自己的业务特征去选择最合适的数据库系统?这个问题非常的重要,因为如果数据库选择不合适,可能会让业务系统停摆,造成严重经济损失。所谓合适的数据库系统,不仅仅要满足业务需求,还要尽可能降低成本,减轻运维管理难度,满足业务未来的发展等等。这是个复杂的问题, 因为各行各业的业务场景各不相同,对数据库的需求和使用场景差异很大,可选择的数据库系统也是几十上百种,如此一组合下来,对于非数据库专业人士,选择复杂度非常高。

本文的目的就是要尝试回答这个重要且复杂的问题。如果您计划将 IT 业务系统部署在火山引擎之上,可以参考本文的思路,选择合适的火山引擎云数据库服务,为业务应用打造坚实的数据库底座。

1.2 数据库发展与类型简介

数据库系统在上世纪 70 年代初出现,至今已经发展了半个多世纪,其理论、技术与产品已经非常丰富,呈现出百花齐放的景象。根据其特点可以大概分为关系型数据库管理系统 ( RDBMS ) ,非关系型数据库 ( NoSQL ) ,NewSQL、云原生数据库、分布式数据库等等。每一类数据库中使用不同的技术实现,又可以分化出不同的产品类型。根据 DB-Engines 的统计,数据库产品数量已经有将近 400 种,数据库厂商也有几百家,如下图所示,不同数据库产品的实际应用规模也大有不同,其中关系型数据库管理系统是所有数据库中使用最广泛的一类。同时,根据卡内基梅隆大学维护的全球数据库信息库 ( dbdb.io ) 显示,数据库系统种类已经多达 870 种,可谓是欣欣向荣,让人眼花缭乱。

一文读懂火山引擎云数据库产品及选型

纵观整个数据库发展史,关系型数据库系统是历史最悠久并且使用最广泛的一类数据库系统,其理论基础是基于 IBM 研究员 E.F.Codd 博士在 1970 年提出的 ” 关系模型 ( Relational model ) “。关系型数据库也是过去几十年里各行各业使用最多最广泛的数据库类型。

随着 2000 年之后移动互联网的大规模爆发,催生出了丰富多彩的面向互联网的应用,这些应用共同的特点是并发量非常高,数据量特别大。基于这些互联网的新场景与新需求,又出现了 NoSQL 数据库技术,其理论基础主要是由 Eric Brewer 提出的 CAP 定理以及 Dan Pritchett 提出的 BASE 原则。

再往后,业界将关系型数据库与 NoSQL 数据库的优势进行了融合,出现了 NewSQL 数据库,随着云原生技术的入场与爆发,又有了云原生数据库。

一文读懂火山引擎云数据库产品及选型

关系型数据库将数据存储于二维表格之中,数据以行为单位,一行数据表示一个实体信息,每一行数据的属性都是相同的,通过 SQL 语言进行操作,容易理解,广泛应用于企业的 ERP、CRM、财务系统和交易系统等核心业务系统。其最大的特点是支持事务,遵循 ACID,保证数据强一致性。业界常见的关系型数据库又分商业数据库与开源数据库,其中主流的商业关系型数据库代表有 Oracle、SQL Server、DB2 等;主流的开源关系型数据库代表有 MySQL、PostgreSQL、MariaDB 等。

NoSQL,Not Only SQL,” 不仅仅是 SQL”,广泛应用于以互联网业务为代表的场景。NoSQL 数据库又可以细分为 KV 型 NoSQL 数据库 ( 以 Redis 为代表 ) 、文档型 NoSQL 数据库 ( 以 MongoDB 为代表 ) 、宽列型 NoSQL 数据库 ( 以 HBase 为代表 ) 、时序型 NoSQL 数据库 ( 以 InfluxDB 为代表 ) 以及图 NoSL 数据库 ( 以 Neo4j 为代表 ) 。虽然这些类型都属于 NoSQL 数据库范畴,但是不同类型的 NoSQL 数据库所适用的场景各有不同,需要根据业务特征选择合适的 NoSQL 数据库。

其中 KV 型 NoSQL 数据库适用于需要超高性能,读远多于写,并且可以容忍数据部分丢失的场景,例如作为关系型数据库的外部缓存,用于提升系统整体的读性能,减轻关系型数据库的读压力。

文档型 NoSQL 数据库使用的是一种半结构化的数据模型(json 或 xml 格式),与关系型数据库相比,文档型 NoSQL 是没有 Schema 的,由于没有 Schema 的特性,可以随意地存储与读取数据,因此文档型 NoSQL 数据库解决了关系型数据库表结构扩展不方便的问题。

宽列型 NoSQL 数据库,主要用在大数据、OLAP 场景。其特点是可以提供海量的存储容量,PB 级别数据量可以轻松存储,并且成本较低。

时序型 NoSQL 数据库主要应用在一些与时间强相关的数据模型,例如 IoT、监控数据等场景。对于时间序列相关的数据,时序型 NoSQL 数据库的处理与关系型数据库的处理方式是不一样的,时序型 NoSQL 数据库主要是有效地收集、存储和查询高频产生的各种时间序列数据,对此做了专门的设计和优化,专门用于这类场景。

图 NoSQL 数据库主要用于处理‘关系’数据。这里的‘关系’不是关系型数据库中的关系,而是指不同对象之间的联系。例如,社交关系 ( 人与人的关系 ) 、推荐关系 ( 人与物的关系 ) 、关联关系 ( 物与物的关系 ) 等等。这类数据用关系型数据库很难处理,特别是在互联网海量数据条件下更复杂,所以图 NoSQL 数据库主要是针对这类场景做了专门的设计与优化,用于进行‘关系’数据的存储与查询。

从技术角度出发,数据库可以分为关系型数据库与 NoSQL 数据库。从场景角度出发,数据库又可以分为 OLTP 数据库与 OLAP 数据库。OLTP(Online trancaction processing),是关系型数据库的主要应用,侧重于交互式的事务处理,例如银行交易、在线订单处理等。OLAP ( Online analytical processing ) 是数据仓库系统的主要应用,支持复杂的分析操作,侧重分析决策支持,并且提供直观易懂的查询结果,主要跟大数据系统关系紧密。OLTP 与 OLAP 系统之间通常会使用 ETL 进行连接。

一文读懂火山引擎云数据库产品及选型

本文主要侧重于 OLTP 系统的选型指南,也就是上图中圆圈中的范围,包含关系型数据库与 NoSQL 数据库。OLAP 与大数据相关不在本文讨论范围。

2. 选型基本方法论

在开始介绍数据库选型方法论之前,首先需要介绍一个理念:” 数据库选型没有银弹 “。就是说没有任何一款数据库可以满足所有业务场景的需求,找不到一个可以包打天下的数据库。

如果真有 ” 数据库银弹 “,那也就不必做数据库选型了,直接用银弹就行,数据库世界也就不会出现如此多种类的数据库技术和产品类型了。

所以需要根据不同的业务场景、业务需求去选择一款最适合的数据库系统,这也是本文所要讨论的核心问题。

一文读懂火山引擎云数据库产品及选型

2.1 参与选型的角色

数据库选型不仅仅是一个技术选择,而是一个全局选择。后面会从多种视角多个方面来说明做数据库选型需要考虑的因素,包括应用接口、数据模型、性能、稳定性、成本、运维复杂度、高可用性、安全性、扩展性等方面。

数据库选型是一个全局选择,参与到选择中的角色主要有三类:

● 开发人员,代表了业务和应用本身。

● DBA,代表了数据库管理角色。

● 财务部门,代表了成本控制角色。

财务部门主要关注的是数据库系统的成本,需要根据业务系统的规模、重要性等方面决定财务投入,简单说就是准备花多少钱建设与维护数据库系统。投入越多,可以获得更强的数据库能力,也可以聘请更专业的 DBA 进行数据库维护,保障数据库系统稳定运行。企业组织中越是重要核心的数据库系统,会获得更多的资源投入。

DBA,Database Administrator,是数据库管理员的简称。从名字就能看出来,DBA 是负责管理数据库系统的角色,主要关注数据库的可运维性,包括监控告警、备份恢复、升级迁移、问题诊断工具、调优工具等;稳定性,包括高可用性、自动主从切换、手动主从切换、会话管理等;性能,包括 QPS、时延、吞吐量等;可扩展性,包括灵活变配、计算扩容、存储扩容等;安全性,包括 SQL 审计、操作审计、数据加密、数据脱敏等。

开发人员,是应用程序的设计者与开发者,也是数据库系统的实际使用者,开发人员设计的应用程序会直接与数据库进行交互,利用数据库进行数据的高效存取。开发人跟 DBA 的关注点有类似的地方,例如开发人员也会关注数据库的性能、稳定性、可扩展性。但除此之外,开发人员更关注的是数据库提供的接口和支持的数据模型,这一点直接决定了应用应该选择什么样的数据库。接口与数据模型包括了是否支持 SQL、是否遵循 ACID、数据一致性等等。

一文读懂火山引擎云数据库产品及选型

2.2 数据库选型考虑

数据库选型首先需要考虑的应该是业务应用所服务的场景,是 OLTP 场景还是 OLAP 场景。如果是 OLAP,建议参考大数据相关选型指导;如果是 OLTP,可以参考本文的选型指导。

接下来是考虑应用的数据模型。数据模型可以是关系型、半结构化、非结构化、KV 型等等。如果是关系型,可以选择关系型数据库;如果是 KV 型,可以选择 Redis;如果是非结构化或半结构化,可以从 NoSQL 数据库系列中选择适合的种类,需要看具体的数据模型。

如果业务应用对事务 ACID 是强需求,那么关系型数据库将会是最佳的选择,例如 MySQL、PostgreSQL 等。

接着要考虑业务应用对数据一致性的要求。如果业务应用需要强一致性,那么优先选择关系型数据库;如果业务应用可以接受数据的最终一致性,那么各类 NoSQL 数据库都可以成为待选项,具体结合数据模型做进一步考虑。其中,MongoDB 可以通过调整本身的某些参数达到数据强一致的效果,开发人员需要关注。

此外,除了考虑业务应用现阶段的需求,还需要为未来做考虑,这里面最重要的就是预估业务增量,包括对性能、数据量的预估。如果业务在未来增速可能会很快,会需要更强的数据处理能力,或者需要更大的数据容量,那么也需要同时考虑数据库的可扩展性,通过扩展来获取更强的数据处理能力以及更大的数据存储空间,以保证业务应用可以平稳运行。

一文读懂火山引擎云数据库产品及选型

一文读懂火山引擎云数据库产品及选型

本文来自互联网,不代表前途科技立场,如若转载,请注明出处:https://accesspath.com/tech/5799993/

(0)
NEXTECH的头像NEXTECH
上一篇 2022年12月5日 下午9:31
下一篇 2022年12月6日 上午12:01

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注