01 前言
近年来,在金融科技的推动下,互联网金融业务蓬勃发展,金融行业数据处理呈现出新的特征,如数据量大、并发量高、处理性能高、类型繁多等。这就对海量数据的存储、并发访问及实时分析能力提出了新的要求。
另一方面来讲,“事后”分析已经不能满足快速的市场需求和业务变化,需要对海量客户行为数据的实时洞察提高营销精准度,如实时推荐等,并持续监测交易行为提高风险预警能力,如实时风控、反欺诈等。传统技术架构下的数据分析业务,其数据时效性面临着前所未有的挑战。
HTAP(混合事务/分析处理),是Gartner提出的一种新兴的应用框架,旨在打破事务处理和分析之间“壁垒”,在同一个数据库中,提供更高效的“实时业务”决策。
本次最佳实践,我们将为您展开讲解,如何利用巨杉分布式数据库SequoiaDB,实现HTAP混合事务/分析处理,实现OLTP与OLAP及资源平衡。
02 背景
2.1 业务需求变革
Gartner最新研究报告显示,操作型数据库(ODBMS),需要同时支持传统事务处理、分布式数据处理、事件/动态数据处理、交易与分析混合处理(增强型事务处理)等多种用例场景。报告中特别提到,将原有的操作和分析融合处理(HTAP)用例更改为增强型事务处理及可编程的HTAP功能,即:在维持高服务等级(SLA)事务处理的同时,嵌入分析处理(包括AI/ML)能力。
为了支撑大规模实时分析应用(如风控,实时推荐,实时数据看板,报表等),需要数据库能够同时具备OLTP和OLAP的混合负载能力。其中OLTP负载能力承载在线业务,而OLAP负载能力则直接对数据进行实时分析,以期大幅缩短决策周期,甚至提供跨业务线的综合实时分析能力。
2.2 传统OLTP/OLAP的痛点
目前在业内,实现HTAP混合负载,主要有三种技术方案:
• 单一系统同时承载混合负载(如DB2、Oracle、MySQL等)
• 使用不同系统组合+数据同步技术(如ETL、GoldenGate、CDC等)
• 同一存储不同计算引擎(如HBase+Spark等)
这些技术实现HTAP混合负载,无论何种方案,均存在一定的缺陷和短板。
-
数据共享难题
传统技术使用Oracle、MySQL、DB2、Informix等数据库构建业务,分离部署,数据分散存储。要实现HTAP混合负载,需要构建多套数据库,并基于一系列的数据复制技术,或基于ETL进行数据加工、转换。这样一来,不但架构的复杂性大大增加,数据传输消耗了大量的网络带宽进行数据传输。即便如此,这种跨库实现的混合负载,数据的延迟得不到有效解决。
例如一个关联查询,往往需要在不同机构实现跨库数据查询。甚至,有些数据已经使用磁带落库的方式永久封存,数据远远没有发挥出其应有价值。如何能够打通各个业务系统,把数据盘活,解决复杂的数据复制,让数据能够给业务带来新的增长点,是现在面临比较棘手的问题。
图1 OGG+Kafka实现数据复制
-
性能不能兼顾
事实上,传统数据库也能够实现混合负载的需求,但往往要在功能或性能上做出牺牲。对于交易场景,关注低延迟、高并发的数据增删改查,同时对ACID功能有严格的要求。这种场景一般需要使用行式存储,牺牲了海量数据访问能力,如Oracle、MySQL等。对于分析场景,主要是是大量数据扫描,甚至做聚合,对并发和延迟要求并不高,但更加关注吞吐量、容量、弹性伸缩能力,更倾向于采用列式存储,因此不得不牺牲实时更新、关联查询能力,如HBase、Oracle In-Memory等。因此,以往的HTAP混合负载技术,很难做到对交易能力和分析能力的兼顾。
-
扩展性难题
核心系统普遍使用“传统数据库+小型机+集中式存储”架构,扩容难度大,扩容成本也很高。从运维来说,为了保证在线交易数据库的容量,只能不断把旧的生产数据卸载到历史库,甚至封存在磁带库中,日常的数据管理工作给运维人员带来不小负担。对于HTAP业务系统,一次扩容也必然要涉及到源端和目标端,工作量巨大。另一方面,分析业务往往需要横跨在线、历史数据,甚至多业务线的数据,更需要可扩展架构,来满足不断变化的业务迭代,以及不断提升的容量需求和性能要求。
-
开发接口单一
以往的混合负载技术,其提供的SQL接口比较单一,一般只能提供一种SQL语法。另外,随着业务量的爆发式增长及无纸化的推进,数据库不仅仅需要保存文本数据,更多需要保存音频、影像类大对象数据。目前的技术架构,无法适应目前互联网多样化的应用、开发需求。
综上所述,以往的HTAP混合负载技术,存在明显的短板和不足。在这种条件下,具有支持多节点部署、多引擎、高扩展、高冗余等特性的分布式数据库架构,逐渐成为了HTAP技术的首选。
2.3 巨杉分布式数据库SequoiaDB的HTAP技术优势
一个HTAP数据库要实现混合负载,既要能满足上述多种技术要求,也需要能够保证不同业务之间的负载隔离。
巨杉数据库SequoiaDB,采用存算分离架构,通过统一的分布式数据库底座,融合不同的计算引擎,很好地解决了传统技术实现HTAP混合负载的各种难题:
• 轻松地在一个数据库内,提供HTAP支持,无需分库及跨库复制;
• 支持多种计算引擎,如MySQL、PostgreSQL、SparkSQL等;
• 支持跨引擎ACID,兼容标准SQL;
• 支持多种形式的负载隔离;
• 支持弹性扩展、多活容灾。
在SequoiaDB数据库中,用户可以利用复制组的多副本特性,在节点和会话等多个级别设定读写分离策略,使得不同类型的应用(联机交易、联机分析、数据中台等),采用各自的开发接口(例如 MySQL、PostgreSQL、SparkSQL等),进行数据的实时访问,且之间不产生负载干扰。