过去20多年,互联网电商业务数据经历了快速增长,从传统处理结构化数据的OLTP数据库时代过渡到处理海量半结构化、非结构化数据的互联网业务平台新时代。新时代对大容量、高性能、低成本的海量数据处理平台的需求急速增长。
针对阿里巴巴电商业务,尤其是双十一数据海量增长和快速处理分析的需求,阿里巴巴开始自研数据库技术。2009年,Tair1.0内存数据库上线,支撑了电商交易的核心企业场景,在数十亿的QPS峰值下时延保持亚毫秒级别;2011年,Lindorm1.0数据库平台上线,支撑了阿里巴巴全系列业务在线大数据场景,在百PB存储下保持毫秒访问和极致低成本。
今天,随着网络技术进步以及对传感器技术的深入使用,各行各业数字化推进使得海量大数据的生产呈现出与以往更不一样的特征,同时对于高性能、低成本、大容量NoSQL数据库系统需求增加。
因此,阿里巴巴将诞生于电商互联网平台的大数据技术,以Lindorm、Tair为代表,结合阿里云上计算环境,推出一系列云上NoSQL数据库产品。2019年,阿里云与MongoDB强强联手,推出云上文档数据库;2020年,自研海量多模数据库Lindorm在阿里云正式上线;2022年,自研内存数据库Tair在阿里云正式上线。
Lindorm的诞生记录了数据库针对时代场景的挑战和变迁。
从70年代开始,数据库的技术发展经历了三个阶段,第一个阶段以关系型数据库为代表,主要支撑企业和政府的关键业务数据。以处理结构化数据为主,处理的级别在GB级别,Oracle、DB2、MySQL等都是常见的关系数据库产品。
2000年开始,随着互联网技术的发展,更多的业务对数据的管理和分析提出不一样的挑战。日志和文档等不同类型数据的产生,使得存储和处理半结构化数据、非结构化数据的非关系型数据库蓬勃发展,Bigtable、MongoDB、Redis、ElasticSearch等都是非关系型数据库的典型代表,数据生产达到TB级别。
当下,随着万物数字化和各类传感器飞速发展,IDC预测到2025年全世界90%的数据将是以传感器生产的IoT数据为主。该数据的类型丰富多样,包括各式各样的传感器数据,例如图片、声音、GPS等,数据量可达到EB级别。因此,需要能够融合处理海量异构数据,并且提供极致低成本的原生多模数据库,这就是Lindorm诞生的原因。
Lindorm具备三个特性:
第一:Lindorm是一种多模超融合的数据库,云原生地支持各种异构数据类型,包括半结构化和非结构化数据,如宽表、时序、时空等。Lindorm存储多种异构数据的同时,还能实现数据的在线分析和在线检索,向用户提供统一SQL接口。
第二:性能和成本的极致平衡。Lindorm是云原生的数据模型,它是典型的存储计算分离架构,可以让存储和计算事件实现独立弹性伸缩。Lindorm可无缝集成多种不同类型的存储,如对象存储、云盘存储、本地物理盘存储,还能综合管理不同类型存储服务的IO、性能及成本。针对海量数据在Lindorm的存储,Lindorm通过对数据冷热进行识别和分离,将不同级别的数据自适应到不同类型的存储上。以上特性让Lindorm实现高性能的同时降低了成本。
第三:Lindorm具备开源生态兼容的特性,可全面兼容各种开源体系,用户可零成本适配,支持HBase、Cassandra、OpenTSDB、S3、HDFS、Kafka等多种接口,使云下的大数据负载低成本、无缝地迁移至云上的多模数据库生态。
Lindorm多模融合架构分为三层。
第一层为存储融合,主要解决海量数据在云原生大数据环境下的存储效率问题,能够将云上存储能力无缝融合,降低用户对海量数据的管理和存储成本。针对新时代产生的海量数据,Lindorm作为云原生多模数据库,能够无缝地帮助用户管理多种不同层级的存储介质,包括本地盘、云盘、云上对象存储等,用户可以将多种存储介质无缝呈现在一个存储池里,可根据特性自动将多种异构数据分配到不同的存储介质上。
同时,Lindorm由完全云原生的分布式文件系统作为底座,能够独立弹性扩缩存储容量。我们将不同存储介质的能力与Lindorm数据的负载做了自动适配,能够在不同级别上支持高效的压缩与编码。比如,可以通过纠删码EC算法,将副本冗余系数降低至1.25,可以根据自适应压缩算法,最小化数据的存储。
第二层为结构融合。
用户在管理多组异构IoT或者万物互联网数据时,能够无缝地将多种异构数据通过一个平台系统进行管理,从而解决运维效率复杂度的问题。比如针对时序、时空数据,用户往往需要采用不同的大数据系统针对每种负载独立构建数据服务,在应用层将多种数据服务的交互进行统一管理。而且Lindorm提供了灵活的表格模型,比如Lindorm宽表既能支持传统关系型数据库的Schema结构化数据,也可以通过增加动态链,向文档灵活增加Schema结构数据。宽表类型模型之外,Lindorm还支持多种其他异构数据存储引擎,比如支持JSON的实时读取与处理,支持时序数据的融合分析,以及支持非结构化数据 Blob类型的存储和调用等。
通过将多种异构数据在一个数据库系统进行综合管理,用户将无需分别构建多种数据库系统,大幅降低了用户对于海量异构数据的运维管理成本,简化了用户系统架构。
第三层为多种负载计算融合,解决用户在处理分析多种异构数据时需要综合运用到多种计算能力以及开发复杂系统的应用问题。
通过Lindorm底下内置的多种数据分析引擎,比如传统Lindorm宽表引擎、数据搜索引擎、时空分析引擎、批量离线计算引擎等,分别处理不同类型的异构数据,同时无缝拉齐各种数据链路,使得异构数据可以流转,被引擎拉起的多种异构数据可进行融合分析。
传统的开发模式需要构建多个数据服务,需要与多个数据服务器进行复杂交互,而通过Lindorm SQL引擎,用户只需与Lindorm一个系统打交道,极大简化了开发数据应用的成本,大幅提高开发效率。
Lindorm能够融合多种特性的云上存储介质,能够智能识别用户在不同的负载里对冷热数据的访问模式。Lindorm能够智能识别用户对于冷热数据的需求,将不同的冷热数据分散到不同的存储介质上。可以用快速压缩算法将热数据存储到高性能存储介质上,经过智能识别以后可以实现冷热数据的转换,将冷数据进行深度压缩,最大化降低用户的存储成本,同时最大化用户的性能。
以上一切工作均在存储引擎内部完成,用户无需再手动分别处理冷数据与热数据。
Lindorm实现了SearchIndex加速检索分析。
数据写入以后进入宽表引擎,用户只需经过简单配置,即可启动Lindorm的搜索引擎,为用户写入的数据创建全量与增量索引,用户无需再额外构建一套搜索服务,也无需将数据流转,可以在内部完成全局内容检索,大幅简化了用户应用的开发流程。
物联网时代最典型的应用是车联网数据,无数汽车无时无刻不在向车联网数据中心上传车机数据,包括车辆运行状态、时空位置、车辆摄头以及雷达等数据,数据量极大并且具有明显的异构特征。而我们可以通过Lindorm提供的不同引擎,在同一个系统中处理与分析不同类型的车联网数据,大幅简化了车联网应用的开发流程,开发、运维的效率均有大幅提升。
可观测场景下的数据包括tracing、logging和metrics等几种不同类型,传统方式下,我们需要使用不同的数据处理系统针对几种不同类型的数据进行处理,比如tarcing需要使用宽表数据库,logging使用搜索引擎,metrics使用时序数据库。而有了Lindorm后,通过一个系统即可对三种数据统一进行融合管理与处理,并且无需区分三种系统,无需使用三种不同的接口与语言交互,只需统一使用SQL即可一站式完成监测场景的应用开发。
Lindorm提供了HBase的平滑迁移方案。通过高速数据通道LTS,能够将客户已经建立的HBase集群双向同步与迁移至云上Lindorm数据库。并且Lindorm支持使用HBase的客户端或Lindorm客户端无缝访问迁移到Lindorm上的数据,且存储成本降低50%,性能吞吐提高300%。