1.5 大数据应用与分布式大数据库技术
随着数据采集技术和存储技术的发展,许多企业和机构内部积累了大量的数据,同时也有大量的数据从外部不断到来,这些数据记录了关于客观事物或业务流程的较完整特性和较全面的变化过程,相对于之前数据库系统中保存的片面的、短期的、小批量的数据,这些数据称为大数据(Big Data)。大数据是关于客观世界及其演化过程的全面的、完整的数据集。通常,大数据定义为:典型为PB(1PB≈103TB)或EB(1EB≈103PB)数据量级的数据,包括结构化的、半结构化的和非结构化的数据,其规模或复杂程度超出了常用传统数据库和软件技术所能管理和处理的数据集范围。
大数据应用是近年来数据库技术的新需求,而高性能计算和云计算技术的飞速发展,使这类应用成为可能。分布式数据库的海量处理能力使其成为解决大数据应用的关键技术之一。
1.5.1 大数据的类型和应用
随着技术的发展,大数据广泛存在,如企业数据、统计数据、科学数据、医疗数据、互联网数据、移动数据、物联网数据等,并且各行各业都可得益于大数据的应用。
按照数据来源划分,大数据主要有4种来源:管理信息系统的管理大数据、Web信息系统的Web大数据、物理信息系统的感知大数据、科学实验系统的科学大数据。
管理信息系统包括企业、机关内部的信息系统,如联机事务处理(OLTP)系统、办公自动化系统、联机分析处理(OLAP)与数据仓库系统,主要用于经营、管理和决策,为特定用户的工作和业务提供支持。数据的产生既有终端用户的原始输入,也有系统的二次加工处理所产生的大量衍生数据。IDC发布的《数据时代2025》报告预测,2025年,全球数据总量将从2018年的33ZB增长到175ZB,涉及的行业包括交通/电动汽车、电信、媒体、制造及其他。企业数据主要存储在企业内部数据中心、云端(公有云、私有云、行业云)、第三方数据中心、边缘和远程位置及其他位置。
Web信息系统包括互联网上的各种信息系统,如社交网站、社会媒体、搜索引擎、网络视频等,主要用于构造虚拟的信息空间,为广大网民用户提供信息服务和社交服务。互联网上的服务器端和客户端在时刻产生大量数据,特别是用户广泛的社交网络,产生了大量的社会媒体信息。例如,2020年,微博日活跃用户有2.29亿,每天有50亿次在线搜索,每天发送2940亿封电子邮件,Facebook上每天创建4PB的数据,其中包含3.5亿的照片以及1亿小时的视频。这种系统的组织结构是开放式的,大部分数据是半结构化或无结构的。数据的产生者主要是在线用户。
物理信息系统是关于各种物理对象和物理过程的信息系统,如物联网与传感器网络、实时监控系统、实时检测系统,主要用于生产调度、过程控制、现场指挥、环境保护等。针对观察对象和环境对象,物理信息系统自动地采集大量的感知数据。今天,无处不在的物联网设备正在将世界变成一个“数字地球”。据HIS的数据预测,到2025年,全球物联网(IoT)连接设备的总安装量将达到754.4亿,约是2015年的5倍。2021年3月16日,IDC发布的可穿戴设备报告中,2020年全年整体出货量为4.447亿部,同比上升28.4%。物理信息系统的组织结构是封闭的,数据由各种嵌入式传感设备产生,一般是基本的物理、化学、生物等测量值或者是音频、视频等多媒体数据。
科学实验系统也属于物理信息系统,但其物理环境是预先设定的。两者的主要区别在于,前者用于生产和管理,数据是自然产生的,是客观的、不可控的;后者用于研究和学术,数据是人为产生的,是有选择的、可控的,有时可能是人工模拟生成的仿真数据。大规模的或精密的科学实验仪器自动地记录了大量实验数据或观察结果数据。例如,美国斯隆数字巡天探测中心(Sloan Digital Sky Survey)的天文望远镜记录到近200万个天体的数据,包括80多万个星系和10多万个类星体的光谱的数据,最近的数据产品就达116TB(http://www.sdss.org/dr12/data_access/volume/)。在脑科学研究中,1mm3大脑的图像数据超过1PB。
按照应用类型划分,可将大数据分为海量交易数据(企业OLTP应用)、海量分析数据(企业OLAP应用)和海量交互数据(社交网络、传感器、GPS、Web信息)三类。
海量交易数据的应用特点是多为简单的读写操作,访问频繁,数据增长快,一次交易的数据量不大,但要求支持事务特性,其数据的特点是完整性好、时效性强、具有强一致性要求。
海量分析数据的应用特点是面向海量数据分析,操作复杂,往往涉及多次迭代完成,追求数据分析的高效率,不要求支持事务特性,典型采用并行与分布处理框架实现,其数据的典型特点是同构性(如关系数据、文本数据、列模式数据)和较好的稳定性(不存在频繁的写操作)。
海量交互数据的应用特点是实时交互性强,主要进行数据查询和分析,不要求支持事务特性,其数据的典型特点是结构异构、不完备、数据增长快,具有流数据特性,不要求具有强一致性。
按应用领域划分,大数据在以下几个领域的应用如火如荼:
●Web领域:主要应用于电子商务,进行社交网络分析、广告、推荐、交友等。
●通信领域:主要应用于电信业,进行流量经营分析、位置服务等。
●网络领域:主要应用于网络空间安全,进行舆情分析、应急预警等。
●城市领域:主要应用于智慧城市、智慧交通,进行城市管理、节能环保等。
●金融领域:主要应用于金融业,建立征信平台与风险控制。
●健康领域:主要应用于健康医疗业,提供流行病控制、保健服务等。
●生物领域:主要应用于生物信息和制药,用于研制和开发新药。
●科学领域:主要应用于天文学、生物学、材料学、社会学等学科,进行科学发现、仿真实验等。
下面介绍两个典型的大数据库应用案例。
案例1:轨迹大数据及应用
2020年开年之际,新型冠状病毒疫情汹涌而至。面对紧急突发的公共卫生事件及多方来源的海量大数据,政府联合政企单位科学地运用大数据技术,为公众提供了更完整、连续、准确、及时的防疫信息,为专家提供了追溯疾病源头的方法,为决策者提供了传染病发展趋势的相关信息,这是大数据应用于防疫的重要任务。通过集成电信运营商、互联网公司、交通部门等单位的信息,基于大数据可分析“涉疫”人员的活动轨迹。一方面,通过手机信令等包含地理位置和时间戳信息的数据分析绘制病患的行动轨迹;另一方面,根据病患确诊日期前一段时间的行动轨迹和同行时间较长的伴随人员,可以推断出病患密切接触者。同时,综合分析确诊病患、疑似病患和相关接触者的行动轨迹,可以准确刻画跨地域漫入、漫出的不同类别人员的流动情况,这既为精准施治提供了有力指导,也为预测高危地区和潜在高危地区提供了有力依据。
案例2:事务管理大数据及应用
2020年,支付宝全球用户量已经突破10亿,其中3亿用户来自海外。今天,支付宝已经从一个支付工具成长为一站式数字生活平台,通过引入数字金融、政务民生、本地生活等各个领域服务方,为消费者提供一站式数字生活服务。支付宝早期的IT基础设施采用传统集中式数据库,但随着电子商务的蓬勃发展,“潮汐式”“爆发式”的业务场景层出不穷,最典型的场景就是双11、618等各种促销活动对数据库的冲击,传统的集中式数据库不仅成本高昂,也无法应对这种场景。因此蚂蚁集团100%自己研制了OceanBase分布式数据库,该产品具有云原生、线性扩展、强一致性、高度兼容Oracle/MySQL等特性,有效解决了联机事务处理关系数据库在强一致性前提下水平扩展的难题。支付宝从2014年开始逐渐迁移到OceanBase数据库上,到2017年所有核心系统的100%流量都已由OceanBase来支撑。今天,承接支付宝的OceanBase数据库采用“三地五中心”容灾方案,集群有100多套,数据量达到PB级,每批次最大可查询100万条记录,每批次最大可处理130亿个账户。
1.5.2 大数据的特点
一般认为,大数据具有以下4个特点,简称4V。
●规模海量(Volume):数据规模巨大。例如,数据集大小在PB级以上,具有10亿条以上的记录。或者,数据复杂性高。例如,每条记录具有100万个属性,数据立方具有1万个以上的维度。
●变化快速(Velocity):数据可能以流的方式动态地产生,到达速率快,要求处理具有实时性。例如,大型搜索网站的用户点击流每秒钟可产生3000万条流数据。
●模态多样(Variety):数据表示上和语义上存在异构性。在数据表现形式上,既有结构化数据(如关系数据),也有非结构化数据(如文本、图像、多媒体等),数据模态包括标量、矢量、张量等多种形式。在数据的语义方面存在模糊不确定性、同名异义、异名同义等各种情况。数据质量和数据的真实性也难以保证,后者也称为Veracity。
●价值密度稀疏(Value):由于数据量大,而查找的结果只占其中一小部分,因此,单位数据量的价值相对较低。大数据查询宛如大海捞针,因此,对查询效率要求较高。
大数据描述了一个对象(物理的或逻辑的)或一个现象(或过程)的全景式的和全周期的状态。因此,大数据的“大”,可体现在如下三个方面。
●大的复杂性:数据集的复杂程度大。无论从规模上还是从维度上,都比传统的数据库大几个数量级,从几百倍到上万倍。
●大的结果:从大数据中可得到更多的查询和分析结果。对大数据可进行大尺度的理解,包括空间上和时间上的挖掘分析,可得到更加全面的、完整的分析结果,也可挖掘出长期的、全程的演变历史。也可实现高分辨率、全景式的理解,比小数据上的挖掘结果更细致、更精确。
●大的外延:大数据涉及大量的上下文信息。大数据不仅在内部存在关联性,也与外部存在大量的关联性,在处理大数据时,也需要考虑外部的关联信息。
1.5.3 大数据处理过程
面向分析处理的大数据应用的执行流程,一般经过如下几个步骤:大数据采集与预处理、大数据集成与整合、大数据分析与挖掘、大数据可视化展现,如图1.8所示。
图1.8 大数据处理过程
1.大数据采集与预处理
在1.5.1节所述的4种数据源中,通过抽取、感知或测量得到原始数据,将来自不同数据集的数据收集、整理、清洗、转换后,生成到一个新的数据集。
在数据预处理中,首先要考虑的是数据质量,数据质量是要解决大数据的不可辨识性(veracity)。数据质量一般包含5种特性:精确性、一致性、完整性、同一性和时效性。精确性是指数据符合规定的精度,不超出误差范围;一致性是指数据之间不能存在相互矛盾;完整性是指数据的值不能为空;同一性是指实体的标识是唯一的;时效性是指数据的值反映了当时实际的状态。
对于错误数据和过期数据,需要进行过滤和清除,保证数据的精确性、一致性和时效性。对于冗余的数据,需要进行缩减和实体解析,保证数据的同一性。对于缺失的重要数据,需要进行修复,保证数据的完整性。
2.大数据集成与整合
从不同的数据源可得到不同的数据集。而不同的数据集可能存在不同的结构和模式,如文件、XML树、关系表等,表现为数据的异构性(heterogeneity)。对多个异构的数据集,需要做进一步集成处理(data integration)或整合处理(data consolidation),为后续查询和分析处理提供统一的数据视图,即对清洗后的数据进行转换、集成和整合处理,形成统一格式和结构的整合数据,如科学文本格式或者关系数据库格式。同时,要生成描述数据的元数据,对数据进行标注。元数据需要描述原始数据、整合数据的数据格式、属性、创建者、创建时间等,还需要描述数据之间的衍生关系,以提供数据的溯源信息。
3.大数据分析与挖掘
大数据分析与挖掘是大数据应用的核心,主要采用传统的统计学、机器学习以及基于深度神经网络的深度学习等方法从数据中总结或挖掘出潜在有用的模式和知识,建立起大数据分析模型,如频繁模式、决策树、回归模型、卷积神经网络模型等。当前热门的大图数据分析与挖掘技术可完成更复杂的知识发现,如基于知识图谱挖掘实体间存在的未知关联关系。
大数据上的数据分析不同于小样本上的统计分析,要考虑到大数据上广泛存在的噪声、动态多变性、稀疏性、异构性、相关性、不可信性以及隐私问题等,要消除这些不确定因素的影响,以得到可靠的结果。同时,发现的模型应具有可理解性和可验证性。
4.大数据可视化和展现
必须对大数据分析和挖掘的结果进行解释,以容易理解的方式展现给决策者等最终用户。最方便的方法就是可视化,如各种图表。数据分析的过程应该是可控的、可再现的和可溯源的。此外,在已得到的模型上,还可以做进一步的可视化探索性分析。
1.5.4 大数据管理新模式
大数据带来了大机遇,同时也为有效管理和利用大数据提出了挑战。尽管不同种类的海量数据存在一定差异,但总的来说,支持海量数据的管理系统应具有如下特性:高可扩展性(满足数据量增长的需要)、高性能(满足数据读写的实时性和查询处理的高性能)、容错性(保证分布系统的可用性)、可伸缩性(按需分配资源)和尽量低的运营成本等。然而,由于传统的关系数据库固有的局限性,如峰值性能、伸缩性、容错性、可扩展性差等特性,很难满足海量数据的柔性管理需求,因此提出了面向海量数据管理的新模式,如采用NoSQL可扩展的大数据库系统、面向OLTP的分布式大数据库系统、结合OLTP和OLAP的HTAP分布式大数据库系统和云原生的分布式大数据库系统(As-a-Service)等。其中,HTAP分布式大数据库系统和云原生的分布式大数据库系统是NewSQL数据库系统的典型代表。NewSQL数据库是继NoSQL数据库提出的新型SQL数据库,它结合了传统数据库OLTP和NoSQL的高性能和可伸缩性。大数据库系统的分类如图1.9所示。
图1.9 大数据库系统的分类
下面主要按上述分类对这几类分布式大数据库管理系统做简要介绍。
NoSQL(Not Only SQL的缩写,意思是不仅仅是SQL)大数据库系统是指那些非严格关系型的、分布式的、不保证遵循ACID原则的数据库系统,分为key-value存储、文档数据库、列存储数据库和图数据库四类。其中key-value存储备受关注,已成为NoSQL的代名词。典型的NoSQL产品有Google的Bigtable、基于Hadoop HDFS的HBase、Amazon的Dynamo、Apache的Cassandra、Tokyo Cabinet、CouchDB、MongoDB和Redis等。NoSQL数据库系统典型遵循CAP(Consistency, Availability, Partition tolerance)理论和BASE(Basically Available,Soft state,Eventually consistent)原则,根据自己的设计目的和应用场景进行相应的设计,如:Cassandra、Dynamo等满足AP,更加强调读写效率、数据容量以及系统可扩展性;而传统的关系数据库(如MySQL和PostgreSQL等)则满足AC,强调满足事务特征和强一致性。在性能上,NoSQL数据存储系统都具有传统关系数据库所不能满足的特性,是面向应用需求而提出的各具特色的产品。在设计上,它们都关注对数据高并发地读写和对海量数据的存储等,并具有很好的灵活性和很高的性能。它们都支持自由的模式定义方式,可实现海量数据的快速访问,灵活的分布式体系结构支持横向可伸缩性和可用性,且对硬件的需求较低。
面向OLTP的分布式大数据库系统,是指满足ACID强一致性的分布式数据库系统。典型的产品主要有Google公司的Spanner、Cockroach Labs推出的CockroachDB、阿里巴巴公司的OceanBase。Spanner采用改进的两段提交(2PC)协议支持分布式事务,满足ACID强一致性;CockroachDB结合悲观写锁和乐观协议,在观察到冲突写入时,增加事务提交时间戳,实现了可串行化的隔离;OceanBase支持单机事务和多机多分区事务,基于改进的2PC协议以及多版本的并发控制方法,提升了系统的分布式事务处理能力。面向OLTP的分布式大数据库系统,一方面,为支持ACID强一致性,主要从数据放置策略上提高分布式事务2PC的执行效率;另一方面,为减少事务延迟,侧重采用捎带信息来减少同步代价,以此提高分布式2PC的处理效率。
支持HTAP的分布式大数据库系统是指同时支持OLTP和OLAP的大数据库系统,是NewSQL的典型代表,主要有从现有数据库发展(如Oracle和SQL Server等)、扩展开源分析系统(如TiSpark、Wildfire等)或从头构建(如HANA DB和TiDB等)三种模式。目前呈现出许多从头构建支持HTAP的分布式大数据库系统,主要侧重于研究混合工作负载下的计算效率、事务一致性和可用性等。例如,HANA DB为支持HTAP工作负载设计了统一的内存数据库引擎,提供满足OLTP的行存储模式和满足OLAP的列存储模式,同时支持事务性查询处理和实时分析。TiDB由基于行存储的OLTP和基于列存储的OLAP两套引擎组成,采用基于共识协议的副本复制技术,保证OLAP数据库与OLTP数据库的一致性,能够同时提供高可用性、数据一致性、可伸缩性、数据新鲜性和隔离性。
云原生数据库(Cloud Native Database)系统,是指在云计算环境下实现的一种分布式数据库或者部署到云计算环境下的数据库。它们的共同特点是都实现数据库系统的虚拟化,为用户提供数据库管理功能的云服务。早期代表性的云数据库有谷歌公司的Bigtable、亚马逊公司的SimpleDB等。当前代表性的云原生数据库系统有亚马逊的Aurora数据库和阿里云的PolarDB数据库。针对云原生数据库系统,主要侧重其提供的云服务而面临的挑战,例如:基于按需付费模式为消费者提供无服务器数据库服务的最佳模式;现代云数据库所采用的存储和计算分离架构,以获得高可用性、可伸缩性和持久性;多租户服务模式下的资源共享及隔离性问题;多数据中心问题及安全性问题等。
1.5.5 分布式大数据库系统及关键技术
在大数据处理过程中分别涉及原始数据、整合数据、分析数据和结果数据,这些数据通常也是海量的,需要使用大数据管理系统进行存储和管理,通常保存在大型分布式文件系统或者大型分布式数据库系统中。
我们把对大数据进行管理的分布式数据库管理系统称为分布式大数据库管理系统,简称为大数据库管理系统。大数据库管理系统、其下管理的数据库及其上的应用,一起构成了大数据库系统。在本书中,为叙述方便,在不影响理解的情况下,将大数据库、大数据库管理系统、大数据库系统统称为大数据库。
除了传统的分布式数据库技术之外,分布式大数据库管理系统还要考虑以下几方面的技术。
1.大数据库系统结构
大数据库系统结构可分为多系统结构、并行系统结构和云系统结构。多系统结构可以依赖于多个系统协同完成大数据的管理,相当于大型异构分布式数据库系统。并行系统结构建立在一个集成的并行处理平台上,如集群计算机环境,由底层系统平台提供强大的存储和计算能力,由上层组件表达和处理各种任务。如图1.10所示,多系统结构的计算节点的关系属于松散耦合型(如图1.10a所示),并行系统结构为紧密耦合型(如图1.10b所示)。云系统结构是指在云平台上实现的支持云消费模型和云架构的分布式数据库系统结构。图1.11所示为支持分离策略[计算(CPU)与存储(S)分离]的系统结构示例,结合多租户策略,具有高可用性、弹性可扩展、高性能和数据安全等特点。
图1.10 大数据库系统结构
图1.11 计算存储分离结构
通常,根据应用需求采用合适的系统结构构建大数据库系统。已安装有传统的数据库管理系统的企业通常采用松散耦合型系统结构构建大数据库系统,可有效节省构建代价,但可能会受限于传统系统的局限性;紧密耦合型的大数据库系统是基于集群的云计算系统所采用的典型架构,可按需构建,保证系统具有高性能和高可靠性。而云系统架构具有弹性可扩展、数据安全、高可用性等特点,是目前基于云平台的应用系统的首选架构。
2.大数据存储与管理
为了提高存储效率,需要采用恰当的数据组织结构。例如,采用流行的LSM树层次结构对数据进行删除冗余和压缩处理,考虑到数据的生命周期,还需对数据进行分级管理,将不常用的数据定期归档;为支持HTAP混合的数据管理,采用行列结构共存的存储模式,通过行列结构转换满足数据的时效性。另外,为了保证数据可靠性,需要有容错处理能力,一般采用多副本存储。同时,随着数据量和类型多样性的增加,可采用块、文件、对象的混合存储系统。
3.大数据查询处理
为了保证数据存取的可伸缩性,需要采用专门的索引技术,如Bloom Filter技术、局部敏感哈希(LSH)技术、多级LSM树索引技术、结合查询负载学习构建滤波器等;需要自适应的内存管理技术,如打破LSM存储系统的内存墙、采用字节可寻址的持久内存(PM)等。在查询处理过程中,需要大量的查询优化技术,并要保证复杂查询处理的可伸缩性。例如,采用自适应实现跨地域复制技术以提高并发执行效率、采用实例化的数据布局减少I/O代价以提高数据分析效率等。
4.大数据事务管理
不同的大数据应用需要不同的事务级别,需要有相应的事务管理需求及并发控制机制。面向OLTP的大数据系统要求事务强一致性,主要是通过改进2PC协议和锁管理机制提高系统性能,如采用消息捎带技术减少2PC协议的交互次数、采用多粒度锁提高并发执行效率、以epoch为提交单位提高事务提交效率等。支持HTAP的大数据系统需要支持多类型事务特性,如采用持久内存支持无日志的事务管理以提升OLTP的写入效率、采用多版本并发控制(MVCC)机制支持OLAP的数据查询效率等。
5.负载均衡策略
负载均衡是分布存储数据和并行处理大数据的典型体现。对于数据负载,除了考虑数据均匀存放之外,还需要区别对待热点数据和冷数据、考虑副本数据的作用等;对于事务负载,需要综合考虑静态负载均衡和动态负载均衡、事务数据本地化程度、节点宕机时的数据或事务的迁移代价等。
6.大数据复制管理
副本复制有助于提高系统可用性和系统性能,但需要维护副本一致性。通常需要根据应用需求考虑副本一致性维护所导致的数据读写延迟,如基于epoch的提交和复制机制可以减少2PC和同步复制的开销、考虑自适应的副本存放策略来提高事务处理性能、为支持OLTP/OLAP混合工作负载按数据类别考虑数据的一致性维护策略以及通过事务提交(如2PC)和数据复制(如Paxos共识协议)功能集成来减少事务提交延迟等。
7.大数据安全管理
为保证大数据库系统中数据的安全,需要综合考虑大数据库系统所在的网络安全、客户端访问安全、云中数据的安全、数据传输链路的安全,并考虑采用数据加密技术和数据隐私保护技术等,另外,结合区块链的数据可信及可验证等机制也是大数据管理所关注的关键技术。
8.大数据管理基础理论
大数据管理技术是近几年提出的新需求,已有一些支持理论(如CAP等)和管理技术(如LSM树等),并提出了一些新的管理技术,如key-value数据模型与行列混合模型、分布式索引技术与基于PM技术、分布式事务与复制协议等,但还需要支持大数据管理的新的理论和技术,如类似于关系理论的基础理论、可串行化理论等新理论的提出。