没有合适的资源?快使用搜索试试~ 我知道了~
首页数据中台之结构化大数据存储设计.docx
架构师在做架构设计时,最大的挑战是如何对计算组件和存储组件进行选型和组合,同类的计算引擎的差异化相对不大,通常会优先选择成熟和生态健全的计算引擎,例如批量计算引擎Spark和流计算引擎Flink。而对于存储组件的选型是一件非常有挑战的事,存储组件包含数据库(又分为SQL和NoSQL两类,NoSQL下又根据各类数据模型细分为多类)、对象存储、文件存储和高速缓存等不同类别。带来存储选型复杂度的主要原因是架构师需要综合考虑数据分层、成本优化以及面向在线和离线的查询优化偏向等各种因素,且当前的技术发展还是多样化的发展趋势,不存在一个存储产品能满足所有场景下的数据写入、存储、查询和分析等需求。
资源详情
资源评论
资源推荐

前言
任何应用系统都离不开对数据的处理,数据也是驱动业务创新以及向智能化发
展最核心的东西。这也是为何目前大多数企业都在构建数据中台的原因,数据
处理的技术已经是核心竞争力。在一个完备的技术架构中,通常也会由应用系
统以及数据系统构成。应用系统负责处理业务逻辑,而数据系统负责处理数据。
传统的数据系统就是所谓的『大数据』技术,这是一个被创造出来的名词,代
表着新的技术门槛。近几年得益于产业的发展、业务的创新、数据的爆发式增
长以及开源技术的广泛应用,经历多年的磨炼以及在广大开发者的共建下,大
数据的核心组件和技术架构日趋成熟。特别是随着云的发展,让『大数据』技
术的使用门槛进一步降低,越来越多的业务创新会由数据来驱动完成。
『大数据』技术会逐步向轻量化和智能化方向发展,最终也会成为一个研发工
程师的必备技能之一,而这个过程必须是由云计算技术来驱动以及在云平台之
上才能完成。应用系统和数据系统也会逐渐融合,数据系统不再隐藏在应用系
统之后,而是也会贯穿在整个业务交互逻辑。传统的应用系统,重点在于交互。
而现代的应用系统,在与你交互的同时,会慢慢的熟悉你。数据系统的发展驱
动了业务系统的发展,从业务化到规模化,再到智能化。
业务化:完成最基本的业务交互逻辑。
规模化:分布式和大数据技术的应用,满足业务规模增长的需求以及数据的积
累。
智能化:人工智能技术的应用,挖掘数据的价值,驱动业务的创新。

向规模化和智能化的发展,仍然存在一定的技术门槛。成熟的开源技术的应用
能让一个大数据系统的搭建变得简单,同时大数据架构也变得很普遍,例如广
为人知的 Lambda 架构,一定程度上降低了技术的入门门槛。但是对数据系统
的后续维护,例如对大数据组件的规模化应用、运维管控和成本优化,需要掌
握大数据、分布式技术及复杂环境下定位问题的能力,仍然具备很高的技术门
槛。
数据系统的核心组件包含数据管道、分布式存储和分布式计算,数据系统架构
的搭建会是使用这些组件的组合拼装。每个组件各司其职,组件与组件之间进
行上下游的数据交换,而不同模块的选择和组合是架构师面临的最大的挑战。
本篇文章主要面向数据系统的研发工程师和架构师,我们会首先对数据系统核
心组件进行拆解,介绍每个组件下对应的开源组件以及云上产品。之后会深入
剖析数据系统中结构化数据的存储技术,介绍阿里云 Tablestore 选择哪种设
计理念来更好的满足数据系统中对结构化数据存储的需求。
数据系统架构
核心组件
上图是一个比较典型的技术架构,包含应用系统和数据系统。这个架构与具体
业务无关联,主要用于体现一个数据应用系统中会包含的几大核心组件,以及

组件间的数据流关系。应用系统主要实现了应用的主要业务逻辑,处理业务数
据或应用元数据等。数据系统主要对业务数据及其他数据进行汇总和处理,对
接 BI、推荐或风控等系统。整个系统架构中,会包含以下比较常见的几大核心
组件:
关系数据库:用于主业务数据存储,提供事务型数据处理,是应用系统的核心
数据存储。
高速缓存:对复杂或操作代价昂贵的结果进行缓存,加速访问。
搜索引擎:提供复杂条件查询和全文检索。
队列:用于将数据处理流程异步化,衔接上下游对数据进行实时交换。异构数
据存储之间进行上下游对接的核心组件,例如数据库系统与缓存系统或搜索系
统间的数据对接。也用于数据的实时提取,在线存储到离线存储的实时归档。
非结构化大数据存储:用于海量图片或视频等非结构化数据的存储,同时支持
在线查询或离线计算的数据访问需求。
结构化大数据存储:在线数据库也可作为结构化数据存储,但这里提到的结构
化数据存储模块,更偏在线到离线的衔接,特征是能支持高吞吐数据写入以及
大规模数据存储,存储和查询性能可线性扩展。可存储面向在线查询的非关系
型数据,或者是用于关系数据库的历史数据归档,满足大规模和线性扩展的需
求,也可存储面向离线分析的实时写入数据。
批量计算:对非结构化数据和结构化数据进行数据分析,批量计算中又分为交
互式分析和离线计算两类,离线计算需要满足对大规模数据集进行复杂分析的
能力,交互式分析需要满足对中等规模数据集实时分析的能力。

流计算:对非结构化数据和结构化数据进行流式数据分析,低延迟产出实时视
图。
对于数据存储组件我们再进一步分析,当前各类数据存储组件的设计是为满足
不同场景下数据存储的需求,提供不同的数据模型抽象,以及面向在线和离线
的不同的优化偏向。我们来看下下面这张详细对比表:
派生数据体系
在数据系统架构中,我们可以看到会存在多套存储组件。对于这些存储组件中
的数据,有些是来自应用的直写,有些是来自其他存储组件的数据复制。例如
业务关系数据库的数据通常是来自业务,而高速缓存和搜索引擎的数据,通常
是来自业务数据库的数据同步与复制。不同用途的存储组件有不同类型的上下
游数据链路,我们可以大概将其归类为主存储和辅存储两类,这两类存储有不
同的设计目标,主要特征为:
主存储:数据产生自业务或者是计算,通常为数据首先落地的存储。ACID 等
事务特性可能是强需求,提供在线应用所需的低延迟业务数据查询。
辅存储:数据主要来自主存储的数据同步与复制,辅存储是主存储的某个视图,
通常面向数据查询、检索和分析做优化。
为何会有主存储和辅存储的存在?能不能统一存储统一读写,满足所有场景的
需求呢?目前看还没有,存储引擎的实现技术有多种,选择行存还是列存,选
剩余16页未读,继续阅读











安全验证
文档复制为VIP权益,开通VIP直接复制

评论0