多模+实时-湖仓一体释放全量数据价值

企业不但需要交易核心,同时更需要构建数据核心。其中,传统交易核心需要解决数据的采集、整理、聚合、运用等问题,而全新的数据核心将为交易核心提供实时、跨业务的全量数据分析,提供基于数据分析的决策依据,从而实现数据价值持续释放。

交易核心主要是管理单一系统下结构化的结果数据,相比较之下,数据核心则是需要处理多系统的全量历史数据,并释放其价值。

对此可以看到有三个维度的明显变化,在数据类型方面,交易核心数据库往往需要处理单一的结构化的交易结果数据,如余额、交易帐单等。而在数据核心中,需要保存的则是在每次余额并发、交易帐单生成的背后所伴随的大量结构化、半结构化流水记录等等。从整体来看,数据类型呈现更加多元化。

在实效性方面,交易核心数据库更注重的是单个账务交易系统中,低延时处理事务的并发性能。而在数据核心中,更注重的是在复杂的跨业务的场景中,对灵活可变的数据类型进行处理,并为前后端业务提供高并发的全量数据实时查询能力。

在业务范围方面,交易核心数据库往往仅为某个单个系统的业务系统单独建设。而面向全量数据的数据核心系统,由于存放了企业的全量数据,将成为数10个甚至数百个的数据基础设施,而不再是烟囱式的独立建设。

对于全量数据的离线使用,不少企业中已经有了比较成熟的解决方案,市场上目前主要是通过MPP数据仓库,结合Hadoop大数据平台来处理全量数据,来构建数据湖系统。而在数字化经济的发展下,全量数据的实时对个查询以及分析能力是提升客户满意度的关键因素。但因为MPP数据仓库及Hadoop架构的限制,实际上我们难以在这类平台下提供高并发的实时对客查询能力。因此,此时的数据价值仅停留于对内部系统提供离线的数据分析、统计、加工等能力,而无法全面有效的释放价值。

那么,如何让一部离线的全量数据充分释放其价值呢?巨杉数据库通过湖仓一体架构,在数据流入以及数据高并发对客两个方向提供实时能力。

数据入湖后,除了可以进行实时分析、统计、加工以外,更可以提供结构化、半结构化数据的实时对客高并发查询以及对象数据的实时存储服务,从而让全量数据从异步离线的使用模式转向实时对客,进一步释放全量数据价值。

中国是世界上人口最多的国家,众多的人口以及领先的移动互联网业务发展,也让中国成为数字化创新最快的国家。金融行业的科技发展更是催生于领先全球的行业需求。10年前,在巨杉数据库萌芽之初,我们的创始团队发现,以Hadoop为代表的Spark产品,虽可以存放大量数据,但无法支持实时对客的服务能力。

为了解决这个问题,我们没有选择基于开源产品二次开发的道路。而是凭借IBM、DB2等归国分布式数据库研发专家和华为分布式存储研发专家组成的创始团队开始了自研内核的开发。

从2013年正式商业化起,伴随着客户对于多模数据处理、实时高并发以及数据分析的业务需求,巨杉数据库从多模数据湖、实时数据湖发展到湖仓一体。可以说巨杉数据库背后的技术创新来自于我们与中国金融银行客户的持续合作,这些需求推动着巨杉从数据湖到“湖仓一体”的持续演变,也推动着我们与国际竞品同期发展。

10年来,我们初心不改,继续面向海量、实时、多模的需求,提升全量数据场景下的查询以及分析性能,释放全量数据价值。众所周知,金融银行业对于数据库的要求是十分严格的。巨杉在过去的10年里获得了行业大型企业规模化应用,不少客户部署规模达到200台~400台物理服务器,数据容量达PB级别,数据记录数更是突破万亿。

与此同时,我们可以看到客户接入到巨杉数据库的各类生产业务系统超过100个之多,这说明说明巨杉数据库并不是替代原有生产系统交易核心数据库,而是通过成为数据底座,为交易系统提供了全企业跨业务视角的多模、实时、全量数据,逐步成为客户全新的数据核心。

当前,巨杉数据库产品已经在超过100家金融行业客户规模化生产战线,除金融行业外,巨杉数据库还广泛应用于政府、能源、运输等多个行业。

在今年的7月底巨杉数据库发布了最新的5.2版,重点在实施能力上进行了提升,主要体现在以下四点。

首先,面向结构化数据,巨杉数据库提供深度的Join优化+列存微分区技术,在多个查询场景下,性能达到了毫秒级的实时返回。分析场景中,性能更获得了10倍以上的性能提升,让查询分析更实时。

其次,面向非结构化的数据,巨杉数据库通过分片并发以及可分片大小技术,相比原有版本吞吐量提升30%,让非结构化数据的存储更实时。

这两个部分也是今天分享的重点,将来有机会的时候会再与大家分享这里所提到的生命周期管理以及链路监控方面的话题。

首先让我们来看看Join优化的提升。前面提到,企业承接的技术方案中,会通过Hadoop构建数据平台以存存放全量数据。但这些数据只能为离线的数据分析、BI报告等提供服务,无法提供对客的实时服务,导致数据价值无法充分释放。

对此,巨杉数据库通过专门针对高并发查询优化的分布式存储结构以及Sequoia实时查询引擎,实现了面向企业全量数据的高并发对客服务,让全量数据的价值从内部离线分析向对客实时查询进一步释放。

在某全国性股份制银行的生产案例中,我们为全行存储超过1.4万亿的数据,物理服务器达到了400台,共计对接超过120个生产系统。一方面通过分布式数据提供高并发的对客查询服务,包括借记卡、信用卡、实时批量查询的工作复诊,从大机以及小机的查询流量下云。有效的降低了主机内部式消耗,同时获得更大的并发支持以及横向扩展能力。响应时间方面,实时查询保障100毫秒以内。批量查询表现也与原主机系统相当。

另外一方面,金融机构汇集多个业务系统的全量历史以及流水数据,为客户提供跨业务的流水查询、客户资产视图、客户成长等系统的数据底座。

以对客业务流水查询为例,过去客户的历史数据,往往因为数据量过于庞大,业务系统无法存放而推送到离线系统,甚至磁带冷存储。以往针对业务的数据延迟,往往达到小时级甚至需要数天时间,需要从磁盘去恢复,耗费大量的技术能力。

而基于巨杉分布式数据库的“湖仓一体”架构,客户可以几乎无限的扩展存储空间,同时所有数据可对客提供高并发毫秒级的访问。底层技术能力的提升,使得银行获得更实时的业务能力,有效提升了客户体验,提升了数字化转型下的竞争优势。

面对客户对于实时数据查询需求的提升,巨杉数据库在巨杉5.2的版本中,针对Join进行了深度的优化,特别是在BKI Join 和Index Merge方面进行了深度优化。

在实时对客业务中,并不是所有操作都只需要进行单表查询,很多中后的业务也往往需要进行Join处理。在分布式架构下,这类处理往往会消耗大量的网络IO,一方面导致查询响应缓慢,另一方面,由于大量的占用网络IO,甚至会引起整个分布数据库的堵塞。

在巨杉5.2版本中,在实际的客户场景下,我们在客户数亿计的查询中,对于多字段关联查询,多类应用场景等查询性能均实现了毫秒级返回。这主要是来自于我们在新版本中,对BKA-Join方面进行了有效提升。当Join操作内表有可用的数据进行访问时,5.2首先使用缓冲区,累计Join外表查询记录,再批量拉取内表结果,与缓冲区Hadoop查找匹配,性能表现可获得巨大的提升。在Index使用上,在特定的Index Merge场景下,5.2版通过避免回表操作,减少网络I/O,以提升查询性能。在不同场景下同样获得了十分显著的性能提升。

为了让高并发的对客实时查询更加平稳,巨杉提供了多维分区技术。基于“数据域”按需基于时间、范围、分类等条件,实现数据的精准定位,可以有效提升查询性能。在基于条件的范围查询中,避免形成全标的数据偏离,降低网络消耗,提升并发效率。

通过Join优化以及多维切片技术,巨杉数据库持续为全量的对客实时查询提供稳定的高并发支持。在数据库,特别是分布式数据库中,刷新引擎是性能的关键。我们将持续在这方面深度优化,为客户提供更实时的操作体验。

为了有效示范全量数据价值,我们不但要有更实时的查询,更需要提供实时的分析能力。而巨杉5.2版本将提供列存及微分区架构,来进一步提供分析的性能。

回到巨杉数据库“湖仓一体”的业务示意图。在全新的数据核心中,结构化及半结构化数据,不但需要满足实时的对客查询,还需要面向对象数据提供实时的对客存储能力。不仅如此,我们对于统计分析、数据加工及BI报表生成的时效性要求也越来越高。比如在我们的监管报送场景下,客户需要越来越短的报送时间间隔周期。而决策支持体系则更需要实时的数据来对应瞬息万变的市场竞争。

“湖仓一体”架构可以帮助客户在统一的数据管理体系中兼顾查询级分析能力,帮助企业释放数据价值。

巨杉数据库在此前的版本中是通过SparkSQL来实现我们的准实时和批量数据入库能力。通过对接巨杉数据库,使用分布式的高并发插入能力,我们可以实现秒级入库以及通过SQL引擎实现准实时的数据查询能力。同时,我们对接了SparkSQL,能够直接使用Spark Streaming,访问行存中结构化和半结构化数据,实现高效的分析能力。

在此基础之上,巨杉数据库5.2版,进一步对接业界的领先技术,实现“流批一体”的数据入湖能力。我们对接了Flink SQL,采用巨杉数据库Flink Connector,实现了更低延时的数据入库,把数据准实时的注入到的行存引擎当中。同时我们对接了列存引擎,使得SparkSQL分析批量能力得到了进一步的提升。

接下来的版本当中,我们将提供行列转换的能力,同时也可以提供对外的增量数据输出能力,实现湖对下游提供数据服务,这样我们就可以实现端到端打通。从前端数据实时租入到按需行列转换以及近实时的统计分析能力,从数据湖到“湖仓一体”,实现端到端的“湖仓数据一体化”。

让我们看一看在实际客户场景下“湖仓分析”的性能提升。在多张500个以上的大表关联场景中,通过列存,结合列上微分区的预统计信息,我们实现了3~10倍的性能提升,让数据分析更实时。除了结构化数据需要对并发查询级复杂分析进行优化以外,非结构化数据的管理性能提升也是“湖仓一体”的重要课题。

巨杉数据库的“湖仓一体”架构是以数据湖为基础向数据仓库的能力延伸。数据湖中除了要管理结构化和半结构化的数据外,非结构化数据的管理同样需要更实时的能力,以应对数据核心的全新要求。对此,巨杉数据库通过“分片并发+可分片大小”,持续提升对非结构化数据的管理性能,让非结构化数据的访问更实时。

首先我们来介绍一下分片并发的技术。在巨杉数据库中,我们通过数据引擎层和存储引擎层两部分进行非结构化数据的管理和访问。为了获得高性能的非结构化的数据处理能力,数据引擎层以及存储引擎层分别形成专门的数据处理优化。当业务系统向数据引擎层写入对象时,高速数据通道减少对象数据在各模块中的网络传输,通过缓存共享、压缩等技术,提升数据的流通效率,极大的缩短响应延时。

而在存储引擎层,传入的对象则是根据分区、元数据缓存进行哈希分片管理。分片数据打包分发给各个存储节点并发处理,极大提升了性能。同时,这是基于哈希算法实现快速存储,最大限度利用了顺序IO的能力,降低IO的访问次数,实现了性能的提升。

此外,我们知道数据分片有其并发的优势,也有其明显的缺点。分片太小,IO会过于碎片化,IO能力不升反降,分片过大了,则会导致大量的空间浪费。因此,业界的很多系统采用了后台合并技术,来重新压缩空间,解决空间浪费的问题。这就带来了大量的IO放大和分片存储的IO次数增加,对生成业务读写带来很大的性能波动。

巨杉数据库采用可分片大小的技术,能够根据对象自身的大小,在4K至4MB/片之间自适应的调整分片大小。在并发性能和空间利用率上取得了很好的平衡效果。在保障业务读写的性能稳定性的同时,提升非结构化数据的实时吞吐能力。分片并发级可分片大小技术,有效提升了非结构化数据的处理能力,并且伴随并发量和系统规模的增长,具有良好的新兴扩展能力。

相比此前版本,5.2版,无论是在200K、400K还是1M吞吐量中都有明显的性能提升,有助于为业务提供更实时的非结构化存储性能。

接下来让我们通过两个巨杉数据库的典型应用场景来看看巨杉数据库是如何基于客户需求的演进,在多模、实时的能力上持续发展的。

首先,让我们看看多模能力在新一代影像数据平台的使用。

影像系统是金融行业重要的数据管理系统,管理着海量的凭单、支票、合约、身份证明信息等内容。这些数据包括影像文件本身,同时也包括其包括其背后的影像元数据、影像标签数据。

在传统的技术架构中,我们需要为不同的结构模型构建各自独立的数据库进行管理。例如用结构化的MySQL管理影像元数据,基于JSON DB管理持续变化的标签数据,以及通过NAS或者对象存储非结构化的数据。

以往影像系统仅作于存单使用,但随着业务的互联网化,影像系统管理的非结构化数据已成为A类交易系统背后重要的技术平台,往往要求更严格的容错能力。传统架构下,各个数据系统需要单独搭建HA容灾结构,极大的的提升了运维团队的管理难度。同时各个数据系统间的数据依次性需要运用系统执行管理,也大大提升了开发团队的研发难度。这对于企业技术团队的人效是巨大的浪费。

巨杉数据库的多模能力既涵盖了结构化、半结构化的数据,也涵盖了非结构化数据,并可进行统一的容灾管理。不仅可以提供同城摘备、同城双核、“两地三中心”、“三地五中心”等多种在线容灾策略。多模数据统一容灾,且保证一致性,极大简化了开发及运维的难度。

第二个场景,让我们一起看看巨杉数据库在数据核心场景的应用。

在这里我想再次强调,巨杉数据库并不是为了以传统交易核心数据库形成替换的竞争。而是通过基于原生分布式数据库的“湖仓一体”技术架构,解决传统交易核心数据库所无法管理的海量数据级多模数据处理的综合需求,从而与传统交易核心数据库形成有效系统。

左边是在线的账户类系统,如核心分户账,前置柜面以及各类交易系统。这些系统通常会使用各自独立的数据库。由于其事物敏感性以及数据独立性,各个系统间一般不会共用同一个数据库进行业务交易。右边是离线的大数据以及数据仓库,左边核心数据的数据通过ETL清洗加工后再存放到右边的大数据和数据仓库中,然后再提供T+1甚至更高延迟的离线数据访问以及数据分析挖掘能力。

然而,伴随着业务适时能力的发展,在手机移动端业务,跨系统综合实时查询,客户实时资产识图等场景中提出了“T+0全量数据实时服务”的需求。需要数据库系统在存放全量数据的前提下提供高并发查询能力。

在这个需求下,传统架构都有着不可避免的短版。左边专注于交易核心的关系型数据库,显然无法存储跨业务系统的多模全量数据。右边的Hadoop及各类NPP数据仓库产品又受到架构的限制。虽然可以存放多模的全量数据,却无法提供高并发的实时的对客处理能力。

过去的几年里,巨杉数据库提供实时数据库能力,为众多客户提供了有效的解决方案。巨杉数据库可实现在万亿级数据量下,100毫秒级别的查询响应能力。而扩展性方面,和Hadoop一样,可提供高达PB级数量横向扩展,可同时支持结构化、半结构化、非结构化的数据,为开发者提供SQL,节省S3等多模引擎接口。

巨杉数据库的实时数据湖,相当于提供了一个可无限扩展、无须定期删除数据的包大型ODS。既能够提供高并发全量数据查询能力,为对客实时移动业务,跨系统综合实时查询,客户实时资产视图等系统提供有效的支持。又能够让各类手机及终端的综合业务运行更实时,帮助提升用户的满意度。

在此基础上,我们今年正式提供“微分区+列存”的分析能力。当前已经在部分战略合作客户中试运行落地。在实时数据湖的基础上,提供可灵活配制的高性能列存分析引擎,进一步提升巨杉数据库“湖仓一体”的全量数据分析能力。让客户可在巨杉数据库系统中进行一体化实时数据探索,并提供更丰富的能力支持,为客户全面提供数据核心所需的全量、多模、实时能力。

通过以上我们的技术介绍,相信大家对巨杉数据库的多模技术特性都有了更进一步的了解。数据库的发展不但需要技术的创新迭代,同时也需要建立良好的技术生态。

在人才培养方面,巨杉建立了自有的数据库技术培训体系以及课程,并在2021年发布了首本《以分布式数据库为一体的巨杉分布式数据库权威指南》。通过数据以及线上的课程,为市场培养具备动手能力的数据管理级开发人才。

当前,通过巨杉数据库培训认证的技术工程师已经超过了1万人。在过去的1年里,巨杉数据库先后在华南理工大学、深圳大学设立长期的巨杉数据库奖学金,推动中国分布式数据库人才的培育,为客户级上下游合作伙伴提供更多优质的分布式数据库人才。

与此同时,2021年我们与华为、微软一同支持了全球三大数据库顶级会议之一的ACM SIGMOD/PODS全球三大数据库学术会议之一,在西安举办。吸引了来自全球数千名数据库学者,共同讨论全球数据库技术的发展。

未来,巨杉数据库将积极投入产学研的多边合作,与客户及上下游合作伙伴一道构建更完善的产业生态。

(本文基于巨杉数据库SequoiaDB 首席架构师程祺演讲速记整理而成,未经本人审阅)