中台化背景下的元数据驱动架构实践
- 格式:docx
- 大小:307.56 KB
- 文档页数:14
数据中台架构实践方案数据中台架构实践方案是一种基于数据的架构,它将不同数据源的数据进行整合并进行分析。
随着大数据的快速发展,数据中台架构实践方案被越来越多的企业所采用。
本文将分步骤阐述数据中台架构实践方案的实践流程。
第一步:架构设计首先,数据中台必须要有一个良好的架构设计才能稳定运行。
架构设计的过程中需要考虑数据的来源、存储和处理。
一般来说,数据中台架构包括两个部分:数据仓库和数据湖。
数据仓库用于存储结构化数据,而数据湖则用于存储非结构化数据。
同时,数据中台还需要考虑数据治理、数据安全等方面,来确保数据质量和数据安全。
第二步:数据采集数据采集是整个数据中台的核心步骤。
数据采集主要包括数据源连接、数据抽取、数据清洗等环节。
采集不同数据源的数据,并将它们整合在一起存储到数据仓库和数据湖中。
这一步骤非常重要,因为数据的准确性对数据分析的结果至关重要。
因此,数据采集过程需要注重数据的质量和完整性。
第三步:数据处理数据处理是数据中台的另一个重要步骤。
数据处理包括数据预处理、数据建模、数据分析等步骤,它们为数据分析提供了必要的数据支持。
数据预处理是将原始数据清理、去重、格式化等处理,以便后续的数据建模和分析。
数据建模则是将数据转换成适合分析的结构。
最后,数据分析是对处理后的数据进行深入研究和分析,提供业务决策的支持。
第四步:服务输出数据中台的最后一步就是将数据服务化,提供给需要数据的团队和企业使用。
数据服务可以包含API服务、数据可视化、数据挖掘等服务。
同时,数据服务需要进行管理和监控,确保数据质量和数据安全。
综上所述,数据中台架构实践方案是一个综合性的项目,需要多个环节的配合与支持。
企业在实践中需严格遵循以上步骤,才能实现数据价值最大化。
期望数据中台的服务能为企业提供更多合理的数据应用与决策分析。
数据中台建设实践中的应用成效、问题反思与对策分析目录1. 数据中台建设概述 (2)1.1 数据中台的概念与意义 (3)1.2 数据中台建设的目标与原则 (5)2. 数据中台建设实践中的应用成效 (6)2.1 业务支撑能力提升 (8)2.1.1 业务流程优化 (9)2.1.2 决策支持强化 (11)2.2 数据资产价值最大化 (12)2.2.1 数据共享与整合 (14)2.2.2 数据分析与应用 (16)2.3 技术创新与效能提升 (18)2.3.1 技术架构优化 (19)2.3.2 自动化与智能化 (21)3. 数据中台建设实践中的问题反思 (22)3.1 数据质量问题 (23)3.1.1 数据质量标准不统一 (25)3.1.2 数据清洗与校验不足 (26)3.2 数据安全与隐私问题 (27)3.2.1 数据安全风险 (29)3.2.2 隐私保护挑战 (30)3.3 人才与团队建设问题 (31)3.3.1 人才短缺 (33)3.3.2 团队协作与沟通 (34)4. 数据中台建设对策分析 (35)4.1 数据质量管理策略 (37)4.1.1 建立数据质量管理体系 (37)4.1.2 强化数据清洗与校验流程 (39)4.2 数据安全与隐私保护措施 (40)4.2.1 数据安全防护体系 (41)4.2.2 隐私合规与数据脱敏 (43)4.3 人才队伍建设与培养 (44)4.3.1 人才引进与培养计划 (45)4.3.2 团队协作与沟通机制 (46)4.4 技术创新与应用推广 (48)4.4.1 技术创新与研发投入 (49)4.4.2 应用场景拓展与推广策略 (51)1. 数据中台建设概述随着大数据、云计算、人工智能等技术的快速发展,企业对数据的依赖程度日益加深。
数据中台作为一种新型的数据处理架构,旨在整合企业内部外的各类数据资源,实现数据的集中存储、统一管理和高效利用。
数据中台建设已成为企业数字化转型的重要战略举措。
中台架构的设计和实践一、什么是中台架构中台架构是一种旨在协调业务流程、集成数据、简化开发、提高效率的架构模式。
它将企业内部的业务、数据和服务分为前台和中台两部分,前台用于面向用户的展示,中台负责处理与业务相关的数据和逻辑。
中台还具备提供统一数据接口、分析业务数据等功能。
二、中台架构设计原则中台架构的设计原则是为了解决多元业务场景、复杂业务流程和高并发请求等问题。
设计原则如下:1. 基于业务拆分。
将业务拆分成独立的模块,通过接口提供服务,为了避免模块之间互相影响,模块之间的耦合要尽量降低。
2. 共享数据。
共享数据是中台设计的重要原则,通过共享中台数据,可以避免数据冗余,提高数据准确性。
中台应该为业务提供统一的数据接口。
3. 中台服务化。
将共享的数据抽象成服务,可以让前端更加专注于用户交互、提升开发效率。
4. 架构高可用。
中台必须做到高可用,在高并发请求下依然可以正常运行,降低出现故障的概率和影响。
三、中台架构实践中台架构的实践需要遵循设计原则,将中台架构融入业务环节中,提升业务的稳定性和效率。
具体实践如下:1. 建设中台数据平台。
开发一套中台数据平台,通过数据挖掘、数据分析等方式对业务数据进行多维分析,为业务提供更加专业、精准的数据支持。
2. 构建服务中心。
将业务中的应用进行模块化拆分,形成业务模块服务化的管理体系,通过中间件来实现不同模块之间的数据交互。
3. 增强业务平台的稳定性。
增强中台架构的稳定性、安全性,建立灾备中心,保障业务的安全高效运行。
4. 建设用户体验中台。
中台架构采用服务化设计,实现不同应用之间的数据交换,提升用户体验。
四、中台架构的优势引入中台架构有以下优势:1. 解决业务瓶颈问题。
随着业务的不断发展,原有的技术架构存在瓶颈,中台架构可以有效解决业务瓶颈问题。
2. 提高业务效率。
中台架构将业务进行模块化,提供统一的接口,可以大幅提高业务效率。
3. 减少开发成本。
中台架构的服务化设计,提供了基础服务与共享数据,开发人员无需重复构建基础功能,从而降低开发成本。
数据中台技术架构方案随着大数据技术的快速发展和企业对数据价值的认知不断提高,数据中台作为一种新兴的数据架构模式,逐渐引起了各行各业的关注和应用。
数据中台用于企业将分散在各个业务部门的数据集中管理、分析和应用,从而实现数据的高效价值利用和业务的迭代创新。
本文将探讨数据中台技术架构方案,分析其核心组成和实施流程,并对其在企业中的应用进行解析。
一、数据中台的定义和背景在数字化时代,企业积累了大量的数据资源,这些数据分布在各个业务系统中,造成了数据孤岛和信息孤岛的问题。
数据中台的概念应运而生,其目标是将企业内部各业务线的数据资源集中起来,通过数据集市的形式为各个业务部门提供数据支持和服务,实现数据的高质量、高效益的利用,为企业的业务创新提供支撑。
二、数据中台的核心组成1. 数据接入层:负责将企业内部各个业务系统的数据进行采集、清洗和整合,构建数据标准化和一致性的基础。
2. 数据存储层:用于存储和管理各种类型的数据,包括结构化数据、半结构化数据和非结构化数据等。
3. 数据计算层:提供数据处理和计算能力,包括数据分析、数据挖掘、机器学习等,为业务部门提供数据分析和挖掘的技术支持。
4. 数据服务层:将数据加工成可供业务使用的数据产品,为业务部门提供数据接口和服务,满足不同业务场景的需求。
5. 数据治理层:负责数据质量管理、数据安全管理、数据合规管理等,保障数据的质量和安全。
三、数据中台的实施流程1. 确定目标和愿景:明确数据中台建设的目标和愿景,明确业务需求,制定建设规划和路线图。
2. 数据建设和整合:对业务系统进行数据调研和评估,建立数据标准和规范,进行数据的采集、清洗和整合。
3. 架构设计和技术选型:根据企业需求和数据特点,设计数据中台的技术架构,选择合适的技术工具和平台。
4. 系统开发和集成:进行数据中台系统的开发和集成,实现数据的接入、存储、计算和服务能力。
5. 测试和优化:对数据中台系统进行测试,发现和解决问题,优化系统性能和用户体验。
电子技术与软件工程Electronic Technology & Software Engineering软件开发与应用Software Development And Application基于中台模式的园区l〇C平台架构设计研究田冬迪(上海师庆科技发展有限公司上海市201103 )摘要:本文基于中台模式的园区I0C平台通过调配规划后台硬件设备及基础设施,规划中台各业务系统间职能边界、打通数据孤岛,实现前台应用的敏捷式开发与规糢化创新,提升了各园区各业务系统的协同能力以及新建系统的开发维护效率。
从而解决了传统模式下系 统扩展能力低,业务功能重复建设、系统稳定性差,无法支撑高并发等问题。
关键词:园区;智能运营管理平台;中台模式;信息化;智慧园区1引言园区经济的快速发展承载着区域经济的产业链组合与集聚。
在 大力促进城市数字化转型的时代背景下,园区作为城市重要组成单 元和功能载体,其信息化管理发展趋势从基础网络到信息应用向纵 深发展、重塑,逐步实现结合物联化、互联化和智能化技术的发展 与应用,是构建数字孪生城市的基本单元。
在传统的园区管理模式 下,多通过增加人力、物力等形式以满足园区管理过程中各类曰益 增长的业务需求,造成极大的沟通成本及经济成本。
在园区信息化 建设过程中存在业务系统建设不规范、安全意识不足、大量重复性 功能建设、缺乏相互间参考模型、用户权限分配管理逻辑混乱、缺 乏配置管理等问题m。
与此同时,由于应用垂直化建设造成的“数 据烟囱”、“信息孤岛”、“场景不联动”等问题也日益突出[21。
园区智能运营管理平台(Intelligent Operations Center,简称 IOC平台)由此应运而生,其综合集成物联网(IOT)、大数据(Big Data)、地理信息系统(GIS)、建筑信息模型(BIM)、人工智 能(A丨)等技术手段[21,通过对园区信息化各业务系统进行海量数 据整合、多维数据展示、关注点提取,形成信息化专业系统的集成应用,实现信息技术在园区智能运营管理中的时间、空间全覆盖、各业务领域全覆盖、产业链周期全覆盖,最终实现园区管理的管理 信息化、运营智能化、统筹一体化、建设标准化。
搭建数据中台实习报告本文介绍完善的大数据中台架构了解这些架构里每个部分的位置,功能和含义及背后原理及应用场景。
帮助技术与产品经理对大数据技术体系有个全面的了解。
数据中台定义:集成离线数仓与实时数仓,并以多数据源统一整合采集到kafka,再通过kafka进行离线数据仓库及实时数据仓库,并集用户标签,统一数据资产管理(对数据资产目录、元数据、数据质量、数据血缘、数据生命周期等进行管理和展示,以一种更直观的方式展现企业的数据资产,提升企业的数据意识)提供给客户以及上层领导进行数据分析、数据运营等功能。
整个数据流程分为五个环节从数据采集-->数据传输-->数据存储-->数据计算及查询-->数据可视化及分析。
1、数据采集根据平台产生的日志,将数据采集后写入到HDFS,HBase,Hive ,提供后续计算流程进行消费使用。
数据来源有网络的Python爬虫数据、java后台日志数据、还有各种 API 接口及数据文件等等,汇聚到服务器本地磁盘。
针对不同的数据来源有各自的采集方式,其中因为日志数据有数据量多,数据结构多样,产生环境复杂等特点,属于主要采集的对象。
日志采集框架挑应用较广泛的有 Flume,Logstash进行数据采集。
FlumeFlume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。
Flume基于流式架构,灵活简单。
主要特点:可靠性当节点出现故障时,日志能够被传送到其他节点上而不会丢失。
可扩展性Flume采用了三层架构,分别为agent,collector和storage,每一层均可以水平扩展。
其中,所有agent和collector 由master统一管理,这使得系统容易监控和维护,且master允许有多个(使用ZooKeeper进行管理和负载均衡),这就避免了单点故障问题。
可管理性(1)所有agent和colletor由master统一管理,这使得系统便于维护。
模型驱动方法论在业务中台中的实践研究(二)作者:李忠民何鑫来源:《现代信息科技》2020年第18期摘要:模型驱动架构是一个抽象的理论框架,要使其真正落地实践,必须结合项目实际构建一个可行的模型序列,并给出一套模型转换规则。
在某大型央企的业务中台项目对该模型序列进行了研究,并总结出一套模型转换规则,即业务过程模型(业务流程模型、业务用例模型)、业务对象模型、领域模型、组件模型、数据模型(概念模型、逻辑模型、物理模型)的组成的模型序列。
关键词:模型驱动架构;业务过程建模;用例模型;领域模型;组件模型;模型转换中图分类号:TP311.52 文献标识码:A 文章编号:2096-4706(2020)18-0104-04Abstract:Model driven architecture is an abstract theoretical framework. To make it truly practical,it is necessary to construct a feasible model sequence based on the actual project and give a set of model conversion rules. This paper studies the model sequence in the financial middle office project of a large central enterprise,and summarizes a set of model transformation rules,that is,the business process model(business process model,business use case model),business object model,domain model,component model and data model(conceptual model,logical model,physical model).Keywords:model driven architecture;business process modeling;use case model;domain model;component model;model transformation0 引言模型驱动架构(MDA)方法论对系统分析和设计领域进行了概括和抽象,该方法论实现了业务需求的结构化描述;它可以确保设计反映业务,确保设计意图贯彻到实现中去,做到分析设计过程中业务信息和设计信息全继承、可追溯、不失真,从而让客户更有可能获得他们真正需要的系统。
中台化背景下的元数据驱动架构实践一、背景介绍为解决系统重复建设、能力复用性低的问题,携程启动了中台化建设步伐。
旅游行业的中台建设,携程并非从零开始,前期已经积累了行业中多个场景的业务和技术的中台能力。
因系统建设的复杂,亟需一个中台大脑站在全局视角进行公司中台能力的梳理和建设。
Tripyun-携程云是中台团队打造的产品中台,采用独特的”电商开店“方式,鼓励各业务线发布具备中台能力的产品,管理产品的整个生命周期,包括产品的创建、展示、开通服务、产品需求、产品联通和度量,以此来吸引其他团队下单采用,并通过需求结构化、能力优化不断打磨各团队产品的中台能力。
Tripyun-携程云最终将以全局视角,通过能力地图将旅游行业里的中台能力都呈现出来。
为满足各团队在平台上对产品进行管理和“开店”的需求,我们为平台搭建了底层类目属性管理能力和SPU管理能力服务,满足了旅游行业特色的多样化中台产品和能力的发布需求。
本文以此中台能力的建设作为实操,详解我们探索中的中台建设的思路,重点介绍搭建类目属性和SPU中台能力过程中的技术实践,读者将了解到:1)如何提升一个产品的中台能力;2)以一个具体案例了解什么是元数据驱动和其架构实践;3)Tripyun-携程云类目属性和SPU管理能力,可考虑使用我们的能力,共建行业类目属性库。
二、什么是元数据元数据,是指一种结构化的信息,用于对某项信息资源进行描述、解释、定位,使其易于提取和使用。
我们先看下在电商应用中商品领域中的元数据定义:2.1 名词解释(1)SPU:Standard Product Unit (标准产品单位),是用来聚合描述一种商品信息的单元。
基于SPU的商品信息结构,可以实现丰富的应用,比如商品信息与资讯、评论、以及其它SPU的整合起来,就可以基于同一模型来满足多种场景的业务。
我们借鉴了电商中对于SPU的应用,即通过SPU的“类目属性”来描述Tripyun-携程云上的一切业务数据,包括系统上的产品、团队、订单信息、能力信息等数据,都作为SPU 进行整合,进行了业务数据模型的统一。
中台架构落地与演进方案随着数字化转型的不断深入,各个行业和企业都面临着系统和架构的优化升级的需要。
在这个背景下,中台架构逐渐成为了新时代企业数字化转型的必经之路。
但是,中台架构的落地和演进方案却依然是一个备受关注的问题。
本文将以此为主题,从多个维度阐述中台架构的落地和演进方案。
1. 架构设计中台架构的落地需要首先进行架构设计,该设计需要从业务的需要和实际的技术状况出发,决定中台架构的方向和架构逻辑。
在该设计过程中,需要考虑到中台架构的业务逻辑,数据模型设计,接口设计以及协议和安全性等一系列问题。
这个过程需要多方面的人员协作,包括业务和技术领域的专家。
2. 技术选型技术选型在中台架构中也是至关重要的一个方面。
在技术选型过程中,需要考虑到当前系统所使用的技术,并在此基础上选择合适的中间件和技术组合。
在这个过程中,需要考虑到可靠性、安全性、兼容性等一系列问题。
同时,评估所选技术对于业务需求的支持能力也是一个关键因素。
3. 技术实现很多企业为了实现中台架构,纷纷采用了SOA、微服务等技术手段。
在技术实现过程中,需要充分考虑到架构设计和技术选型方案,针对具体的业务需求进行实践。
同时,在实践的过程中需要不断地反馈和修正,使得中台架构的实现和演进更加符合业务的需求。
4. 组织架构设计实现中台架构需要从组织方面进行改变。
首先,需要组建中台团队来管理和维护中台架构系统。
这个团队需要拥有丰富的企业架构设计经验和技术实践经验,同时需要和企业的各个部门充分沟通合作,使得中台架构的实现更加顺利。
此外,需要根据业务发展的需要来不断扩大中台团队规模。
综合以上几个方面,可以看出,中台架构的落地和演进需要多种因素的协同作用,包括架构设计、技术选型、技术实现和组织架构设计等。
在实践中,中台架构的落地过程需要不断地反馈和修正,使得中台架构系统更加符合实际的需求,并为企业的数字化转型提供更加稳定和高效的支撑。
中台化背景下的元数据驱动架构实践一、背景介绍为解决系统重复建设、能力复用性低的问题,携程启动了中台化建设步伐。
旅游行业的中台建设,携程并非从零开始,前期已经积累了行业中多个场景的业务和技术的中台能力。
因系统建设的复杂,亟需一个中台大脑站在全局视角进行公司中台能力的梳理和建设。
Tripyun-携程云是中台团队打造的产品中台,采用独特的”电商开店“方式,鼓励各业务线发布具备中台能力的产品,管理产品的整个生命周期,包括产品的创建、展示、开通服务、产品需求、产品联通和度量,以此来吸引其他团队下单采用,并通过需求结构化、能力优化不断打磨各团队产品的中台能力。
Tripyun-携程云最终将以全局视角,通过能力地图将旅游行业里的中台能力都呈现出来。
为满足各团队在平台上对产品进行管理和“开店”的需求,我们为平台搭建了底层类目属性管理能力和SPU管理能力服务,满足了旅游行业特色的多样化中台产品和能力的发布需求。
本文以此中台能力的建设作为实操,详解我们探索中的中台建设的思路,重点介绍搭建类目属性和SPU中台能力过程中的技术实践,读者将了解到:1)如何提升一个产品的中台能力;2)以一个具体案例了解什么是元数据驱动和其架构实践;3)Tripyun-携程云类目属性和SPU管理能力,可考虑使用我们的能力,共建行业类目属性库。
二、什么是元数据元数据,是指一种结构化的信息,用于对某项信息资源进行描述、解释、定位,使其易于提取和使用。
我们先看下在电商应用中商品领域中的元数据定义:2.1 名词解释(1)SPU:Standard Product Unit (标准产品单位),是用来聚合描述一种商品信息的单元。
基于SPU的商品信息结构,可以实现丰富的应用,比如商品信息与资讯、评论、以及其它SPU的整合起来,就可以基于同一模型来满足多种场景的业务。
我们借鉴了电商中对于SPU的应用,即通过SPU的“类目属性”来描述Tripyun-携程云上的一切业务数据,包括系统上的产品、团队、订单信息、能力信息等数据,都作为SPU 进行整合,进行了业务数据模型的统一。
(2)类目,也就是分类,分类是为了更好的管理商品(商品管理的核心就是分类)。
在Tripyun-携程云中,我们通过类目来分类产品、订单、能力、团队的类型。
比如在产品上,通过类目把携程的基本产品做了基本分类,以满足不同类型的产品区分管理。
类目的设计主要从两个维度考虑,除了后台类目,还有前台类目,即给前端用户看的类目。
电商应用在针对用户的展示或者营销过程中,往往会给商品划分一个只用于前端展示的类目,该类目可能由于运营的需要而进行调整。
Tripyun-携程云平台也具有前台类目。
(3)类目属性,就是某个商品的特性,属性值即属性的具体内容。
对于电商来说,属性主要是商品的品牌、尺寸、大小、颜色等,对于品牌属性而言,其属性值可以为阿迪达斯、耐克、马自达等等。
类目是为了分类商品,而属性是为了描述商品。
在Tripyun-携程云平台中,我们定义了一个”广义数据模型“的概念,把产品、订单、能力、团队等业务的模板都使用属性来定义。
比如,把产品的中台能力定义为一个特殊的类目,而用户应该怎样描述自己的能力,则提供统一的属性定义页面,来允许用户定义复杂结构的属性集。
(4)SKU,大家都知道电商行业中的SKU(Stock Keeping Unit)是指库存量单位,即库存进出计量的单位,可以是以件、盒、托盘等为单位。
SKU是物理上不可分割的最小存货单元,而在Tripyun-携程云中,因为我们卖的不是货,而是中台能力,所以可以理解为我们让大家在平台上录入的能力即为SKU(可以直接”卖“给产品采用方的最小单元,可以是小到一个工具、一个框架、一个接口,或一组服务组成的应用,也可以大到一个产品线)。
对中台产品而言,能力除了可以作为SKU,还多了一层额外的意义——能力是中台产品可以被(个性化)复用的体现,由产品开放出来的互相解耦的能力选项而构成。
2.2 Tripyun-携程云中的元数据为保证Tripyun-携程云上产品数据结构足够灵活,我们夯实了类目属性的底层数据结构,支持多种不限于K-V结构(包括表格、级联等复杂表单数据存储结构)的数据存储、查询、校验等需求。
这样的数据管理能力也可以支撑除了产品外很多其他领域的数据模型,目前这套能力已经为Tripyun-携程云平台提供团队管理、产品管理、能力(SKU)管理、服务单/调用单管理等多个业务场景的数据模型定义、动态表单生成、动态规则校验和动态业务数据的存储/查询了,实际上已经成为Tripyun-携程云平台所有模块的业务数据模型——支持通过不同的规则定义和流程扩展,来做不同场景下的个性化定制。
我们把这种描述业务数据的数据,统称为元数据。
如上面提到的,元数据除了包含数据模型定义,还包含了业务规则定义、业务流程定义、业务配置(标)定义和面向前端的组件数据定义。
三、我们的实践3.1 可自定义的产品结构和能力发布结构、满足全球化背景下可复用的数据多语言——数据模型3.1.1.解决方案我们认为业务中台化的一个重要措施是进行业务模型的抽象,将模型抽象为可统一表达的元数据模型,将非常有利于行业数据的标准化管理,进一步缩短基础数据管理的成本,而基础数据模型的统一也将为后续规则的统一和业务流程的标准化提供了可能性。
在搭建Tripyun-携程云平台的时候,我们将原本业务上很多互不相干的数据管理,如团队、产品、能力、服务单等模块的信息类数据抽象成了统一的模板元数据。
而将随着业务不断变化的属性数据,如状态、活动标签、业务标记等使用业务配置(可以认为是动态的扩展字段,下一节介绍)的方式进行解耦和动态管理。
3.1.2.数据模型统一的困难电商应用中的SPU属性,因商品本身普适性强,以及买方一般具备对商品一定的基本认知,可能K-V类型的存储结构满足大多数的应用场景,结构上并不复杂。
但是Tripyun-携程云的业务范围是描述“软件产品服务”类商品,且更多的是与具体业务相关的服务,软件类“商品”本身确实比一般性商品更加“复杂”,且用户在浏览Tripyun-携程云平台上发布的软件产品时,也没有普适性认知,所以我们需要足够灵活、方便的,不只是k-v结构的展示方式,所以仅仅K-V类型的存储结构并不满足我们的需求。
如在中台概念中,我们一般会把前端应用按照“端”、“场景”属性进行分类,以端为例,我们可能需要三级级联的属性和属性值来组成“端”属性,三级级联属性分别为:第一级:online/offline,用于描述是外网应用还是内网应用;第二级:web/app/H5,用于描述前端应用触达用户的方式;第三级,则是按照行业业务归属进行的端的定义。
此类需求的难点在于,三级属性互相影响、互相依赖,如online和offline,以及不同的端类型,其对应的第三级属性的属性值,是完全不同的。
又如卖方在产品定义时,为了方便开发角色的用户在浏览产品时对接口等技术指标进行评估,可能需要对系统接口或者整体系统指标进行说明,需要一个表格类型的控件。
就这样一个简单的表格需求,对于我们类目属性的这套产品结构复杂度构成了指数级的挑战,这需要我们进行属性的层层嵌套,并且对前端页面更为友好的方式,将嵌套数据输出给前端页面。
除了结构的复杂度,我们还面临复杂结构下带来的性能、数据安全性等的挑战:(1)基于类目属性的产品结构中,因为产品属性并不是简单关系型数据库的行列,而是倒树形非关系型的结构以行列方式存储。
这对我们的查询性能造成了较大挑战。
在互联网应用对性能极致的追求下,网络连接是最“宝贵”的资源,我们需要尽可能节约前端请求数量,不可能用户每次点击属性都实时进行子属性和属性值的拉取。
所以在这种场景下,需要服务端能够一次输出该产品类目定义的所有属性和枚举的属性值、以及产品对应的属性值。
因产品属性的级联嵌套复杂度,其输出性能将会随着产品属性嵌套复杂度的提升而升高。
(2)类目、属性、规则等“描述数据的数据”(文中统一称为“元数据”),与应用运行过程中产生的产品等数据不同,元数据(如属性和规则等修改)的修改,将会影响到大批量下游数据的变更。
如果是因为人为或者程序的误操作导致元数据的错误变化,将会产生不可估量的业务后果。
3.1.3.模型元数据的技术方案为解决上述问题(1)的挑战,我们使用mysql作为存储数据库,底层数据结构:抽离一套类目属性表和类目属性值表,类目属性表描述属性的父子关系,而类目属性值表描述属性值的父子关系,即存储属性和属性值的两棵树。
再通过数据加工,组成一套产品属性模版数据和属性值关系数据。
如上面提到的“端”这个属性的例子,我们可以构造给前端应用这样一颗树及模版:树Template类在关系型数据库存储树形结构的问题,其实业界已经有一些可以参考的方法论,一般比较普遍的就是四种方法:(具体见《SQL Anti-patterns》这本书)•Adjacency List:每一条记录存parent_id•Path Enumerations:每一条记录存整个tree path经过的node枚举•Nested Sets:每一条记录存 nleft 和 nright•Closure Table:维护一个表,所有的tree path作为记录进行保存书中介绍的各种方法的常用操作代价见下图:我们的场景中,对于全树查询、插入、删除有较强的需求,根据以上表格的结论看起来Closure Table方案更好一点。
但其实需要考虑到:Closure Table需要额外维护一套全路径表,而存储路径本身就是一个不可预知的大字段。
考虑到未来的接入类目属性和SPU管理能力的数据量级、对db的读写压力以及分库分表等db的需求,我们最终选择的一个对mysql比较轻量的Adjacency List方案,为弥补此方案对全树查询的短板,做了以下两个措施:一是构建SPU树的模版,将类目属性和类目属性值相互独立,之间通过属性编码进行关联,同时构建出两条树形结构:类目属性和类目属性值。
类目属性绑定到模版,这样可以直接输出给前端应用使用,类目属性值则直接输出每一层级的数据,保证每次查询都是非常简单sql查询。
二是通过消息通知机制,尽及时做到若mysql的这两棵树有任何变更,将都能及时都获知并且更新模版及类目属性值。
上面的解决方案,解决了每个类目属性树的存储和查询的问题,我们称为类目属性模板。
模板的缓存为最终SPU树的输出性能提供了一部分保障,为了进一步解决性能问题和模板数据安全的问题,我们设计了以下方案:(1)为保证类目属性元数据模板的安全性,除按照上面陈述的存储和查询方案,我们多加了一层模板数据临时区(预览区)和正式区(运行区)的区分。
类目属性控制台可以实时修改类目的属性、属性值和规则,但是数据会保存在临时区。